miscregs.cc revision 10604
17259Sgblack@eecs.umich.edu/*
212669Schuan.zhu@arm.com * Copyright (c) 2010-2013 ARM Limited
37259Sgblack@eecs.umich.edu * All rights reserved
47259Sgblack@eecs.umich.edu *
57259Sgblack@eecs.umich.edu * The license below extends only to copyright in the software and shall
67259Sgblack@eecs.umich.edu * not be construed as granting a license to any other intellectual
77259Sgblack@eecs.umich.edu * property including but not limited to intellectual property relating
87259Sgblack@eecs.umich.edu * to a hardware implementation of the functionality of the software
97259Sgblack@eecs.umich.edu * licensed hereunder.  You may use the software subject to the license
107259Sgblack@eecs.umich.edu * terms below provided that you ensure that this notice is replicated
117259Sgblack@eecs.umich.edu * unmodified and in its entirety in all distributions of the software,
127259Sgblack@eecs.umich.edu * modified or unmodified, in source code or in binary form.
137259Sgblack@eecs.umich.edu *
147259Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without
157259Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are
167259Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright
177259Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer;
187259Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright
197259Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the
207259Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution;
217259Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its
227259Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from
237259Sgblack@eecs.umich.edu * this software without specific prior written permission.
247259Sgblack@eecs.umich.edu *
257259Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
267259Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
277259Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
287259Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
297259Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
307259Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
317259Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
327259Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
337259Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
347259Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
357259Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
367259Sgblack@eecs.umich.edu *
377259Sgblack@eecs.umich.edu * Authors: Gabe Black
387405SAli.Saidi@ARM.com *          Ali Saidi
3910037SARM gem5 Developers *          Giacomo Gabrielli
407259Sgblack@eecs.umich.edu */
417259Sgblack@eecs.umich.edu
4211793Sbrandon.potter@amd.com#include "arch/arm/isa.hh"
4311793Sbrandon.potter@amd.com#include "arch/arm/miscregs.hh"
4411939Snikos.nikoleris@arm.com#include "base/misc.hh"
4511939Snikos.nikoleris@arm.com#include "cpu/thread_context.hh"
467405SAli.Saidi@ARM.com
4712334Sgabeblack@google.comnamespace ArmISA
4810037SARM gem5 Developers{
4910828SGiacomo.Gabrielli@arm.com
507259Sgblack@eecs.umich.eduMiscRegIndex
517259Sgblack@eecs.umich.edudecodeCP14Reg(unsigned crn, unsigned opc1, unsigned crm, unsigned opc2)
527259Sgblack@eecs.umich.edu{
537259Sgblack@eecs.umich.edu    switch(crn) {
547259Sgblack@eecs.umich.edu      case 0:
558868SMatt.Horsnell@arm.com        switch (opc1) {
568868SMatt.Horsnell@arm.com          case 0:
578868SMatt.Horsnell@arm.com            switch (opc2) {
588868SMatt.Horsnell@arm.com              case 0:
5910037SARM gem5 Developers                switch (crm) {
608868SMatt.Horsnell@arm.com                  case 0:
6110037SARM gem5 Developers                    return MISCREG_DBGDIDR;
628868SMatt.Horsnell@arm.com                  case 1:
6310037SARM gem5 Developers                    return MISCREG_DBGDSCRint;
6410037SARM gem5 Developers                }
6510037SARM gem5 Developers                break;
6610037SARM gem5 Developers            }
6710037SARM gem5 Developers            break;
6810037SARM gem5 Developers          case 7:
6910037SARM gem5 Developers            switch (opc2) {
708868SMatt.Horsnell@arm.com              case 0:
7110037SARM gem5 Developers                switch (crm) {
7210037SARM gem5 Developers                  case 0:
7310037SARM gem5 Developers                    return MISCREG_JIDR;
7410037SARM gem5 Developers                }
7510037SARM gem5 Developers              break;
7610037SARM gem5 Developers            }
7710037SARM gem5 Developers            break;
7810037SARM gem5 Developers        }
7910037SARM gem5 Developers        break;
8010037SARM gem5 Developers      case 1:
8110037SARM gem5 Developers        switch (opc1) {
829959Schander.sudanthi@arm.com          case 6:
8310037SARM gem5 Developers            switch (crm) {
849959Schander.sudanthi@arm.com              case 0:
859959Schander.sudanthi@arm.com                switch (opc2) {
869959Schander.sudanthi@arm.com                  case 0:
879959Schander.sudanthi@arm.com                    return MISCREG_TEEHBR;
889959Schander.sudanthi@arm.com                }
899959Schander.sudanthi@arm.com                break;
909959Schander.sudanthi@arm.com            }
919959Schander.sudanthi@arm.com            break;
929959Schander.sudanthi@arm.com          case 7:
9310037SARM gem5 Developers            switch (crm) {
949959Schander.sudanthi@arm.com              case 0:
9510037SARM gem5 Developers                switch (opc2) {
9610037SARM gem5 Developers                  case 0:
9710037SARM gem5 Developers                    return MISCREG_JOSCR;
9810037SARM gem5 Developers                }
9910037SARM gem5 Developers                break;
10010037SARM gem5 Developers            }
10110037SARM gem5 Developers            break;
10210037SARM gem5 Developers        }
10310037SARM gem5 Developers        break;
10410037SARM gem5 Developers      case 2:
10510037SARM gem5 Developers        switch (opc1) {
1068868SMatt.Horsnell@arm.com          case 7:
10710037SARM gem5 Developers            switch (crm) {
10810037SARM gem5 Developers              case 0:
10910037SARM gem5 Developers                switch (opc2) {
11010037SARM gem5 Developers                  case 0:
11110037SARM gem5 Developers                    return MISCREG_JMCR;
11210037SARM gem5 Developers                }
11310037SARM gem5 Developers                break;
11410037SARM gem5 Developers            }
11510037SARM gem5 Developers            break;
11610037SARM gem5 Developers        }
11710037SARM gem5 Developers        break;
11810037SARM gem5 Developers    }
11910037SARM gem5 Developers    // If we get here then it must be a register that we haven't implemented
12010037SARM gem5 Developers    warn("CP14 unimplemented crn[%d], opc1[%d], crm[%d], opc2[%d]",
12110037SARM gem5 Developers         crn, opc1, crm, opc2);
1228868SMatt.Horsnell@arm.com    return MISCREG_CP14_UNIMPL;
12310037SARM gem5 Developers}
12410037SARM gem5 Developers
12510037SARM gem5 Developersusing namespace std;
12610037SARM gem5 Developers
12710037SARM gem5 Developersbitset<NUM_MISCREG_INFOS> miscRegInfo[NUM_MISCREGS] = {
1288868SMatt.Horsnell@arm.com    // MISCREG_CPSR
12910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
13010037SARM gem5 Developers    // MISCREG_SPSR
1318868SMatt.Horsnell@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1327259Sgblack@eecs.umich.edu    // MISCREG_SPSR_FIQ
1337259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1347259Sgblack@eecs.umich.edu    // MISCREG_SPSR_IRQ
1357259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1367259Sgblack@eecs.umich.edu    // MISCREG_SPSR_SVC
1377259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1387259Sgblack@eecs.umich.edu    // MISCREG_SPSR_MON
1397259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1407259Sgblack@eecs.umich.edu    // MISCREG_SPSR_ABT
1417259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1427259Sgblack@eecs.umich.edu    // MISCREG_SPSR_HYP
1437259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1447259Sgblack@eecs.umich.edu    // MISCREG_SPSR_UND
1457351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1467351Sgblack@eecs.umich.edu    // MISCREG_ELR_HYP
1477259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1487259Sgblack@eecs.umich.edu    // MISCREG_FPSID
14910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
15010037SARM gem5 Developers    // MISCREG_FPSCR
1517259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1527259Sgblack@eecs.umich.edu    // MISCREG_MVFR1
1537259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1547259Sgblack@eecs.umich.edu    // MISCREG_MVFR0
1557259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1567259Sgblack@eecs.umich.edu    // MISCREG_FPEXC
1577259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1587259Sgblack@eecs.umich.edu
1597259Sgblack@eecs.umich.edu    // Helper registers
1607259Sgblack@eecs.umich.edu    // MISCREG_CPSR_MODE
1617259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1627259Sgblack@eecs.umich.edu    // MISCREG_CPSR_Q
1637259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1647259Sgblack@eecs.umich.edu    // MISCREG_FPSCR_Q
1657259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1667259Sgblack@eecs.umich.edu    // MISCREG_FPSCR_EXC
1677259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1687259Sgblack@eecs.umich.edu    // MISCREG_LOCKADDR
1697259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1707259Sgblack@eecs.umich.edu    // MISCREG_LOCKFLAG
1717259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1727259Sgblack@eecs.umich.edu    // MISCREG_PRRR_MAIR0
1737259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000011001")),
1747259Sgblack@eecs.umich.edu    // MISCREG_PRRR_MAIR0_NS
1757259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
1767259Sgblack@eecs.umich.edu    // MISCREG_PRRR_MAIR0_S
1777259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
1787259Sgblack@eecs.umich.edu    // MISCREG_NMRR_MAIR1
1797259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000011001")),
1807259Sgblack@eecs.umich.edu    // MISCREG_NMRR_MAIR1_NS
1817259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
1827259Sgblack@eecs.umich.edu    // MISCREG_NMRR_MAIR1_S
1837259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
1847259Sgblack@eecs.umich.edu    // MISCREG_PMXEVTYPER_PMCCFILTR
1857259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000001001")),
1867259Sgblack@eecs.umich.edu    // MISCREG_SCTLR_RST
1877259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1887259Sgblack@eecs.umich.edu    // MISCREG_SEV_MAILBOX
1897259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1907259Sgblack@eecs.umich.edu
1917259Sgblack@eecs.umich.edu    // AArch32 CP14 registers
1927259Sgblack@eecs.umich.edu    // MISCREG_DBGDIDR
1937259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
1947259Sgblack@eecs.umich.edu    // MISCREG_DBGDSCRint
1957259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
1967259Sgblack@eecs.umich.edu    // MISCREG_DBGDCCINT
1977259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
1987259Sgblack@eecs.umich.edu    // MISCREG_DBGDTRTXint
1997259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2007259Sgblack@eecs.umich.edu    // MISCREG_DBGDTRRXint
2017259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2027259Sgblack@eecs.umich.edu    // MISCREG_DBGWFAR
2037259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2047259Sgblack@eecs.umich.edu    // MISCREG_DBGVCR
2057259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2067259Sgblack@eecs.umich.edu    // MISCREG_DBGDTRRXext
2077259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2087259Sgblack@eecs.umich.edu    // MISCREG_DBGDSCRext
2097259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000100")),
2107259Sgblack@eecs.umich.edu    // MISCREG_DBGDTRTXext
2117259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2127259Sgblack@eecs.umich.edu    // MISCREG_DBGOSECCR
2137259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2147259Sgblack@eecs.umich.edu    // MISCREG_DBGBVR0
21510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
21610037SARM gem5 Developers    // MISCREG_DBGBVR1
21710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
21810037SARM gem5 Developers    // MISCREG_DBGBVR2
21910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
22010037SARM gem5 Developers    // MISCREG_DBGBVR3
22110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
22210037SARM gem5 Developers    // MISCREG_DBGBVR4
2237259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2247259Sgblack@eecs.umich.edu    // MISCREG_DBGBVR5
2257259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2267351Sgblack@eecs.umich.edu    // MISCREG_DBGBCR0
2277351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2287351Sgblack@eecs.umich.edu    // MISCREG_DBGBCR1
2297351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2307351Sgblack@eecs.umich.edu    // MISCREG_DBGBCR2
2317351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2327351Sgblack@eecs.umich.edu    // MISCREG_DBGBCR3
2337351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2347351Sgblack@eecs.umich.edu    // MISCREG_DBGBCR4
2357351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2367351Sgblack@eecs.umich.edu    // MISCREG_DBGBCR5
2377351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2387351Sgblack@eecs.umich.edu    // MISCREG_DBGWVR0
2397351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2407351Sgblack@eecs.umich.edu    // MISCREG_DBGWVR1
2417351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2427351Sgblack@eecs.umich.edu    // MISCREG_DBGWVR2
2437351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2447351Sgblack@eecs.umich.edu    // MISCREG_DBGWVR3
2457351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
24610037SARM gem5 Developers    // MISCREG_DBGWCR0
24710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
24810037SARM gem5 Developers    // MISCREG_DBGWCR1
24910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
25010037SARM gem5 Developers    // MISCREG_DBGWCR2
25110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
25210037SARM gem5 Developers    // MISCREG_DBGWCR3
25310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
25410037SARM gem5 Developers    // MISCREG_DBGDRAR
25510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
25610037SARM gem5 Developers    // MISCREG_DBGBXVR4
25710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
25810037SARM gem5 Developers    // MISCREG_DBGBXVR5
25910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
26010037SARM gem5 Developers    // MISCREG_DBGOSLAR
26110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101111111111000000")),
26210037SARM gem5 Developers    // MISCREG_DBGOSLSR
26310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
26410037SARM gem5 Developers    // MISCREG_DBGOSDLR
26510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2667351Sgblack@eecs.umich.edu    // MISCREG_DBGPRCR
2677351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2687351Sgblack@eecs.umich.edu    // MISCREG_DBGDSAR
2697406SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
2707259Sgblack@eecs.umich.edu    // MISCREG_DBGCLAIMSET
2717259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2727351Sgblack@eecs.umich.edu    // MISCREG_DBGCLAIMCLR
2737259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2747351Sgblack@eecs.umich.edu    // MISCREG_DBGAUTHSTATUS
2757351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
2767351Sgblack@eecs.umich.edu    // MISCREG_DBGDEVID2
2777259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
27810037SARM gem5 Developers    // MISCREG_DBGDEVID1
27910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
28010037SARM gem5 Developers    // MISCREG_DBGDEVID0
28110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
28210037SARM gem5 Developers    // MISCREG_TEECR
2837259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
2847259Sgblack@eecs.umich.edu    // MISCREG_JIDR
2857351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
2867351Sgblack@eecs.umich.edu    // MISCREG_TEEHBR
2877351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
2887351Sgblack@eecs.umich.edu    // MISCREG_JOSCR
2897351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
2907259Sgblack@eecs.umich.edu    // MISCREG_JMCR
2917259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
2927259Sgblack@eecs.umich.edu
2937259Sgblack@eecs.umich.edu    // AArch32 CP15 registers
2947259Sgblack@eecs.umich.edu    // MISCREG_MIDR
2957259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
2967259Sgblack@eecs.umich.edu    // MISCREG_CTR
2977259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
2987259Sgblack@eecs.umich.edu    // MISCREG_TCMTR
2997259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
3007259Sgblack@eecs.umich.edu    // MISCREG_TLBTR
3017259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
3027259Sgblack@eecs.umich.edu    // MISCREG_MPIDR
3037259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
3047259Sgblack@eecs.umich.edu    // MISCREG_REVIDR
30510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000100")),
30610037SARM gem5 Developers    // MISCREG_ID_PFR0
30710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
30810037SARM gem5 Developers    // MISCREG_ID_PFR1
30910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
31010037SARM gem5 Developers    // MISCREG_ID_DFR0
31110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
31210037SARM gem5 Developers    // MISCREG_ID_AFR0
31310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
3147259Sgblack@eecs.umich.edu    // MISCREG_ID_MMFR0
3157259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
3167259Sgblack@eecs.umich.edu    // MISCREG_ID_MMFR1
3177351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
3187351Sgblack@eecs.umich.edu    // MISCREG_ID_MMFR2
3197259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
3207351Sgblack@eecs.umich.edu    // MISCREG_ID_MMFR3
3217259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
3227351Sgblack@eecs.umich.edu    // MISCREG_ID_ISAR0
3237259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
32410037SARM gem5 Developers    // MISCREG_ID_ISAR1
32510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
32610037SARM gem5 Developers    // MISCREG_ID_ISAR2
32710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
32810037SARM gem5 Developers    // MISCREG_ID_ISAR3
32910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
33010037SARM gem5 Developers    // MISCREG_ID_ISAR4
33110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
33210037SARM gem5 Developers    // MISCREG_ID_ISAR5
3337259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
3347259Sgblack@eecs.umich.edu    // MISCREG_CCSIDR
3357259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
3367259Sgblack@eecs.umich.edu    // MISCREG_CLIDR
3377259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
3387259Sgblack@eecs.umich.edu    // MISCREG_AIDR
3397259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
3407259Sgblack@eecs.umich.edu    // MISCREG_CSSELR
3417259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
3427259Sgblack@eecs.umich.edu    // MISCREG_CSSELR_NS
3437259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
3447259Sgblack@eecs.umich.edu    // MISCREG_CSSELR_S
3457259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
3467259Sgblack@eecs.umich.edu    // MISCREG_VPIDR
3477259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
3487259Sgblack@eecs.umich.edu    // MISCREG_VMPIDR
3497259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
3507259Sgblack@eecs.umich.edu    // MISCREG_SCTLR
3517351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
3527351Sgblack@eecs.umich.edu    // MISCREG_SCTLR_NS
3537351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
3547351Sgblack@eecs.umich.edu    // MISCREG_SCTLR_S
3557351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
3567259Sgblack@eecs.umich.edu    // MISCREG_ACTLR
3577259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
3587259Sgblack@eecs.umich.edu    // MISCREG_ACTLR_NS
3597259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
3607259Sgblack@eecs.umich.edu    // MISCREG_ACTLR_S
3617259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
3627259Sgblack@eecs.umich.edu    // MISCREG_CPACR
3637259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
3647259Sgblack@eecs.umich.edu    // MISCREG_SCR
3657259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11110011000000000001")),
3667259Sgblack@eecs.umich.edu    // MISCREG_SDER
3677259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
3687259Sgblack@eecs.umich.edu    // MISCREG_NSACR
3697259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11110111010000000001")),
3707259Sgblack@eecs.umich.edu    // MISCREG_HSCTLR
3717259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
3727259Sgblack@eecs.umich.edu    // MISCREG_HACTLR
3737259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
3747259Sgblack@eecs.umich.edu    // MISCREG_HCR
3757259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
3767259Sgblack@eecs.umich.edu    // MISCREG_HDCR
3777351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
3787351Sgblack@eecs.umich.edu    // MISCREG_HCPTR
3797351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
38010037SARM gem5 Developers    // MISCREG_HSTR
3817351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
38210037SARM gem5 Developers    // MISCREG_HACR
3837351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000100")),
38410037SARM gem5 Developers    // MISCREG_TTBR0
3857351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
38610037SARM gem5 Developers    // MISCREG_TTBR0_NS
3877351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
38810037SARM gem5 Developers    // MISCREG_TTBR0_S
3897351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
39010037SARM gem5 Developers    // MISCREG_TTBR1
3917351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
39210037SARM gem5 Developers    // MISCREG_TTBR1_NS
3937351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
39410037SARM gem5 Developers    // MISCREG_TTBR1_S
3957351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
3967351Sgblack@eecs.umich.edu    // MISCREG_TTBCR
3977259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
3987259Sgblack@eecs.umich.edu    // MISCREG_TTBCR_NS
3997259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
4007259Sgblack@eecs.umich.edu    // MISCREG_TTBCR_S
4017259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
40210037SARM gem5 Developers    // MISCREG_HTCR
4037259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
4047259Sgblack@eecs.umich.edu    // MISCREG_VTCR
4057259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
4067259Sgblack@eecs.umich.edu    // MISCREG_DACR
4077259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
4087259Sgblack@eecs.umich.edu    // MISCREG_DACR_NS
4097259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
4107259Sgblack@eecs.umich.edu    // MISCREG_DACR_S
4117259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
4127259Sgblack@eecs.umich.edu    // MISCREG_DFSR
4137259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
4147259Sgblack@eecs.umich.edu    // MISCREG_DFSR_NS
4157259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
4167259Sgblack@eecs.umich.edu    // MISCREG_DFSR_S
4177259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
4187259Sgblack@eecs.umich.edu    // MISCREG_IFSR
4197259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
4207259Sgblack@eecs.umich.edu    // MISCREG_IFSR_NS
4217259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
4227259Sgblack@eecs.umich.edu    // MISCREG_IFSR_S
4237259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
4247259Sgblack@eecs.umich.edu    // MISCREG_ADFSR
4257259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010100")),
4267259Sgblack@eecs.umich.edu    // MISCREG_ADFSR_NS
42710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11001100110000100100")),
42810037SARM gem5 Developers    // MISCREG_ADFSR_S
42910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00110011000000100100")),
43010037SARM gem5 Developers    // MISCREG_AIFSR
43110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00000000000000010100")),
4327259Sgblack@eecs.umich.edu    // MISCREG_AIFSR_NS
4337259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100100")),
4347351Sgblack@eecs.umich.edu    // MISCREG_AIFSR_S
4357351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100100")),
4367351Sgblack@eecs.umich.edu    // MISCREG_HADFSR
4377351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
4387351Sgblack@eecs.umich.edu    // MISCREG_HAIFSR
4397351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
4407351Sgblack@eecs.umich.edu    // MISCREG_HSR
4417351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
4427351Sgblack@eecs.umich.edu    // MISCREG_DFAR
4437351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
4447351Sgblack@eecs.umich.edu    // MISCREG_DFAR_NS
4457351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
4467351Sgblack@eecs.umich.edu    // MISCREG_DFAR_S
44712576Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
44812576Sgiacomo.travaglini@arm.com    // MISCREG_IFAR
44912576Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
45012576Sgiacomo.travaglini@arm.com    // MISCREG_IFAR_NS
4517351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
4527351Sgblack@eecs.umich.edu    // MISCREG_IFAR_S
4537351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
4547351Sgblack@eecs.umich.edu    // MISCREG_HDFAR
4557351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
4567351Sgblack@eecs.umich.edu    // MISCREG_HIFAR
4577351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
4587351Sgblack@eecs.umich.edu    // MISCREG_HPFAR
4597351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
4607351Sgblack@eecs.umich.edu    // MISCREG_ICIALLUIS
4617351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
4627351Sgblack@eecs.umich.edu    // MISCREG_BPIALLIS
4637351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
4647351Sgblack@eecs.umich.edu    // MISCREG_PAR
4657351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
4667351Sgblack@eecs.umich.edu    // MISCREG_PAR_NS
4677351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
4687351Sgblack@eecs.umich.edu    // MISCREG_PAR_S
4697351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
4707351Sgblack@eecs.umich.edu    // MISCREG_ICIALLU
4717351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
4727351Sgblack@eecs.umich.edu    // MISCREG_ICIMVAU
4737351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
4747351Sgblack@eecs.umich.edu    // MISCREG_CP15ISB
4757351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("10101010101010000001")),
4767351Sgblack@eecs.umich.edu    // MISCREG_BPIALL
4777351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
4787351Sgblack@eecs.umich.edu    // MISCREG_BPIMVA
4797351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
4807351Sgblack@eecs.umich.edu    // MISCREG_DCIMVAC
4817351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
4827351Sgblack@eecs.umich.edu    // MISCREG_DCISW
48312576Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
48412576Sgiacomo.travaglini@arm.com    // MISCREG_ATS1CPR
48512576Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
48612576Sgiacomo.travaglini@arm.com    // MISCREG_ATS1CPW
4877351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
4887351Sgblack@eecs.umich.edu    // MISCREG_ATS1CUR
4897351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
49010037SARM gem5 Developers    // MISCREG_ATS1CUW
49112577Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
49212577Sgiacomo.travaglini@arm.com    // MISCREG_ATS12NSOPR
49312577Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010000000000001")),
49412577Sgiacomo.travaglini@arm.com    // MISCREG_ATS12NSOPW
49512577Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010000000000001")),
49612577Sgiacomo.travaglini@arm.com    // MISCREG_ATS12NSOUR
49712577Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010000000000001")),
49812577Sgiacomo.travaglini@arm.com    // MISCREG_ATS12NSOUW
49910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010000000000001")),
50010037SARM gem5 Developers    // MISCREG_DCCMVAC
50110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
50210037SARM gem5 Developers    // MISCREG_DCCSW
50310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
50410037SARM gem5 Developers    // MISCREG_CP15DSB
50510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010101010000001")),
50612576Sgiacomo.travaglini@arm.com    // MISCREG_CP15DMB
50712576Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010101010000001")),
50810037SARM gem5 Developers    // MISCREG_DCCMVAU
50912577Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
51012577Sgiacomo.travaglini@arm.com    // MISCREG_DCCIMVAC
51112577Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
51212577Sgiacomo.travaglini@arm.com    // MISCREG_DCCISW
51312577Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
51412577Sgiacomo.travaglini@arm.com    // MISCREG_ATS1HR
51512577Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
51610037SARM gem5 Developers    // MISCREG_ATS1HW
51710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
51810037SARM gem5 Developers    // MISCREG_TLBIALLIS
51910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
52010037SARM gem5 Developers    // MISCREG_TLBIMVAIS
52110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
52210037SARM gem5 Developers    // MISCREG_TLBIASIDIS
52310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
52412576Sgiacomo.travaglini@arm.com    // MISCREG_TLBIMVAAIS
52512576Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
52610037SARM gem5 Developers    // MISCREG_TLBIMVALIS
52710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
5287351Sgblack@eecs.umich.edu    // MISCREG_TLBIMVAALIS
5297351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
5307259Sgblack@eecs.umich.edu    // MISCREG_ITLBIALL
53112530Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
53212530Sgiacomo.travaglini@arm.com    // MISCREG_ITLBIMVA
53312530Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
53412530Sgiacomo.travaglini@arm.com    // MISCREG_ITLBIASID
53512530Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
53612530Sgiacomo.travaglini@arm.com    // MISCREG_DTLBIALL
53712530Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
53812530Sgiacomo.travaglini@arm.com    // MISCREG_DTLBIMVA
53912530Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
54012530Sgiacomo.travaglini@arm.com    // MISCREG_DTLBIASID
54112530Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
54212530Sgiacomo.travaglini@arm.com    // MISCREG_TLBIALL
54312530Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
5447583SAli.Saidi@arm.com    // MISCREG_TLBIMVA
5457259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
5467259Sgblack@eecs.umich.edu    // MISCREG_TLBIASID
5477583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
5487583SAli.Saidi@arm.com    // MISCREG_TLBIMVAA
5497583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
5507583SAli.Saidi@arm.com    // MISCREG_TLBIMVAL
5517583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
5527583SAli.Saidi@arm.com    // MISCREG_TLBIMVAAL
5537583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
5547583SAli.Saidi@arm.com    // MISCREG_TLBIIPAS2IS
5557583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
5567583SAli.Saidi@arm.com    // MISCREG_TLBIIPAS2LIS
5577583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
5587583SAli.Saidi@arm.com    // MISCREG_TLBIALLHIS
5597583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
5607583SAli.Saidi@arm.com    // MISCREG_TLBIMVAHIS
5617583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
5627583SAli.Saidi@arm.com    // MISCREG_TLBIALLNSNHIS
5637583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
5647583SAli.Saidi@arm.com    // MISCREG_TLBIMVALHIS
5658988SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
5667259Sgblack@eecs.umich.edu    // MISCREG_TLBIIPAS2
5677583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
5687583SAli.Saidi@arm.com    // MISCREG_TLBIIPAS2L
5697583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
5707583SAli.Saidi@arm.com    // MISCREG_TLBIALLH
57110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
57210037SARM gem5 Developers    // MISCREG_TLBIMVAH
5737583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
5747583SAli.Saidi@arm.com    // MISCREG_TLBIALLNSNH
5757583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
5768988SAli.Saidi@ARM.com    // MISCREG_TLBIMVALH
5777259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
5787583SAli.Saidi@arm.com    // MISCREG_PMCR
5797583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
5807583SAli.Saidi@arm.com    // MISCREG_PMCNTENSET
5817583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
5827583SAli.Saidi@arm.com    // MISCREG_PMCNTENCLR
5837583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
5847583SAli.Saidi@arm.com    // MISCREG_PMOVSR
58510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
58610037SARM gem5 Developers    // MISCREG_PMSWINC
5877583SAli.Saidi@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
5888988SAli.Saidi@ARM.com    // MISCREG_PMSELR
5897259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
5908058SAli.Saidi@ARM.com    // MISCREG_PMCEID0
5918549Sdaniel.johnson@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
5928549Sdaniel.johnson@arm.com    // MISCREG_PMCEID1
5938549Sdaniel.johnson@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
5948549Sdaniel.johnson@arm.com    // MISCREG_PMCCNTR
5958549Sdaniel.johnson@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
59610037SARM gem5 Developers    // MISCREG_PMXEVTYPER
59710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
5988549Sdaniel.johnson@arm.com    // MISCREG_PMCCFILTR
5998988SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
60010037SARM gem5 Developers    // MISCREG_PMXEVCNTR
6018549Sdaniel.johnson@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
6027259Sgblack@eecs.umich.edu    // MISCREG_PMUSERENR
6037259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111110101000001")),
6047351Sgblack@eecs.umich.edu    // MISCREG_PMINTENSET
6057351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
6067351Sgblack@eecs.umich.edu    // MISCREG_PMINTENCLR
60712530Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
60812530Sgiacomo.travaglini@arm.com    // MISCREG_PMOVSSET
60912530Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
6107351Sgblack@eecs.umich.edu    // MISCREG_L2CTLR
61110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
61210037SARM gem5 Developers    // MISCREG_L2ECTLR
6137351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
61410037SARM gem5 Developers    // MISCREG_PRRR
61510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
6167351Sgblack@eecs.umich.edu    // MISCREG_PRRR_NS
61710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
61810037SARM gem5 Developers    // MISCREG_PRRR_S
61910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
62010037SARM gem5 Developers    // MISCREG_MAIR0
62110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
62210037SARM gem5 Developers    // MISCREG_MAIR0_NS
62310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
62410037SARM gem5 Developers    // MISCREG_MAIR0_S
62510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
62610037SARM gem5 Developers    // MISCREG_NMRR
62710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
62810037SARM gem5 Developers    // MISCREG_NMRR_NS
62910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
63010037SARM gem5 Developers    // MISCREG_NMRR_S
63110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
63210037SARM gem5 Developers    // MISCREG_MAIR1
63310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
63410037SARM gem5 Developers    // MISCREG_MAIR1_NS
63510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
6367351Sgblack@eecs.umich.edu    // MISCREG_MAIR1_S
6377351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
6387351Sgblack@eecs.umich.edu    // MISCREG_AMAIR0
6397259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
6408737Skoansin.tan@gmail.com    // MISCREG_AMAIR0_NS
6417259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
6427259Sgblack@eecs.umich.edu    // MISCREG_AMAIR0_S
6437259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
6447259Sgblack@eecs.umich.edu    // MISCREG_AMAIR1
6457259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
6467259Sgblack@eecs.umich.edu    // MISCREG_AMAIR1_NS
6477259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
6487259Sgblack@eecs.umich.edu    // MISCREG_AMAIR1_S
6497259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
6507259Sgblack@eecs.umich.edu    // MISCREG_HMAIR0
6517259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
6527259Sgblack@eecs.umich.edu    // MISCREG_HMAIR1
65312530Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
65412530Sgiacomo.travaglini@arm.com    // MISCREG_HAMAIR0
6557259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000100")),
6567259Sgblack@eecs.umich.edu    // MISCREG_HAMAIR1
6577259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000100")),
6587259Sgblack@eecs.umich.edu    // MISCREG_VBAR
6597351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
6607351Sgblack@eecs.umich.edu    // MISCREG_VBAR_NS
6617351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
6627351Sgblack@eecs.umich.edu    // MISCREG_VBAR_S
6637351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
6647351Sgblack@eecs.umich.edu    // MISCREG_MVBAR
6657351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11110011000000000001")),
6667351Sgblack@eecs.umich.edu    // MISCREG_RMR
6677351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11110011000000000000")),
6687351Sgblack@eecs.umich.edu    // MISCREG_ISR
6697351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
6707351Sgblack@eecs.umich.edu    // MISCREG_HVBAR
6717351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
67210037SARM gem5 Developers    // MISCREG_FCSEIDR
67310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000100")),
67410037SARM gem5 Developers    // MISCREG_CONTEXTIDR
6757351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
6767351Sgblack@eecs.umich.edu    // MISCREG_CONTEXTIDR_NS
6777259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
6787259Sgblack@eecs.umich.edu    // MISCREG_CONTEXTIDR_S
6797259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
6807406SAli.Saidi@ARM.com    // MISCREG_TPIDRURW
6817351Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
68210037SARM gem5 Developers    // MISCREG_TPIDRURW_NS
6837259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100111111100001")),
6847259Sgblack@eecs.umich.edu    // MISCREG_TPIDRURW_S
6857259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
6867259Sgblack@eecs.umich.edu    // MISCREG_TPIDRURO
6877259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
6887259Sgblack@eecs.umich.edu    // MISCREG_TPIDRURO_NS
6897259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11001100110101100001")),
6907259Sgblack@eecs.umich.edu    // MISCREG_TPIDRURO_S
6917259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
6927259Sgblack@eecs.umich.edu    // MISCREG_TPIDRPRW
69310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
69410037SARM gem5 Developers    // MISCREG_TPIDRPRW_NS
69510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
69610037SARM gem5 Developers    // MISCREG_TPIDRPRW_S
69710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
69810037SARM gem5 Developers    // MISCREG_HTPIDR
69910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
70010037SARM gem5 Developers    // MISCREG_CNTFRQ
70110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110101010101000011")),
70210037SARM gem5 Developers    // MISCREG_CNTKCTL
70310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
70410037SARM gem5 Developers    // MISCREG_CNTP_TVAL
70510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
70610037SARM gem5 Developers    // MISCREG_CNTP_TVAL_NS
70710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11001100111111100001")),
70810037SARM gem5 Developers    // MISCREG_CNTP_TVAL_S
70910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00110011001111100000")),
71010037SARM gem5 Developers    // MISCREG_CNTP_CTL
71110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
71210037SARM gem5 Developers    // MISCREG_CNTP_CTL_NS
71310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11001100111111100001")),
71410037SARM gem5 Developers    // MISCREG_CNTP_CTL_S
71510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00110011001111100000")),
71610037SARM gem5 Developers    // MISCREG_CNTV_TVAL
71710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
71810037SARM gem5 Developers    // MISCREG_CNTV_CTL
71910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
72010037SARM gem5 Developers    // MISCREG_CNTHCTL
72110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01001000000000000000")),
72210037SARM gem5 Developers    // MISCREG_CNTHP_TVAL
72310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01001000000000000000")),
72410037SARM gem5 Developers    // MISCREG_CNTHP_CTL
72510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01001000000000000000")),
72610037SARM gem5 Developers    // MISCREG_IL1DATA0
72710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
72810037SARM gem5 Developers    // MISCREG_IL1DATA1
72910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
73010037SARM gem5 Developers    // MISCREG_IL1DATA2
7317259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
7327259Sgblack@eecs.umich.edu    // MISCREG_IL1DATA3
7337259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
7347259Sgblack@eecs.umich.edu    // MISCREG_DL1DATA0
73512530Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
7367259Sgblack@eecs.umich.edu    // MISCREG_DL1DATA1
7377259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
73810037SARM gem5 Developers    // MISCREG_DL1DATA2
7397259Sgblack@eecs.umich.edu    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
7407259Sgblack@eecs.umich.edu    // MISCREG_DL1DATA3
74110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
74210037SARM gem5 Developers    // MISCREG_DL1DATA4
74310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
74410037SARM gem5 Developers    // MISCREG_RAMINDEX
74510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
74610037SARM gem5 Developers    // MISCREG_L2ACTLR
74710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
74810037SARM gem5 Developers    // MISCREG_CBAR
74910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000000")),
75010037SARM gem5 Developers    // MISCREG_HTTBR
75110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
75210037SARM gem5 Developers    // MISCREG_VTTBR
75310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
75410037SARM gem5 Developers    // MISCREG_CNTPCT
75510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010101000001")),
75610037SARM gem5 Developers    // MISCREG_CNTVCT
75710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010101000011")),
75810037SARM gem5 Developers    // MISCREG_CNTP_CVAL
75910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
76010037SARM gem5 Developers    // MISCREG_CNTP_CVAL_NS
76110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11001100111111100001")),
76210037SARM gem5 Developers    // MISCREG_CNTP_CVAL_S
76310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00110011001111100000")),
76410037SARM gem5 Developers    // MISCREG_CNTV_CVAL
76510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
76610037SARM gem5 Developers    // MISCREG_CNTVOFF
76710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
76810037SARM gem5 Developers    // MISCREG_CNTHP_CVAL
76910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01001000000000000000")),
77010037SARM gem5 Developers    // MISCREG_CPUMERRSR
77110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
77210037SARM gem5 Developers    // MISCREG_L2MERRSR
77310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000100")),
77410037SARM gem5 Developers
77510037SARM gem5 Developers    // AArch64 registers (Op0=2)
77610037SARM gem5 Developers    // MISCREG_MDCCINT_EL1
77710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
77810037SARM gem5 Developers    // MISCREG_OSDTRRX_EL1
77910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
78010037SARM gem5 Developers    // MISCREG_MDSCR_EL1
78110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
78210037SARM gem5 Developers    // MISCREG_OSDTRTX_EL1
78310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
78410037SARM gem5 Developers    // MISCREG_OSECCR_EL1
78510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
7868902Sandreas.hansson@arm.com    // MISCREG_DBGBVR0_EL1
78710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
78811939Snikos.nikoleris@arm.com    // MISCREG_DBGBVR1_EL1
78911939Snikos.nikoleris@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
79010037SARM gem5 Developers    // MISCREG_DBGBVR2_EL1
79110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
79211939Snikos.nikoleris@arm.com    // MISCREG_DBGBVR3_EL1
79311939Snikos.nikoleris@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
79410037SARM gem5 Developers    // MISCREG_DBGBVR4_EL1
79510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
79610037SARM gem5 Developers    // MISCREG_DBGBVR5_EL1
79710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
79810037SARM gem5 Developers    // MISCREG_DBGBCR0_EL1
79910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
80010037SARM gem5 Developers    // MISCREG_DBGBCR1_EL1
80110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
80210037SARM gem5 Developers    // MISCREG_DBGBCR2_EL1
80310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
80410037SARM gem5 Developers    // MISCREG_DBGBCR3_EL1
80510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
80610037SARM gem5 Developers    // MISCREG_DBGBCR4_EL1
80710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
80810037SARM gem5 Developers    // MISCREG_DBGBCR5_EL1
80910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
81010037SARM gem5 Developers    // MISCREG_DBGWVR0_EL1
81110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
81210037SARM gem5 Developers    // MISCREG_DBGWVR1_EL1
81310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
81410037SARM gem5 Developers    // MISCREG_DBGWVR2_EL1
81510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
81610037SARM gem5 Developers    // MISCREG_DBGWVR3_EL1
81711939Snikos.nikoleris@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
81810037SARM gem5 Developers    // MISCREG_DBGWCR0_EL1
81910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
82010037SARM gem5 Developers    // MISCREG_DBGWCR1_EL1
82111939Snikos.nikoleris@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
82210037SARM gem5 Developers    // MISCREG_DBGWCR2_EL1
82310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
82411939Snikos.nikoleris@arm.com    // MISCREG_DBGWCR3_EL1
82511939Snikos.nikoleris@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
82610037SARM gem5 Developers    // MISCREG_MDCCSR_EL0
82710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
82811939Snikos.nikoleris@arm.com    // MISCREG_MDDTR_EL0
82911939Snikos.nikoleris@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
83010037SARM gem5 Developers    // MISCREG_MDDTRTX_EL0
83110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
83210037SARM gem5 Developers    // MISCREG_MDDTRRX_EL0
83310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
83410037SARM gem5 Developers    // MISCREG_DBGVCR32_EL2
83510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
83610037SARM gem5 Developers    // MISCREG_MDRAR_EL1
83710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
83810037SARM gem5 Developers    // MISCREG_OSLAR_EL1
83910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101111111111000001")),
84010037SARM gem5 Developers    // MISCREG_OSLSR_EL1
84110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
84210037SARM gem5 Developers    // MISCREG_OSDLR_EL1
84310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
84410037SARM gem5 Developers    // MISCREG_DBGPRCR_EL1
84510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
84610037SARM gem5 Developers    // MISCREG_DBGCLAIMSET_EL1
84710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
84810037SARM gem5 Developers    // MISCREG_DBGCLAIMCLR_EL1
84910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
85010037SARM gem5 Developers    // MISCREG_DBGAUTHSTATUS_EL1
85110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
85210037SARM gem5 Developers    // MISCREG_TEECR32_EL1
85311939Snikos.nikoleris@arm.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000000001")),
85410037SARM gem5 Developers    // MISCREG_TEEHBR32_EL1
85510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00000000000000000001")),
85610037SARM gem5 Developers
85711939Snikos.nikoleris@arm.com    // AArch64 registers (Op0=1,3)
85810037SARM gem5 Developers    // MISCREG_MIDR_EL1
85910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
86010037SARM gem5 Developers    // MISCREG_MPIDR_EL1
86112499Sgiacomo.travaglini@arm.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
86210037SARM gem5 Developers    // MISCREG_REVIDR_EL1
86311771SCurtis.Dunham@arm.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
86412499Sgiacomo.travaglini@arm.com    // MISCREG_ID_PFR0_EL1
86510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
86610037SARM gem5 Developers    // MISCREG_ID_PFR1_EL1
86710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
86812499Sgiacomo.travaglini@arm.com    // MISCREG_ID_DFR0_EL1
86910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
87010421Sandreas.hansson@arm.com    // MISCREG_ID_AFR0_EL1
87110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
87211771SCurtis.Dunham@arm.com    // MISCREG_ID_MMFR0_EL1
87311771SCurtis.Dunham@arm.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
87410037SARM gem5 Developers    // MISCREG_ID_MMFR1_EL1
87510421Sandreas.hansson@arm.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
87610037SARM gem5 Developers    // MISCREG_ID_MMFR2_EL1
87710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
87810037SARM gem5 Developers    // MISCREG_ID_MMFR3_EL1
87910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
88010037SARM gem5 Developers    // MISCREG_ID_ISAR0_EL1
88110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
88210037SARM gem5 Developers    // MISCREG_ID_ISAR1_EL1
88310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
88410037SARM gem5 Developers    // MISCREG_ID_ISAR2_EL1
88510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
88610037SARM gem5 Developers    // MISCREG_ID_ISAR3_EL1
88710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
88810037SARM gem5 Developers    // MISCREG_ID_ISAR4_EL1
88910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
89010037SARM gem5 Developers    // MISCREG_ID_ISAR5_EL1
89110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
89210037SARM gem5 Developers    // MISCREG_MVFR0_EL1
89310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
89410037SARM gem5 Developers    // MISCREG_MVFR1_EL1
89510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
89610037SARM gem5 Developers    // MISCREG_MVFR2_EL1
89710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
89810037SARM gem5 Developers    // MISCREG_ID_AA64PFR0_EL1
89910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
90010037SARM gem5 Developers    // MISCREG_ID_AA64PFR1_EL1
90110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
90210037SARM gem5 Developers    // MISCREG_ID_AA64DFR0_EL1
90310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
90410037SARM gem5 Developers    // MISCREG_ID_AA64DFR1_EL1
90510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
90610037SARM gem5 Developers    // MISCREG_ID_AA64AFR0_EL1
90710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
90810037SARM gem5 Developers    // MISCREG_ID_AA64AFR1_EL1
90910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
91010037SARM gem5 Developers    // MISCREG_ID_AA64ISAR0_EL1
91110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
91210037SARM gem5 Developers    // MISCREG_ID_AA64ISAR1_EL1
91310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
91410037SARM gem5 Developers    // MISCREG_ID_AA64MMFR0_EL1
91510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
91610037SARM gem5 Developers    // MISCREG_ID_AA64MMFR1_EL1
91710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
91810037SARM gem5 Developers    // MISCREG_CCSIDR_EL1
91910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
92010037SARM gem5 Developers    // MISCREG_CLIDR_EL1
92110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
92210037SARM gem5 Developers    // MISCREG_AIDR_EL1
92310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
92410037SARM gem5 Developers    // MISCREG_CSSELR_EL1
92510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
92610037SARM gem5 Developers    // MISCREG_CTR_EL0
92710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010101000001")),
92810037SARM gem5 Developers    // MISCREG_DCZID_EL0
92910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010101000001")),
93010037SARM gem5 Developers    // MISCREG_VPIDR_EL2
93110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
93210037SARM gem5 Developers    // MISCREG_VMPIDR_EL2
93310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
93410037SARM gem5 Developers    // MISCREG_SCTLR_EL1
93510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
93610037SARM gem5 Developers    // MISCREG_ACTLR_EL1
93710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
93810037SARM gem5 Developers    // MISCREG_CPACR_EL1
93911574SCurtis.Dunham@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
94011574SCurtis.Dunham@arm.com    // MISCREG_SCTLR_EL2
94110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
94210037SARM gem5 Developers    // MISCREG_ACTLR_EL2
94310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
94410037SARM gem5 Developers    // MISCREG_HCR_EL2
94510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
94610037SARM gem5 Developers    // MISCREG_MDCR_EL2
94710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
94810037SARM gem5 Developers    // MISCREG_CPTR_EL2
94910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
95010037SARM gem5 Developers    // MISCREG_HSTR_EL2
95110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
95210037SARM gem5 Developers    // MISCREG_HACR_EL2
95310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
95410037SARM gem5 Developers    // MISCREG_SCTLR_EL3
95510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
95610037SARM gem5 Developers    // MISCREG_ACTLR_EL3
95710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
95810037SARM gem5 Developers    // MISCREG_SCR_EL3
95910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
96010037SARM gem5 Developers    // MISCREG_SDER32_EL3
96110828SGiacomo.Gabrielli@arm.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
96210828SGiacomo.Gabrielli@arm.com    // MISCREG_CPTR_EL3
96310828SGiacomo.Gabrielli@arm.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
96410037SARM gem5 Developers    // MISCREG_MDCR_EL3
96510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
96610037SARM gem5 Developers    // MISCREG_TTBR0_EL1
96710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
96812502Snikos.nikoleris@arm.com    // MISCREG_TTBR1_EL1
96910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
97010037SARM gem5 Developers    // MISCREG_TCR_EL1
97110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
97210037SARM gem5 Developers    // MISCREG_TTBR0_EL2
97310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
97410037SARM gem5 Developers    // MISCREG_TCR_EL2
97510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
97610037SARM gem5 Developers    // MISCREG_VTTBR_EL2
97710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
97810037SARM gem5 Developers    // MISCREG_VTCR_EL2
97910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
98010037SARM gem5 Developers    // MISCREG_TTBR0_EL3
98110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
98210037SARM gem5 Developers    // MISCREG_TCR_EL3
98311574SCurtis.Dunham@arm.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
98411574SCurtis.Dunham@arm.com    // MISCREG_DACR32_EL2
98510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
98610037SARM gem5 Developers    // MISCREG_SPSR_EL1
98710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
98810037SARM gem5 Developers    // MISCREG_ELR_EL1
98910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
99010037SARM gem5 Developers    // MISCREG_SP_EL0
99110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
99210037SARM gem5 Developers    // MISCREG_SPSEL
99310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
99410037SARM gem5 Developers    // MISCREG_CURRENTEL
99510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
99610037SARM gem5 Developers    // MISCREG_NZCV
99710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
99810037SARM gem5 Developers    // MISCREG_DAIF
99910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
100010037SARM gem5 Developers    // MISCREG_FPCR
100110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
100210037SARM gem5 Developers    // MISCREG_FPSR
100310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
100410037SARM gem5 Developers    // MISCREG_DSPSR_EL0
100510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
100610037SARM gem5 Developers    // MISCREG_DLR_EL0
100710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
100810037SARM gem5 Developers    // MISCREG_SPSR_EL2
100910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
101010037SARM gem5 Developers    // MISCREG_ELR_EL2
101110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
101210037SARM gem5 Developers    // MISCREG_SP_EL1
101310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
101410037SARM gem5 Developers    // MISCREG_SPSR_IRQ_AA64
101510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
101610037SARM gem5 Developers    // MISCREG_SPSR_ABT_AA64
101710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
101810037SARM gem5 Developers    // MISCREG_SPSR_UND_AA64
101910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
102010037SARM gem5 Developers    // MISCREG_SPSR_FIQ_AA64
102110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
102210037SARM gem5 Developers    // MISCREG_SPSR_EL3
102310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
102410037SARM gem5 Developers    // MISCREG_ELR_EL3
102510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
102610037SARM gem5 Developers    // MISCREG_SP_EL2
102710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
102810037SARM gem5 Developers    // MISCREG_AFSR0_EL1
102910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
103010037SARM gem5 Developers    // MISCREG_AFSR1_EL1
103110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
103210037SARM gem5 Developers    // MISCREG_ESR_EL1
103310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
103410037SARM gem5 Developers    // MISCREG_IFSR32_EL2
103510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
103610037SARM gem5 Developers    // MISCREG_AFSR0_EL2
103710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
103810037SARM gem5 Developers    // MISCREG_AFSR1_EL2
103910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
104010037SARM gem5 Developers    // MISCREG_ESR_EL2
104110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
104210037SARM gem5 Developers    // MISCREG_FPEXC32_EL2
104310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
104410037SARM gem5 Developers    // MISCREG_AFSR0_EL3
104510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
104610037SARM gem5 Developers    // MISCREG_AFSR1_EL3
104710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
104810037SARM gem5 Developers    // MISCREG_ESR_EL3
104910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
105010037SARM gem5 Developers    // MISCREG_FAR_EL1
105110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
105210037SARM gem5 Developers    // MISCREG_FAR_EL2
105310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
105410037SARM gem5 Developers    // MISCREG_HPFAR_EL2
105510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
105610037SARM gem5 Developers    // MISCREG_FAR_EL3
105710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
105810037SARM gem5 Developers    // MISCREG_IC_IALLUIS
105910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
106010037SARM gem5 Developers    // MISCREG_PAR_EL1
106110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
106210037SARM gem5 Developers    // MISCREG_IC_IALLU
106310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
106410037SARM gem5 Developers    // MISCREG_DC_IVAC_Xt
106510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
106610037SARM gem5 Developers    // MISCREG_DC_ISW_Xt
106710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
106810037SARM gem5 Developers    // MISCREG_AT_S1E1R_Xt
106910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
107010037SARM gem5 Developers    // MISCREG_AT_S1E1W_Xt
107110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
107210037SARM gem5 Developers    // MISCREG_AT_S1E0R_Xt
107310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
107410037SARM gem5 Developers    // MISCREG_AT_S1E0W_Xt
107510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
107610037SARM gem5 Developers    // MISCREG_DC_CSW_Xt
107710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
107810037SARM gem5 Developers    // MISCREG_DC_CISW_Xt
107910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
108010037SARM gem5 Developers    // MISCREG_DC_ZVA_Xt
108110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100010000101")),
108210037SARM gem5 Developers    // MISCREG_IC_IVAU_Xt
108310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010101010000001")),
108410037SARM gem5 Developers    // MISCREG_DC_CVAC_Xt
108510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010101010000101")),
108610037SARM gem5 Developers    // MISCREG_DC_CVAU_Xt
108710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010101010000101")),
108810037SARM gem5 Developers    // MISCREG_DC_CIVAC_Xt
108910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010101010000101")),
109010037SARM gem5 Developers    // MISCREG_AT_S1E2R_Xt
109110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
109210037SARM gem5 Developers    // MISCREG_AT_S1E2W_Xt
109310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
109410037SARM gem5 Developers    // MISCREG_AT_S12E1R_Xt
109510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
109610037SARM gem5 Developers    // MISCREG_AT_S12E1W_Xt
109710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
109810037SARM gem5 Developers    // MISCREG_AT_S12E0R_Xt
109910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
110010037SARM gem5 Developers    // MISCREG_AT_S12E0W_Xt
110110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
110210037SARM gem5 Developers    // MISCREG_AT_S1E3R_Xt
110310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
110410037SARM gem5 Developers    // MISCREG_AT_S1E3W_Xt
110510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
110610037SARM gem5 Developers    // MISCREG_TLBI_VMALLE1IS
110710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
110810037SARM gem5 Developers    // MISCREG_TLBI_VAE1IS_Xt
110910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
111010037SARM gem5 Developers    // MISCREG_TLBI_ASIDE1IS_Xt
111110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
111210037SARM gem5 Developers    // MISCREG_TLBI_VAAE1IS_Xt
111310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
111410037SARM gem5 Developers    // MISCREG_TLBI_VALE1IS_Xt
111510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
111610037SARM gem5 Developers    // MISCREG_TLBI_VAALE1IS_Xt
111710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
111810037SARM gem5 Developers    // MISCREG_TLBI_VMALLE1
111910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
112010037SARM gem5 Developers    // MISCREG_TLBI_VAE1_Xt
112110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
112210037SARM gem5 Developers    // MISCREG_TLBI_ASIDE1_Xt
112310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
112410037SARM gem5 Developers    // MISCREG_TLBI_VAAE1_Xt
112510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
112610037SARM gem5 Developers    // MISCREG_TLBI_VALE1_Xt
112710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
112810037SARM gem5 Developers    // MISCREG_TLBI_VAALE1_Xt
112910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
113010037SARM gem5 Developers    // MISCREG_TLBI_IPAS2E1IS_Xt
113110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
113210037SARM gem5 Developers    // MISCREG_TLBI_IPAS2LE1IS_Xt
113310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
113410037SARM gem5 Developers    // MISCREG_TLBI_ALLE2IS
113510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
113610037SARM gem5 Developers    // MISCREG_TLBI_VAE2IS_Xt
113710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
113810037SARM gem5 Developers    // MISCREG_TLBI_ALLE1IS
113910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
114010037SARM gem5 Developers    // MISCREG_TLBI_VALE2IS_Xt
114110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
114210037SARM gem5 Developers    // MISCREG_TLBI_VMALLS12E1IS
114310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
114410037SARM gem5 Developers    // MISCREG_TLBI_IPAS2E1_Xt
114510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
114610037SARM gem5 Developers    // MISCREG_TLBI_IPAS2LE1_Xt
114710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
114810037SARM gem5 Developers    // MISCREG_TLBI_ALLE2
114910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
115010037SARM gem5 Developers    // MISCREG_TLBI_VAE2_Xt
115110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
115210037SARM gem5 Developers    // MISCREG_TLBI_ALLE1
115310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
115410037SARM gem5 Developers    // MISCREG_TLBI_VALE2_Xt
115510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
115610037SARM gem5 Developers    // MISCREG_TLBI_VMALLS12E1
115710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
115810037SARM gem5 Developers    // MISCREG_TLBI_ALLE3IS
115910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
116010037SARM gem5 Developers    // MISCREG_TLBI_VAE3IS_Xt
116110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
116210037SARM gem5 Developers    // MISCREG_TLBI_VALE3IS_Xt
116310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
116410037SARM gem5 Developers    // MISCREG_TLBI_ALLE3
116510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
116610037SARM gem5 Developers    // MISCREG_TLBI_VAE3_Xt
116710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
116810037SARM gem5 Developers    // MISCREG_TLBI_VALE3_Xt
116910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
117010037SARM gem5 Developers    // MISCREG_PMINTENSET_EL1
117110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
117210037SARM gem5 Developers    // MISCREG_PMINTENCLR_EL1
117310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
117410037SARM gem5 Developers    // MISCREG_PMCR_EL0
117510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
117610037SARM gem5 Developers    // MISCREG_PMCNTENSET_EL0
117710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
117810037SARM gem5 Developers    // MISCREG_PMCNTENCLR_EL0
117910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
118010037SARM gem5 Developers    // MISCREG_PMOVSCLR_EL0
118110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
118210037SARM gem5 Developers    // MISCREG_PMSWINC_EL0
118310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("10101010101111000001")),
118410037SARM gem5 Developers    // MISCREG_PMSELR_EL0
118510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
118610037SARM gem5 Developers    // MISCREG_PMCEID0_EL0
118710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101011111000001")),
118810037SARM gem5 Developers    // MISCREG_PMCEID1_EL0
118910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101011111000001")),
119010037SARM gem5 Developers    // MISCREG_PMCCNTR_EL0
119110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
119210037SARM gem5 Developers    // MISCREG_PMXEVTYPER_EL0
119310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
119410037SARM gem5 Developers    // MISCREG_PMCCFILTR_EL0
119510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
119610037SARM gem5 Developers    // MISCREG_PMXEVCNTR_EL0
119710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
119810037SARM gem5 Developers    // MISCREG_PMUSERENR_EL0
119910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110101000001")),
120010037SARM gem5 Developers    // MISCREG_PMOVSSET_EL0
120110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
120210037SARM gem5 Developers    // MISCREG_MAIR_EL1
120310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
120410037SARM gem5 Developers    // MISCREG_AMAIR_EL1
120510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
120610037SARM gem5 Developers    // MISCREG_MAIR_EL2
120710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
120810037SARM gem5 Developers    // MISCREG_AMAIR_EL2
120910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
121010037SARM gem5 Developers    // MISCREG_MAIR_EL3
121110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
121210037SARM gem5 Developers    // MISCREG_AMAIR_EL3
121310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
121410037SARM gem5 Developers    // MISCREG_L2CTLR_EL1
121510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
121610037SARM gem5 Developers    // MISCREG_L2ECTLR_EL1
121710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
121810037SARM gem5 Developers    // MISCREG_VBAR_EL1
121910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
122010037SARM gem5 Developers    // MISCREG_RVBAR_EL1
122110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
122210037SARM gem5 Developers    // MISCREG_ISR_EL1
122310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
122410037SARM gem5 Developers    // MISCREG_VBAR_EL2
122510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
122610037SARM gem5 Developers    // MISCREG_RVBAR_EL2
122710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010100000000000001")),
122810037SARM gem5 Developers    // MISCREG_VBAR_EL3
122910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
123010037SARM gem5 Developers    // MISCREG_RVBAR_EL3
123110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010000000000000001")),
123210037SARM gem5 Developers    // MISCREG_RMR_EL3
123310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
123410037SARM gem5 Developers    // MISCREG_CONTEXTIDR_EL1
123510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
123610037SARM gem5 Developers    // MISCREG_TPIDR_EL1
123710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
123810037SARM gem5 Developers    // MISCREG_TPIDR_EL0
123910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
124010037SARM gem5 Developers    // MISCREG_TPIDRRO_EL0
124110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110101000001")),
124210037SARM gem5 Developers    // MISCREG_TPIDR_EL2
124310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
124410037SARM gem5 Developers    // MISCREG_TPIDR_EL3
124510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
124610037SARM gem5 Developers    // MISCREG_CNTKCTL_EL1
124710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
124810037SARM gem5 Developers    // MISCREG_CNTFRQ_EL0
124910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11110101010101000001")),
125010037SARM gem5 Developers    // MISCREG_CNTPCT_EL0
125110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010101000001")),
125210037SARM gem5 Developers    // MISCREG_CNTVCT_EL0
125310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010101000011")),
125410037SARM gem5 Developers    // MISCREG_CNTP_TVAL_EL0
125510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
125610037SARM gem5 Developers    // MISCREG_CNTP_CTL_EL0
125710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
125810037SARM gem5 Developers    // MISCREG_CNTP_CVAL_EL0
125910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
126010037SARM gem5 Developers    // MISCREG_CNTV_TVAL_EL0
126110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
126210037SARM gem5 Developers    // MISCREG_CNTV_CTL_EL0
126310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
126410037SARM gem5 Developers    // MISCREG_CNTV_CVAL_EL0
126510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
126610037SARM gem5 Developers    // MISCREG_PMEVCNTR0_EL0
126710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
126810037SARM gem5 Developers    // MISCREG_PMEVCNTR1_EL0
126910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
127010037SARM gem5 Developers    // MISCREG_PMEVCNTR2_EL0
127110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
127210037SARM gem5 Developers    // MISCREG_PMEVCNTR3_EL0
127310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
127410037SARM gem5 Developers    // MISCREG_PMEVCNTR4_EL0
127510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
127610037SARM gem5 Developers    // MISCREG_PMEVCNTR5_EL0
127710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
127810037SARM gem5 Developers    // MISCREG_PMEVTYPER0_EL0
127910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
128010037SARM gem5 Developers    // MISCREG_PMEVTYPER1_EL0
128110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
128210037SARM gem5 Developers    // MISCREG_PMEVTYPER2_EL0
128310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
128410037SARM gem5 Developers    // MISCREG_PMEVTYPER3_EL0
128510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
128610037SARM gem5 Developers    // MISCREG_PMEVTYPER4_EL0
128710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
128810037SARM gem5 Developers    // MISCREG_PMEVTYPER5_EL0
128910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
129010037SARM gem5 Developers    // MISCREG_CNTVOFF_EL2
129110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
129210037SARM gem5 Developers    // MISCREG_CNTHCTL_EL2
129310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
129410037SARM gem5 Developers    // MISCREG_CNTHP_TVAL_EL2
129510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
129610037SARM gem5 Developers    // MISCREG_CNTHP_CTL_EL2
129710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
129810037SARM gem5 Developers    // MISCREG_CNTHP_CVAL_EL2
129910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
130010037SARM gem5 Developers    // MISCREG_CNTPS_TVAL_EL1
130110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
130210037SARM gem5 Developers    // MISCREG_CNTPS_CTL_EL1
130310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
130410037SARM gem5 Developers    // MISCREG_CNTPS_CVAL_EL1
130510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
130610037SARM gem5 Developers    // MISCREG_IL1DATA0_EL1
130710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
130810037SARM gem5 Developers    // MISCREG_IL1DATA1_EL1
130910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
131010037SARM gem5 Developers    // MISCREG_IL1DATA2_EL1
131110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
131210037SARM gem5 Developers    // MISCREG_IL1DATA3_EL1
131310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
131410037SARM gem5 Developers    // MISCREG_DL1DATA0_EL1
131510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
131610037SARM gem5 Developers    // MISCREG_DL1DATA1_EL1
131710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
131810037SARM gem5 Developers    // MISCREG_DL1DATA2_EL1
131910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
132010037SARM gem5 Developers    // MISCREG_DL1DATA3_EL1
132110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
132210037SARM gem5 Developers    // MISCREG_DL1DATA4_EL1
132310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
132410037SARM gem5 Developers    // MISCREG_L2ACTLR_EL1
132510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
132610037SARM gem5 Developers    // MISCREG_CPUACTLR_EL1
132710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
132810037SARM gem5 Developers    // MISCREG_CPUECTLR_EL1
132910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
133010037SARM gem5 Developers    // MISCREG_CPUMERRSR_EL1
133110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
133210037SARM gem5 Developers    // MISCREG_L2MERRSR_EL1
133310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111110000000100")),
133410037SARM gem5 Developers    // MISCREG_CBAR_EL1
133510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
133610037SARM gem5 Developers
133710037SARM gem5 Developers    // Dummy registers
133810037SARM gem5 Developers    // MISCREG_NOP
133910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
134010037SARM gem5 Developers    // MISCREG_RAZ
134110037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
134210037SARM gem5 Developers    // MISCREG_CP14_UNIMPL
134310037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00000000000000000100")),
134410037SARM gem5 Developers    // MISCREG_CP15_UNIMPL
134510037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00000000000000000100")),
134610037SARM gem5 Developers    // MISCREG_A64_UNIMPL
134710037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00000000000000000100")),
134810037SARM gem5 Developers    // MISCREG_UNKNOWN
134910037SARM gem5 Developers    bitset<NUM_MISCREG_INFOS>(string("00000000000000000001"))
135010037SARM gem5 Developers};
135110037SARM gem5 Developers
135210037SARM gem5 DevelopersMiscRegIndex
135310037SARM gem5 DevelopersdecodeCP15Reg(unsigned crn, unsigned opc1, unsigned crm, unsigned opc2)
135410037SARM gem5 Developers{
135510037SARM gem5 Developers    switch (crn) {
135610037SARM gem5 Developers      case 0:
135710037SARM gem5 Developers        switch (opc1) {
135810037SARM gem5 Developers          case 0:
135910037SARM gem5 Developers            switch (crm) {
136010037SARM gem5 Developers              case 0:
136110037SARM gem5 Developers                switch (opc2) {
136210037SARM gem5 Developers                  case 1:
136310037SARM gem5 Developers                    return MISCREG_CTR;
136410037SARM gem5 Developers                  case 2:
136510037SARM gem5 Developers                    return MISCREG_TCMTR;
136610037SARM gem5 Developers                  case 3:
136710037SARM gem5 Developers                    return MISCREG_TLBTR;
136810037SARM gem5 Developers                  case 5:
136910037SARM gem5 Developers                    return MISCREG_MPIDR;
137010037SARM gem5 Developers                  case 6:
137110037SARM gem5 Developers                    return MISCREG_REVIDR;
137210037SARM gem5 Developers                  default:
137310037SARM gem5 Developers                    return MISCREG_MIDR;
137410037SARM gem5 Developers                }
137510037SARM gem5 Developers                break;
137610037SARM gem5 Developers              case 1:
137710037SARM gem5 Developers                switch (opc2) {
137810037SARM gem5 Developers                  case 0:
137910037SARM gem5 Developers                    return MISCREG_ID_PFR0;
138010037SARM gem5 Developers                  case 1:
138110037SARM gem5 Developers                    return MISCREG_ID_PFR1;
138210037SARM gem5 Developers                  case 2:
138310037SARM gem5 Developers                    return MISCREG_ID_DFR0;
138410037SARM gem5 Developers                  case 3:
138510037SARM gem5 Developers                    return MISCREG_ID_AFR0;
138610037SARM gem5 Developers                  case 4:
138710037SARM gem5 Developers                    return MISCREG_ID_MMFR0;
138810037SARM gem5 Developers                  case 5:
138910037SARM gem5 Developers                    return MISCREG_ID_MMFR1;
139010037SARM gem5 Developers                  case 6:
139110037SARM gem5 Developers                    return MISCREG_ID_MMFR2;
139210037SARM gem5 Developers                  case 7:
139310037SARM gem5 Developers                    return MISCREG_ID_MMFR3;
139410037SARM gem5 Developers                }
139510037SARM gem5 Developers                break;
139610037SARM gem5 Developers              case 2:
139710037SARM gem5 Developers                switch (opc2) {
139810037SARM gem5 Developers                  case 0:
139910037SARM gem5 Developers                    return MISCREG_ID_ISAR0;
140010037SARM gem5 Developers                  case 1:
140110037SARM gem5 Developers                    return MISCREG_ID_ISAR1;
140210037SARM gem5 Developers                  case 2:
140310037SARM gem5 Developers                    return MISCREG_ID_ISAR2;
140410037SARM gem5 Developers                  case 3:
140510037SARM gem5 Developers                    return MISCREG_ID_ISAR3;
140610037SARM gem5 Developers                  case 4:
140710037SARM gem5 Developers                    return MISCREG_ID_ISAR4;
140810037SARM gem5 Developers                  case 5:
140910037SARM gem5 Developers                    return MISCREG_ID_ISAR5;
141010037SARM gem5 Developers                  case 6:
141110037SARM gem5 Developers                  case 7:
141210037SARM gem5 Developers                    return MISCREG_RAZ; // read as zero
141310037SARM gem5 Developers                }
141410037SARM gem5 Developers                break;
141510037SARM gem5 Developers              default:
141610037SARM gem5 Developers                return MISCREG_RAZ; // read as zero
141710037SARM gem5 Developers            }
141810037SARM gem5 Developers            break;
141910037SARM gem5 Developers          case 1:
142010037SARM gem5 Developers            if (crm == 0) {
142110037SARM gem5 Developers                switch (opc2) {
142210037SARM gem5 Developers                  case 0:
142310037SARM gem5 Developers                    return MISCREG_CCSIDR;
142410037SARM gem5 Developers                  case 1:
142510037SARM gem5 Developers                    return MISCREG_CLIDR;
142610037SARM gem5 Developers                  case 7:
142710037SARM gem5 Developers                    return MISCREG_AIDR;
142810037SARM gem5 Developers                }
142910037SARM gem5 Developers            }
143010037SARM gem5 Developers            break;
143110037SARM gem5 Developers          case 2:
143210037SARM gem5 Developers            if (crm == 0 && opc2 == 0) {
143310037SARM gem5 Developers                return MISCREG_CSSELR;
143410037SARM gem5 Developers            }
143510037SARM gem5 Developers            break;
143610037SARM gem5 Developers          case 4:
143710037SARM gem5 Developers            if (crm == 0) {
143810037SARM gem5 Developers                if (opc2 == 0)
143910037SARM gem5 Developers                    return MISCREG_VPIDR;
144010037SARM gem5 Developers                else if (opc2 == 5)
144110037SARM gem5 Developers                    return MISCREG_VMPIDR;
144210037SARM gem5 Developers            }
144310037SARM gem5 Developers            break;
144410037SARM gem5 Developers        }
144510037SARM gem5 Developers        break;
144610037SARM gem5 Developers      case 1:
144710037SARM gem5 Developers        if (opc1 == 0) {
144810037SARM gem5 Developers            if (crm == 0) {
144910037SARM gem5 Developers                switch (opc2) {
145010037SARM gem5 Developers                  case 0:
145110037SARM gem5 Developers                    return MISCREG_SCTLR;
145210037SARM gem5 Developers                  case 1:
145310037SARM gem5 Developers                    return MISCREG_ACTLR;
145410037SARM gem5 Developers                  case 0x2:
145510037SARM gem5 Developers                    return MISCREG_CPACR;
145610037SARM gem5 Developers                }
145710037SARM gem5 Developers            } else if (crm == 1) {
145810037SARM gem5 Developers                switch (opc2) {
145910037SARM gem5 Developers                  case 0:
146010037SARM gem5 Developers                    return MISCREG_SCR;
146110037SARM gem5 Developers                  case 1:
146210037SARM gem5 Developers                    return MISCREG_SDER;
146310037SARM gem5 Developers                  case 2:
146410037SARM gem5 Developers                    return MISCREG_NSACR;
146510037SARM gem5 Developers                }
146610037SARM gem5 Developers            }
146710037SARM gem5 Developers        } else if (opc1 == 4) {
146810037SARM gem5 Developers            if (crm == 0) {
146910037SARM gem5 Developers                if (opc2 == 0)
147010037SARM gem5 Developers                    return MISCREG_HSCTLR;
147110037SARM gem5 Developers                else if (opc2 == 1)
147210037SARM gem5 Developers                    return MISCREG_HACTLR;
147310037SARM gem5 Developers            } else if (crm == 1) {
147410037SARM gem5 Developers                switch (opc2) {
147510037SARM gem5 Developers                  case 0:
147610037SARM gem5 Developers                    return MISCREG_HCR;
147710037SARM gem5 Developers                  case 1:
147810037SARM gem5 Developers                    return MISCREG_HDCR;
147910037SARM gem5 Developers                  case 2:
148010037SARM gem5 Developers                    return MISCREG_HCPTR;
148110037SARM gem5 Developers                  case 3:
148210037SARM gem5 Developers                    return MISCREG_HSTR;
148310037SARM gem5 Developers                  case 7:
148410037SARM gem5 Developers                    return MISCREG_HACR;
148510037SARM gem5 Developers                }
148610037SARM gem5 Developers            }
148710037SARM gem5 Developers        }
148810037SARM gem5 Developers        break;
148910037SARM gem5 Developers      case 2:
149010037SARM gem5 Developers        if (opc1 == 0 && crm == 0) {
149110037SARM gem5 Developers            switch (opc2) {
149210037SARM gem5 Developers              case 0:
149310037SARM gem5 Developers                return MISCREG_TTBR0;
149410037SARM gem5 Developers              case 1:
149510037SARM gem5 Developers                return MISCREG_TTBR1;
149610037SARM gem5 Developers              case 2:
149710037SARM gem5 Developers                return MISCREG_TTBCR;
149810037SARM gem5 Developers            }
149910037SARM gem5 Developers        } else if (opc1 == 4) {
150010037SARM gem5 Developers            if (crm == 0 && opc2 == 2)
150110037SARM gem5 Developers                return MISCREG_HTCR;
150210037SARM gem5 Developers            else if (crm == 1 && opc2 == 2)
150310037SARM gem5 Developers                return MISCREG_VTCR;
150410037SARM gem5 Developers        }
150510037SARM gem5 Developers        break;
150610037SARM gem5 Developers      case 3:
150710037SARM gem5 Developers        if (opc1 == 0 && crm == 0 && opc2 == 0) {
150810037SARM gem5 Developers            return MISCREG_DACR;
150910037SARM gem5 Developers        }
151010037SARM gem5 Developers        break;
151110037SARM gem5 Developers      case 5:
151210037SARM gem5 Developers        if (opc1 == 0) {
151310037SARM gem5 Developers            if (crm == 0) {
151410037SARM gem5 Developers                if (opc2 == 0) {
151510037SARM gem5 Developers                    return MISCREG_DFSR;
151610037SARM gem5 Developers                } else if (opc2 == 1) {
151710037SARM gem5 Developers                    return MISCREG_IFSR;
151810037SARM gem5 Developers                }
151910037SARM gem5 Developers            } else if (crm == 1) {
152010037SARM gem5 Developers                if (opc2 == 0) {
152110037SARM gem5 Developers                    return MISCREG_ADFSR;
152210037SARM gem5 Developers                } else if (opc2 == 1) {
152310037SARM gem5 Developers                    return MISCREG_AIFSR;
152410037SARM gem5 Developers                }
152510037SARM gem5 Developers            }
152610037SARM gem5 Developers        } else if (opc1 == 4) {
152710037SARM gem5 Developers            if (crm == 1) {
152810037SARM gem5 Developers                if (opc2 == 0)
152910037SARM gem5 Developers                    return MISCREG_HADFSR;
153010037SARM gem5 Developers                else if (opc2 == 1)
153110037SARM gem5 Developers                    return MISCREG_HAIFSR;
153210037SARM gem5 Developers            } else if (crm == 2 && opc2 == 0) {
153310037SARM gem5 Developers                return MISCREG_HSR;
153410037SARM gem5 Developers            }
153510037SARM gem5 Developers        }
153610037SARM gem5 Developers        break;
153710037SARM gem5 Developers      case 6:
153810037SARM gem5 Developers        if (opc1 == 0 && crm == 0) {
153910037SARM gem5 Developers            switch (opc2) {
154010037SARM gem5 Developers              case 0:
154110037SARM gem5 Developers                return MISCREG_DFAR;
154210037SARM gem5 Developers              case 2:
154310037SARM gem5 Developers                return MISCREG_IFAR;
154410037SARM gem5 Developers            }
154510037SARM gem5 Developers        } else if (opc1 == 4 && crm == 0) {
154610037SARM gem5 Developers            switch (opc2) {
154710037SARM gem5 Developers              case 0:
154810037SARM gem5 Developers                return MISCREG_HDFAR;
154910037SARM gem5 Developers              case 2:
155010037SARM gem5 Developers                return MISCREG_HIFAR;
155110037SARM gem5 Developers              case 4:
155210037SARM gem5 Developers                return MISCREG_HPFAR;
155310037SARM gem5 Developers            }
155410037SARM gem5 Developers        }
155510037SARM gem5 Developers        break;
155610037SARM gem5 Developers      case 7:
155710037SARM gem5 Developers        if (opc1 == 0) {
155810037SARM gem5 Developers            switch (crm) {
155910037SARM gem5 Developers              case 0:
156010037SARM gem5 Developers                if (opc2 == 4) {
156110037SARM gem5 Developers                    return MISCREG_NOP;
156210037SARM gem5 Developers                }
156310037SARM gem5 Developers                break;
156410037SARM gem5 Developers              case 1:
156510037SARM gem5 Developers                switch (opc2) {
156610037SARM gem5 Developers                  case 0:
156710037SARM gem5 Developers                    return MISCREG_ICIALLUIS;
156810037SARM gem5 Developers                  case 6:
156910037SARM gem5 Developers                    return MISCREG_BPIALLIS;
157010037SARM gem5 Developers                }
157110037SARM gem5 Developers                break;
157210037SARM gem5 Developers              case 4:
157310037SARM gem5 Developers                if (opc2 == 0) {
157410037SARM gem5 Developers                    return MISCREG_PAR;
157510037SARM gem5 Developers                }
157610037SARM gem5 Developers                break;
157710037SARM gem5 Developers              case 5:
157810037SARM gem5 Developers                switch (opc2) {
157910037SARM gem5 Developers                  case 0:
158010037SARM gem5 Developers                    return MISCREG_ICIALLU;
158110037SARM gem5 Developers                  case 1:
158210037SARM gem5 Developers                    return MISCREG_ICIMVAU;
158310037SARM gem5 Developers                  case 4:
158410037SARM gem5 Developers                    return MISCREG_CP15ISB;
158510037SARM gem5 Developers                  case 6:
158610037SARM gem5 Developers                    return MISCREG_BPIALL;
158710037SARM gem5 Developers                  case 7:
158810037SARM gem5 Developers                    return MISCREG_BPIMVA;
158910037SARM gem5 Developers                }
159010037SARM gem5 Developers                break;
159110037SARM gem5 Developers              case 6:
159210037SARM gem5 Developers                if (opc2 == 1) {
159310037SARM gem5 Developers                    return MISCREG_DCIMVAC;
159410037SARM gem5 Developers                } else if (opc2 == 2) {
159510037SARM gem5 Developers                    return MISCREG_DCISW;
159610037SARM gem5 Developers                }
159710037SARM gem5 Developers                break;
159810037SARM gem5 Developers              case 8:
159910037SARM gem5 Developers                switch (opc2) {
160010037SARM gem5 Developers                  case 0:
160110037SARM gem5 Developers                    return MISCREG_ATS1CPR;
160210037SARM gem5 Developers                  case 1:
160310037SARM gem5 Developers                    return MISCREG_ATS1CPW;
160410037SARM gem5 Developers                  case 2:
160510037SARM gem5 Developers                    return MISCREG_ATS1CUR;
160610037SARM gem5 Developers                  case 3:
160710037SARM gem5 Developers                    return MISCREG_ATS1CUW;
160810037SARM gem5 Developers                  case 4:
160910037SARM gem5 Developers                    return MISCREG_ATS12NSOPR;
161010037SARM gem5 Developers                  case 5:
161110037SARM gem5 Developers                    return MISCREG_ATS12NSOPW;
161210037SARM gem5 Developers                  case 6:
161310037SARM gem5 Developers                    return MISCREG_ATS12NSOUR;
161410037SARM gem5 Developers                  case 7:
161510037SARM gem5 Developers                    return MISCREG_ATS12NSOUW;
161610037SARM gem5 Developers                }
161710037SARM gem5 Developers                break;
161810037SARM gem5 Developers              case 10:
161910037SARM gem5 Developers                switch (opc2) {
162010037SARM gem5 Developers                  case 1:
162110037SARM gem5 Developers                    return MISCREG_DCCMVAC;
162210037SARM gem5 Developers                  case 2:
162310037SARM gem5 Developers                    return MISCREG_DCCSW;
162410037SARM gem5 Developers                  case 4:
162510037SARM gem5 Developers                    return MISCREG_CP15DSB;
162610037SARM gem5 Developers                  case 5:
162710037SARM gem5 Developers                    return MISCREG_CP15DMB;
162810037SARM gem5 Developers                }
162910037SARM gem5 Developers                break;
163010037SARM gem5 Developers              case 11:
163110037SARM gem5 Developers                if (opc2 == 1) {
163210037SARM gem5 Developers                    return MISCREG_DCCMVAU;
163310037SARM gem5 Developers                }
163410037SARM gem5 Developers                break;
163510037SARM gem5 Developers              case 13:
163610037SARM gem5 Developers                if (opc2 == 1) {
163710037SARM gem5 Developers                    return MISCREG_NOP;
163810037SARM gem5 Developers                }
163910037SARM gem5 Developers                break;
164010037SARM gem5 Developers              case 14:
164110037SARM gem5 Developers                if (opc2 == 1) {
164210037SARM gem5 Developers                    return MISCREG_DCCIMVAC;
164310037SARM gem5 Developers                } else if (opc2 == 2) {
164410037SARM gem5 Developers                    return MISCREG_DCCISW;
164510037SARM gem5 Developers                }
164610037SARM gem5 Developers                break;
164710037SARM gem5 Developers            }
164810037SARM gem5 Developers        } else if (opc1 == 4 && crm == 8) {
164910037SARM gem5 Developers            if (opc2 == 0)
165010037SARM gem5 Developers                return MISCREG_ATS1HR;
165110037SARM gem5 Developers            else if (opc2 == 1)
165210037SARM gem5 Developers                return MISCREG_ATS1HW;
165310037SARM gem5 Developers        }
165410037SARM gem5 Developers        break;
165510037SARM gem5 Developers      case 8:
165610037SARM gem5 Developers        if (opc1 == 0) {
165710037SARM gem5 Developers            switch (crm) {
165810037SARM gem5 Developers              case 3:
165910037SARM gem5 Developers                switch (opc2) {
166010037SARM gem5 Developers                  case 0:
166110037SARM gem5 Developers                    return MISCREG_TLBIALLIS;
166210037SARM gem5 Developers                  case 1:
166310037SARM gem5 Developers                    return MISCREG_TLBIMVAIS;
166410037SARM gem5 Developers                  case 2:
166510037SARM gem5 Developers                    return MISCREG_TLBIASIDIS;
166610037SARM gem5 Developers                  case 3:
166710037SARM gem5 Developers                    return MISCREG_TLBIMVAAIS;
166810037SARM gem5 Developers                }
166910037SARM gem5 Developers                break;
167010037SARM gem5 Developers              case 5:
167110037SARM gem5 Developers                switch (opc2) {
167210037SARM gem5 Developers                  case 0:
167310037SARM gem5 Developers                    return MISCREG_ITLBIALL;
167410037SARM gem5 Developers                  case 1:
167510037SARM gem5 Developers                    return MISCREG_ITLBIMVA;
167610037SARM gem5 Developers                  case 2:
167710037SARM gem5 Developers                    return MISCREG_ITLBIASID;
167810037SARM gem5 Developers                }
167910037SARM gem5 Developers                break;
168010037SARM gem5 Developers              case 6:
168110037SARM gem5 Developers                switch (opc2) {
168210037SARM gem5 Developers                  case 0:
168310037SARM gem5 Developers                    return MISCREG_DTLBIALL;
168410037SARM gem5 Developers                  case 1:
168510037SARM gem5 Developers                    return MISCREG_DTLBIMVA;
168610037SARM gem5 Developers                  case 2:
168710037SARM gem5 Developers                    return MISCREG_DTLBIASID;
168810037SARM gem5 Developers                }
168910037SARM gem5 Developers                break;
169010037SARM gem5 Developers              case 7:
169110037SARM gem5 Developers                switch (opc2) {
169212675Sgiacomo.travaglini@arm.com                  case 0:
169312675Sgiacomo.travaglini@arm.com                    return MISCREG_TLBIALL;
169410037SARM gem5 Developers                  case 1:
169510037SARM gem5 Developers                    return MISCREG_TLBIMVA;
169610037SARM gem5 Developers                  case 2:
169710037SARM gem5 Developers                    return MISCREG_TLBIASID;
169810037SARM gem5 Developers                  case 3:
169910037SARM gem5 Developers                    return MISCREG_TLBIMVAA;
170010037SARM gem5 Developers                }
170110037SARM gem5 Developers                break;
170210037SARM gem5 Developers            }
170310037SARM gem5 Developers        } else if (opc1 == 4) {
170410037SARM gem5 Developers            if (crm == 3) {
170510037SARM gem5 Developers                switch (opc2) {
170610037SARM gem5 Developers                  case 0:
170710037SARM gem5 Developers                    return MISCREG_TLBIALLHIS;
170810037SARM gem5 Developers                  case 1:
170910037SARM gem5 Developers                    return MISCREG_TLBIMVAHIS;
171010037SARM gem5 Developers                  case 4:
171110037SARM gem5 Developers                    return MISCREG_TLBIALLNSNHIS;
171210037SARM gem5 Developers                }
171310037SARM gem5 Developers            } else if (crm == 7) {
171410037SARM gem5 Developers                switch (opc2) {
171510037SARM gem5 Developers                  case 0:
171610037SARM gem5 Developers                    return MISCREG_TLBIALLH;
171710037SARM gem5 Developers                  case 1:
171810037SARM gem5 Developers                    return MISCREG_TLBIMVAH;
171910037SARM gem5 Developers                  case 4:
172010037SARM gem5 Developers                    return MISCREG_TLBIALLNSNH;
172110037SARM gem5 Developers                }
172210037SARM gem5 Developers            }
172310037SARM gem5 Developers        }
172410037SARM gem5 Developers        break;
172510037SARM gem5 Developers      case 9:
172610037SARM gem5 Developers        if (opc1 == 0) {
172710037SARM gem5 Developers            switch (crm) {
172810037SARM gem5 Developers              case 12:
172910037SARM gem5 Developers                switch (opc2) {
173010037SARM gem5 Developers                  case 0:
173110037SARM gem5 Developers                    return MISCREG_PMCR;
173210037SARM gem5 Developers                  case 1:
173310037SARM gem5 Developers                    return MISCREG_PMCNTENSET;
173410037SARM gem5 Developers                  case 2:
173510037SARM gem5 Developers                    return MISCREG_PMCNTENCLR;
173610037SARM gem5 Developers                  case 3:
173710037SARM gem5 Developers                    return MISCREG_PMOVSR;
173810037SARM gem5 Developers                  case 4:
173910037SARM gem5 Developers                    return MISCREG_PMSWINC;
174010037SARM gem5 Developers                  case 5:
174110037SARM gem5 Developers                    return MISCREG_PMSELR;
174210037SARM gem5 Developers                  case 6:
174310037SARM gem5 Developers                    return MISCREG_PMCEID0;
174410037SARM gem5 Developers                  case 7:
174510037SARM gem5 Developers                    return MISCREG_PMCEID1;
174610037SARM gem5 Developers                }
174710037SARM gem5 Developers                break;
174810037SARM gem5 Developers              case 13:
174910037SARM gem5 Developers                switch (opc2) {
175010037SARM gem5 Developers                  case 0:
175110037SARM gem5 Developers                    return MISCREG_PMCCNTR;
175210037SARM gem5 Developers                  case 1:
175310037SARM gem5 Developers                    // Selector is PMSELR.SEL
175410037SARM gem5 Developers                    return MISCREG_PMXEVTYPER_PMCCFILTR;
175510037SARM gem5 Developers                  case 2:
175610037SARM gem5 Developers                    return MISCREG_PMXEVCNTR;
175710037SARM gem5 Developers                }
175810037SARM gem5 Developers                break;
175910037SARM gem5 Developers              case 14:
176010037SARM gem5 Developers                switch (opc2) {
176110037SARM gem5 Developers                  case 0:
176210037SARM gem5 Developers                    return MISCREG_PMUSERENR;
176310037SARM gem5 Developers                  case 1:
176410037SARM gem5 Developers                    return MISCREG_PMINTENSET;
176510037SARM gem5 Developers                  case 2:
176610037SARM gem5 Developers                    return MISCREG_PMINTENCLR;
176710037SARM gem5 Developers                  case 3:
176810037SARM gem5 Developers                    return MISCREG_PMOVSSET;
176910037SARM gem5 Developers                }
177010037SARM gem5 Developers                break;
177110037SARM gem5 Developers            }
177210037SARM gem5 Developers        } else if (opc1 == 1) {
177310037SARM gem5 Developers            switch (crm) {
177410037SARM gem5 Developers              case 0:
177510037SARM gem5 Developers                switch (opc2) {
177610037SARM gem5 Developers                  case 2: // L2CTLR, L2 Control Register
177710037SARM gem5 Developers                    return MISCREG_L2CTLR;
177810037SARM gem5 Developers                  case 3:
177910037SARM gem5 Developers                    return MISCREG_L2ECTLR;
178010037SARM gem5 Developers                }
178110037SARM gem5 Developers                break;
178210037SARM gem5 Developers                break;
178310037SARM gem5 Developers            }
178410037SARM gem5 Developers        }
178510037SARM gem5 Developers        break;
178610037SARM gem5 Developers      case 10:
178710037SARM gem5 Developers        if (opc1 == 0) {
178810037SARM gem5 Developers            // crm 0, 1, 4, and 8, with op2 0 - 7, reserved for TLB lockdown
178910037SARM gem5 Developers            if (crm == 2) { // TEX Remap Registers
179010037SARM gem5 Developers                if (opc2 == 0) {
179110037SARM gem5 Developers                    // Selector is TTBCR.EAE
179210037SARM gem5 Developers                    return MISCREG_PRRR_MAIR0;
179310037SARM gem5 Developers                } else if (opc2 == 1) {
179410037SARM gem5 Developers                    // Selector is TTBCR.EAE
179510037SARM gem5 Developers                    return MISCREG_NMRR_MAIR1;
179610037SARM gem5 Developers                }
179710037SARM gem5 Developers            } else if (crm == 3) {
179810037SARM gem5 Developers                if (opc2 == 0) {
179910037SARM gem5 Developers                    return MISCREG_AMAIR0;
180010037SARM gem5 Developers                } else if (opc2 == 1) {
180110037SARM gem5 Developers                    return MISCREG_AMAIR1;
180210037SARM gem5 Developers                }
180310037SARM gem5 Developers            }
180410037SARM gem5 Developers        } else if (opc1 == 4) {
180510037SARM gem5 Developers            // crm 0, 1, 4, and 8, with op2 0 - 7, reserved for TLB lockdown
180610037SARM gem5 Developers            if (crm == 2) {
180710037SARM gem5 Developers                if (opc2 == 0)
180810037SARM gem5 Developers                    return MISCREG_HMAIR0;
180910037SARM gem5 Developers                else if (opc2 == 1)
181010037SARM gem5 Developers                    return MISCREG_HMAIR1;
181110037SARM gem5 Developers            } else if (crm == 3) {
181210037SARM gem5 Developers                if (opc2 == 0)
181310037SARM gem5 Developers                    return MISCREG_HAMAIR0;
181410037SARM gem5 Developers                else if (opc2 == 1)
181510037SARM gem5 Developers                    return MISCREG_HAMAIR1;
181610037SARM gem5 Developers            }
181710037SARM gem5 Developers        }
181810037SARM gem5 Developers        break;
181910037SARM gem5 Developers      case 11:
182010037SARM gem5 Developers        if (opc1 <=7) {
182110037SARM gem5 Developers            switch (crm) {
182210037SARM gem5 Developers              case 0:
182310037SARM gem5 Developers              case 1:
182410037SARM gem5 Developers              case 2:
182510037SARM gem5 Developers              case 3:
182610037SARM gem5 Developers              case 4:
182710037SARM gem5 Developers              case 5:
182810037SARM gem5 Developers              case 6:
182910037SARM gem5 Developers              case 7:
183010037SARM gem5 Developers              case 8:
183110037SARM gem5 Developers              case 15:
183210037SARM gem5 Developers                // Reserved for DMA operations for TCM access
183310037SARM gem5 Developers                break;
183410037SARM gem5 Developers            }
183510037SARM gem5 Developers        }
183610037SARM gem5 Developers        break;
183710037SARM gem5 Developers      case 12:
183810037SARM gem5 Developers        if (opc1 == 0) {
183910037SARM gem5 Developers            if (crm == 0) {
184010037SARM gem5 Developers                if (opc2 == 0) {
184110037SARM gem5 Developers                    return MISCREG_VBAR;
184210037SARM gem5 Developers                } else if (opc2 == 1) {
184310037SARM gem5 Developers                    return MISCREG_MVBAR;
184410037SARM gem5 Developers                }
184510037SARM gem5 Developers            } else if (crm == 1) {
184610037SARM gem5 Developers                if (opc2 == 0) {
184710037SARM gem5 Developers                    return MISCREG_ISR;
184810037SARM gem5 Developers                }
184910037SARM gem5 Developers            }
185010037SARM gem5 Developers        } else if (opc1 == 4) {
185110037SARM gem5 Developers            if (crm == 0 && opc2 == 0)
185210037SARM gem5 Developers                return MISCREG_HVBAR;
185310037SARM gem5 Developers        }
185410037SARM gem5 Developers        break;
185510037SARM gem5 Developers      case 13:
185610037SARM gem5 Developers        if (opc1 == 0) {
185710037SARM gem5 Developers            if (crm == 0) {
185810037SARM gem5 Developers                switch (opc2) {
185910037SARM gem5 Developers                  case 0:
186012815Sgiacomo.travaglini@arm.com                    return MISCREG_FCSEIDR;
186112815Sgiacomo.travaglini@arm.com                  case 1:
186212815Sgiacomo.travaglini@arm.com                    return MISCREG_CONTEXTIDR;
186312815Sgiacomo.travaglini@arm.com                  case 2:
186412815Sgiacomo.travaglini@arm.com                    return MISCREG_TPIDRURW;
186512815Sgiacomo.travaglini@arm.com                  case 3:
186612815Sgiacomo.travaglini@arm.com                    return MISCREG_TPIDRURO;
186712815Sgiacomo.travaglini@arm.com                  case 4:
186812815Sgiacomo.travaglini@arm.com                    return MISCREG_TPIDRPRW;
186912815Sgiacomo.travaglini@arm.com                }
187012815Sgiacomo.travaglini@arm.com            }
187112815Sgiacomo.travaglini@arm.com        } else if (opc1 == 4) {
187212815Sgiacomo.travaglini@arm.com            if (crm == 0 && opc2 == 2)
187312815Sgiacomo.travaglini@arm.com                return MISCREG_HTPIDR;
187412815Sgiacomo.travaglini@arm.com        }
187512815Sgiacomo.travaglini@arm.com        break;
187612815Sgiacomo.travaglini@arm.com      case 14:
187712815Sgiacomo.travaglini@arm.com        if (opc1 == 0) {
187812815Sgiacomo.travaglini@arm.com            switch (crm) {
187912815Sgiacomo.travaglini@arm.com              case 0:
188012815Sgiacomo.travaglini@arm.com                if (opc2 == 0)
188112815Sgiacomo.travaglini@arm.com                    return MISCREG_CNTFRQ;
188212815Sgiacomo.travaglini@arm.com                break;
188312815Sgiacomo.travaglini@arm.com              case 1:
188412815Sgiacomo.travaglini@arm.com                if (opc2 == 0)
188512815Sgiacomo.travaglini@arm.com                    return MISCREG_CNTKCTL;
188612815Sgiacomo.travaglini@arm.com                break;
188712815Sgiacomo.travaglini@arm.com              case 2:
188810037SARM gem5 Developers                if (opc2 == 0)
188910037SARM gem5 Developers                    return MISCREG_CNTP_TVAL;
189010037SARM gem5 Developers                else if (opc2 == 1)
189110037SARM gem5 Developers                    return MISCREG_CNTP_CTL;
189210037SARM gem5 Developers                break;
189310037SARM gem5 Developers              case 3:
189410037SARM gem5 Developers                if (opc2 == 0)
189510037SARM gem5 Developers                    return MISCREG_CNTV_TVAL;
189610037SARM gem5 Developers                else if (opc2 == 1)
189710037SARM gem5 Developers                    return MISCREG_CNTV_CTL;
189810037SARM gem5 Developers                break;
189910037SARM gem5 Developers            }
190010037SARM gem5 Developers        } else if (opc1 == 4) {
190110037SARM gem5 Developers            if (crm == 1 && opc2 == 0) {
190210037SARM gem5 Developers                return MISCREG_CNTHCTL;
190310037SARM gem5 Developers            } else if (crm == 2) {
190410037SARM gem5 Developers                if (opc2 == 0)
190510037SARM gem5 Developers                    return MISCREG_CNTHP_TVAL;
190610037SARM gem5 Developers                else if (opc2 == 1)
190710037SARM gem5 Developers                    return MISCREG_CNTHP_CTL;
190810037SARM gem5 Developers            }
190910037SARM gem5 Developers        }
191012815Sgiacomo.travaglini@arm.com        break;
191112815Sgiacomo.travaglini@arm.com      case 15:
191210037SARM gem5 Developers        // Implementation defined
191310037SARM gem5 Developers        return MISCREG_CP15_UNIMPL;
191410037SARM gem5 Developers    }
191510037SARM gem5 Developers    // Unrecognized register
191610037SARM gem5 Developers    return MISCREG_CP15_UNIMPL;
191710037SARM gem5 Developers}
191810037SARM gem5 Developers
191910037SARM gem5 DevelopersMiscRegIndex
192010037SARM gem5 DevelopersdecodeCP15Reg64(unsigned crm, unsigned opc1)
192110037SARM gem5 Developers{
192210037SARM gem5 Developers    switch (crm) {
192310037SARM gem5 Developers      case 2:
192410037SARM gem5 Developers        switch (opc1) {
192510037SARM gem5 Developers          case 0:
192610037SARM gem5 Developers            return MISCREG_TTBR0;
192710037SARM gem5 Developers          case 1:
192810037SARM gem5 Developers            return MISCREG_TTBR1;
192910037SARM gem5 Developers          case 4:
193010037SARM gem5 Developers            return MISCREG_HTTBR;
193110037SARM gem5 Developers          case 6:
193210037SARM gem5 Developers            return MISCREG_VTTBR;
193310037SARM gem5 Developers        }
193410037SARM gem5 Developers        break;
193510037SARM gem5 Developers      case 7:
193610037SARM gem5 Developers        if (opc1 == 0)
193710037SARM gem5 Developers            return MISCREG_PAR;
193810037SARM gem5 Developers        break;
193910037SARM gem5 Developers      case 14:
194010037SARM gem5 Developers        switch (opc1) {
194110037SARM gem5 Developers          case 0:
194210037SARM gem5 Developers            return MISCREG_CNTPCT;
194310037SARM gem5 Developers          case 1:
194410037SARM gem5 Developers            return MISCREG_CNTVCT;
194510037SARM gem5 Developers          case 2:
194610037SARM gem5 Developers            return MISCREG_CNTP_CVAL;
194710037SARM gem5 Developers          case 3:
194810037SARM gem5 Developers            return MISCREG_CNTV_CVAL;
194910037SARM gem5 Developers          case 4:
195010037SARM gem5 Developers            return MISCREG_CNTVOFF;
195110037SARM gem5 Developers          case 6:
195210037SARM gem5 Developers            return MISCREG_CNTHP_CVAL;
195310037SARM gem5 Developers        }
195410037SARM gem5 Developers        break;
195510037SARM gem5 Developers      case 15:
195610037SARM gem5 Developers        if (opc1 == 0)
195710037SARM gem5 Developers            return MISCREG_CPUMERRSR;
195810037SARM gem5 Developers        else if (opc1 == 1)
195910037SARM gem5 Developers            return MISCREG_L2MERRSR;
196010037SARM gem5 Developers        break;
196110037SARM gem5 Developers    }
196210037SARM gem5 Developers    // Unrecognized register
196310037SARM gem5 Developers    return MISCREG_CP15_UNIMPL;
196410037SARM gem5 Developers}
196510037SARM gem5 Developers
196610037SARM gem5 Developersbool
196710037SARM gem5 DeveloperscanReadCoprocReg(MiscRegIndex reg, SCR scr, CPSR cpsr, ThreadContext *tc)
196810037SARM gem5 Developers{
196910037SARM gem5 Developers    bool secure = !scr.ns;
197010037SARM gem5 Developers    bool canRead;
197110037SARM gem5 Developers
197210037SARM gem5 Developers    switch (cpsr.mode) {
197310037SARM gem5 Developers      case MODE_USER:
197410037SARM gem5 Developers        canRead = secure ? miscRegInfo[reg][MISCREG_USR_S_RD] :
197510037SARM gem5 Developers                           miscRegInfo[reg][MISCREG_USR_NS_RD];
197610037SARM gem5 Developers        break;
197710037SARM gem5 Developers      case MODE_FIQ:
197810037SARM gem5 Developers      case MODE_IRQ:
197910037SARM gem5 Developers      case MODE_SVC:
198010037SARM gem5 Developers      case MODE_ABORT:
198110037SARM gem5 Developers      case MODE_UNDEFINED:
198210037SARM gem5 Developers      case MODE_SYSTEM:
198310037SARM gem5 Developers        canRead = secure ? miscRegInfo[reg][MISCREG_PRI_S_RD] :
198410037SARM gem5 Developers                           miscRegInfo[reg][MISCREG_PRI_NS_RD];
198510037SARM gem5 Developers        break;
198610037SARM gem5 Developers      case MODE_MON:
198710037SARM gem5 Developers        canRead = secure ? miscRegInfo[reg][MISCREG_MON_NS0_RD] :
198810037SARM gem5 Developers                           miscRegInfo[reg][MISCREG_MON_NS1_RD];
198910037SARM gem5 Developers        break;
199010037SARM gem5 Developers      case MODE_HYP:
199110037SARM gem5 Developers        canRead = miscRegInfo[reg][MISCREG_HYP_RD];
199210037SARM gem5 Developers        break;
199310037SARM gem5 Developers      default:
199410037SARM gem5 Developers        panic("Unrecognized mode setting in CPSR.\n");
199510037SARM gem5 Developers    }
199610037SARM gem5 Developers    // can't do permissions checkes on the root of a banked pair of regs
199710037SARM gem5 Developers    assert(!miscRegInfo[reg][MISCREG_BANKED]);
199810037SARM gem5 Developers    return canRead;
199910037SARM gem5 Developers}
200010037SARM gem5 Developers
200110037SARM gem5 Developersbool
200210037SARM gem5 DeveloperscanWriteCoprocReg(MiscRegIndex reg, SCR scr, CPSR cpsr, ThreadContext *tc)
200310037SARM gem5 Developers{
200410037SARM gem5 Developers    bool secure = !scr.ns;
200510037SARM gem5 Developers    bool canWrite;
200610037SARM gem5 Developers
200710037SARM gem5 Developers    switch (cpsr.mode) {
200810037SARM gem5 Developers      case MODE_USER:
200910037SARM gem5 Developers        canWrite = secure ? miscRegInfo[reg][MISCREG_USR_S_WR] :
201010037SARM gem5 Developers                            miscRegInfo[reg][MISCREG_USR_NS_WR];
201110037SARM gem5 Developers        break;
201210037SARM gem5 Developers      case MODE_FIQ:
201310037SARM gem5 Developers      case MODE_IRQ:
201410037SARM gem5 Developers      case MODE_SVC:
201510037SARM gem5 Developers      case MODE_ABORT:
201610037SARM gem5 Developers      case MODE_UNDEFINED:
201710037SARM gem5 Developers      case MODE_SYSTEM:
201810037SARM gem5 Developers        canWrite = secure ? miscRegInfo[reg][MISCREG_PRI_S_WR] :
201910037SARM gem5 Developers                            miscRegInfo[reg][MISCREG_PRI_NS_WR];
202010037SARM gem5 Developers        break;
202110037SARM gem5 Developers      case MODE_MON:
202210037SARM gem5 Developers        canWrite = secure ? miscRegInfo[reg][MISCREG_MON_NS0_WR] :
202310037SARM gem5 Developers                            miscRegInfo[reg][MISCREG_MON_NS1_WR];
202410037SARM gem5 Developers        break;
202510037SARM gem5 Developers      case MODE_HYP:
202610037SARM gem5 Developers        canWrite =  miscRegInfo[reg][MISCREG_HYP_WR];
202710037SARM gem5 Developers        break;
202810037SARM gem5 Developers      default:
202910037SARM gem5 Developers        panic("Unrecognized mode setting in CPSR.\n");
203010037SARM gem5 Developers    }
203110037SARM gem5 Developers    // can't do permissions checkes on the root of a banked pair of regs
203210037SARM gem5 Developers    assert(!miscRegInfo[reg][MISCREG_BANKED]);
203310604SAndreas.Sandberg@ARM.com    return canWrite;
203410037SARM gem5 Developers}
203510037SARM gem5 Developers
203610037SARM gem5 Developersint
203710037SARM gem5 DevelopersflattenMiscRegNsBanked(MiscRegIndex reg, ThreadContext *tc)
203810037SARM gem5 Developers{
203910037SARM gem5 Developers    int reg_as_int = static_cast<int>(reg);
204010037SARM gem5 Developers    if (miscRegInfo[reg][MISCREG_BANKED]) {
204110037SARM gem5 Developers        SCR scr = tc->readMiscReg(MISCREG_SCR);
204210037SARM gem5 Developers        reg_as_int += (ArmSystem::haveSecurity(tc) && !scr.ns) ? 2 : 1;
204310037SARM gem5 Developers    }
204410037SARM gem5 Developers    return reg_as_int;
204510037SARM gem5 Developers}
204610037SARM gem5 Developers
204710037SARM gem5 Developersint
204810037SARM gem5 DevelopersflattenMiscRegNsBanked(MiscRegIndex reg, ThreadContext *tc, bool ns)
204910037SARM gem5 Developers{
205010037SARM gem5 Developers    int reg_as_int = static_cast<int>(reg);
205110037SARM gem5 Developers    if (miscRegInfo[reg][MISCREG_BANKED]) {
205210037SARM gem5 Developers        reg_as_int += (ArmSystem::haveSecurity(tc) && !ns) ? 2 : 1;
205310037SARM gem5 Developers    }
205410037SARM gem5 Developers    return reg_as_int;
205510037SARM gem5 Developers}
205610037SARM gem5 Developers
205710037SARM gem5 Developers
205810037SARM gem5 Developers/**
205910037SARM gem5 Developers * If the reg is a child reg of a banked set, then the parent is the last
206010037SARM gem5 Developers * banked one in the list. This is messy, and the wish is to eventually have
206110037SARM gem5 Developers * the bitmap replaced with a better data structure. the preUnflatten function
206210037SARM gem5 Developers * initializes a lookup table to speed up the search for these banked
206310037SARM gem5 Developers * registers.
206410037SARM gem5 Developers */
206510037SARM gem5 Developers
206610037SARM gem5 Developersint unflattenResultMiscReg[NUM_MISCREGS];
206710037SARM gem5 Developers
206810037SARM gem5 Developersvoid
206910037SARM gem5 DeveloperspreUnflattenMiscReg()
207010037SARM gem5 Developers{
207110037SARM gem5 Developers    int reg = -1;
207210037SARM gem5 Developers    for (int i = 0 ; i < NUM_MISCREGS; i++){
207310037SARM gem5 Developers        if (miscRegInfo[i][MISCREG_BANKED])
207410037SARM gem5 Developers            reg = i;
207510037SARM gem5 Developers        if (miscRegInfo[i][MISCREG_BANKED_CHILD])
207610037SARM gem5 Developers            unflattenResultMiscReg[i] = reg;
207710037SARM gem5 Developers        else
207810037SARM gem5 Developers            unflattenResultMiscReg[i] = i;
207910037SARM gem5 Developers        // if this assert fails, no parent was found, and something is broken
208010037SARM gem5 Developers        assert(unflattenResultMiscReg[i] > -1);
208110037SARM gem5 Developers    }
208210037SARM gem5 Developers}
208310037SARM gem5 Developers
208410037SARM gem5 Developersint
208510037SARM gem5 DevelopersunflattenMiscReg(int reg)
208610037SARM gem5 Developers{
208710037SARM gem5 Developers    return unflattenResultMiscReg[reg];
208810037SARM gem5 Developers}
208910037SARM gem5 Developers
209010037SARM gem5 Developersbool
209110037SARM gem5 DeveloperscanReadAArch64SysReg(MiscRegIndex reg, SCR scr, CPSR cpsr, ThreadContext *tc)
209210037SARM gem5 Developers{
209310037SARM gem5 Developers    // Check for SP_EL0 access while SPSEL == 0
209410037SARM gem5 Developers    if ((reg == MISCREG_SP_EL0) && (tc->readMiscReg(MISCREG_SPSEL) == 0))
209510037SARM gem5 Developers        return false;
209610037SARM gem5 Developers
209710037SARM gem5 Developers    // Check for RVBAR access
209810037SARM gem5 Developers    if (reg == MISCREG_RVBAR_EL1) {
209910037SARM gem5 Developers        ExceptionLevel highest_el = ArmSystem::highestEL(tc);
210010037SARM gem5 Developers        if (highest_el == EL2 || highest_el == EL3)
210110037SARM gem5 Developers            return false;
210210037SARM gem5 Developers    }
210310037SARM gem5 Developers    if (reg == MISCREG_RVBAR_EL2) {
210410037SARM gem5 Developers        ExceptionLevel highest_el = ArmSystem::highestEL(tc);
210510037SARM gem5 Developers        if (highest_el == EL3)
210610037SARM gem5 Developers            return false;
210710037SARM gem5 Developers    }
210810037SARM gem5 Developers
210910037SARM gem5 Developers    bool secure = ArmSystem::haveSecurity(tc) && !scr.ns;
211010037SARM gem5 Developers
211110037SARM gem5 Developers    switch (opModeToEL((OperatingMode) (uint8_t) cpsr.mode)) {
211210037SARM gem5 Developers      case EL0:
211310037SARM gem5 Developers        return secure ? miscRegInfo[reg][MISCREG_USR_S_RD] :
211410037SARM gem5 Developers            miscRegInfo[reg][MISCREG_USR_NS_RD];
211512711Sgiacomo.travaglini@arm.com      case EL1:
211612711Sgiacomo.travaglini@arm.com        return secure ? miscRegInfo[reg][MISCREG_PRI_S_RD] :
211712711Sgiacomo.travaglini@arm.com            miscRegInfo[reg][MISCREG_PRI_NS_RD];
211812711Sgiacomo.travaglini@arm.com      // @todo: uncomment this to enable Virtualization
211910037SARM gem5 Developers      // case EL2:
212012711Sgiacomo.travaglini@arm.com      //   return miscRegInfo[reg][MISCREG_HYP_RD];
212110037SARM gem5 Developers      case EL3:
212210037SARM gem5 Developers        return secure ? miscRegInfo[reg][MISCREG_MON_NS0_RD] :
212310037SARM gem5 Developers            miscRegInfo[reg][MISCREG_MON_NS1_RD];
212410037SARM gem5 Developers      default:
212510037SARM gem5 Developers        panic("Invalid exception level");
212610037SARM gem5 Developers    }
212710037SARM gem5 Developers}
212810037SARM gem5 Developers
212910037SARM gem5 Developersbool
213010037SARM gem5 DeveloperscanWriteAArch64SysReg(MiscRegIndex reg, SCR scr, CPSR cpsr, ThreadContext *tc)
213110037SARM gem5 Developers{
213210037SARM gem5 Developers    // Check for SP_EL0 access while SPSEL == 0
213310037SARM gem5 Developers    if ((reg == MISCREG_SP_EL0) && (tc->readMiscReg(MISCREG_SPSEL) == 0))
213410037SARM gem5 Developers        return false;
213510037SARM gem5 Developers    ExceptionLevel el = opModeToEL((OperatingMode) (uint8_t) cpsr.mode);
213610037SARM gem5 Developers    if (reg == MISCREG_DAIF) {
213712815Sgiacomo.travaglini@arm.com        SCTLR sctlr = tc->readMiscReg(MISCREG_SCTLR_EL1);
213812815Sgiacomo.travaglini@arm.com        if (el == EL0 && !sctlr.uma)
213910037SARM gem5 Developers            return false;
214010037SARM gem5 Developers    }
214110037SARM gem5 Developers    if (reg == MISCREG_DC_ZVA_Xt) {
214210037SARM gem5 Developers        SCTLR sctlr = tc->readMiscReg(MISCREG_SCTLR_EL1);
214310037SARM gem5 Developers        if (el == EL0 && !sctlr.dze)
214410037SARM gem5 Developers            return false;
214510037SARM gem5 Developers    }
214610037SARM gem5 Developers    if (reg == MISCREG_DC_CVAC_Xt || reg == MISCREG_DC_CIVAC_Xt) {
214710037SARM gem5 Developers        SCTLR sctlr = tc->readMiscReg(MISCREG_SCTLR_EL1);
214810037SARM gem5 Developers        if (el == EL0 && !sctlr.uci)
214910037SARM gem5 Developers            return false;
215010037SARM gem5 Developers    }
215110037SARM gem5 Developers
215210037SARM gem5 Developers    bool secure = ArmSystem::haveSecurity(tc) && !scr.ns;
215312815Sgiacomo.travaglini@arm.com
215412815Sgiacomo.travaglini@arm.com    switch (el) {
215512815Sgiacomo.travaglini@arm.com      case EL0:
215612815Sgiacomo.travaglini@arm.com        return secure ? miscRegInfo[reg][MISCREG_USR_S_WR] :
215712815Sgiacomo.travaglini@arm.com            miscRegInfo[reg][MISCREG_USR_NS_WR];
215812815Sgiacomo.travaglini@arm.com      case EL1:
215910037SARM gem5 Developers        return secure ? miscRegInfo[reg][MISCREG_PRI_S_WR] :
216010037SARM gem5 Developers            miscRegInfo[reg][MISCREG_PRI_NS_WR];
216110037SARM gem5 Developers      // @todo: uncomment this to enable Virtualization
216210037SARM gem5 Developers      // case EL2:
216310037SARM gem5 Developers      //   return miscRegInfo[reg][MISCREG_HYP_WR];
216410037SARM gem5 Developers      case EL3:
216510037SARM gem5 Developers        return secure ? miscRegInfo[reg][MISCREG_MON_NS0_WR] :
216610037SARM gem5 Developers            miscRegInfo[reg][MISCREG_MON_NS1_WR];
216710037SARM gem5 Developers      default:
216810037SARM gem5 Developers        panic("Invalid exception level");
216910037SARM gem5 Developers    }
217010037SARM gem5 Developers}
217110037SARM gem5 Developers
217210037SARM gem5 DevelopersMiscRegIndex
217310037SARM gem5 DevelopersdecodeAArch64SysReg(unsigned op0, unsigned op1,
217410037SARM gem5 Developers                    unsigned crn, unsigned crm,
217510037SARM gem5 Developers                    unsigned op2)
217610037SARM gem5 Developers{
217710037SARM gem5 Developers    switch (op0) {
217810037SARM gem5 Developers      case 1:
217910037SARM gem5 Developers        switch (crn) {
218010037SARM gem5 Developers          case 7:
218110037SARM gem5 Developers            switch (op1) {
218210037SARM gem5 Developers              case 0:
218310037SARM gem5 Developers                switch (crm) {
218410037SARM gem5 Developers                  case 1:
218510037SARM gem5 Developers                    switch (op2) {
218610037SARM gem5 Developers                      case 0:
218710037SARM gem5 Developers                        return MISCREG_IC_IALLUIS;
218810037SARM gem5 Developers                    }
218910037SARM gem5 Developers                    break;
219010037SARM gem5 Developers                  case 5:
219110037SARM gem5 Developers                    switch (op2) {
219210037SARM gem5 Developers                      case 0:
219310037SARM gem5 Developers                        return MISCREG_IC_IALLU;
219410037SARM gem5 Developers                    }
219510037SARM gem5 Developers                    break;
219610037SARM gem5 Developers                  case 6:
219710037SARM gem5 Developers                    switch (op2) {
219810037SARM gem5 Developers                      case 1:
219910037SARM gem5 Developers                        return MISCREG_DC_IVAC_Xt;
220010037SARM gem5 Developers                      case 2:
220110037SARM gem5 Developers                        return MISCREG_DC_ISW_Xt;
220210037SARM gem5 Developers                    }
220310037SARM gem5 Developers                    break;
220410037SARM gem5 Developers                  case 8:
220510037SARM gem5 Developers                    switch (op2) {
220610037SARM gem5 Developers                      case 0:
220710856SCurtis.Dunham@arm.com                        return MISCREG_AT_S1E1R_Xt;
220810856SCurtis.Dunham@arm.com                      case 1:
220910037SARM gem5 Developers                        return MISCREG_AT_S1E1W_Xt;
221010037SARM gem5 Developers                      case 2:
221110037SARM gem5 Developers                        return MISCREG_AT_S1E0R_Xt;
221210037SARM gem5 Developers                      case 3:
221310037SARM gem5 Developers                        return MISCREG_AT_S1E0W_Xt;
221410037SARM gem5 Developers                    }
221510037SARM gem5 Developers                    break;
221610037SARM gem5 Developers                  case 10:
221710037SARM gem5 Developers                    switch (op2) {
221810037SARM gem5 Developers                      case 2:
221910037SARM gem5 Developers                        return MISCREG_DC_CSW_Xt;
222010037SARM gem5 Developers                    }
222110037SARM gem5 Developers                    break;
222210037SARM gem5 Developers                  case 14:
222310037SARM gem5 Developers                    switch (op2) {
222410037SARM gem5 Developers                      case 2:
222510037SARM gem5 Developers                        return MISCREG_DC_CISW_Xt;
222610037SARM gem5 Developers                    }
222710037SARM gem5 Developers                    break;
222810037SARM gem5 Developers                }
222910037SARM gem5 Developers                break;
223010037SARM gem5 Developers              case 3:
223110037SARM gem5 Developers                switch (crm) {
223210037SARM gem5 Developers                  case 4:
223310037SARM gem5 Developers                    switch (op2) {
223410037SARM gem5 Developers                      case 1:
223510037SARM gem5 Developers                        return MISCREG_DC_ZVA_Xt;
223610037SARM gem5 Developers                    }
223710037SARM gem5 Developers                    break;
223810037SARM gem5 Developers                  case 5:
223910037SARM gem5 Developers                    switch (op2) {
224010037SARM gem5 Developers                      case 1:
224110037SARM gem5 Developers                        return MISCREG_IC_IVAU_Xt;
224210037SARM gem5 Developers                    }
224310037SARM gem5 Developers                    break;
224410037SARM gem5 Developers                  case 10:
224510037SARM gem5 Developers                    switch (op2) {
224610037SARM gem5 Developers                      case 1:
224710037SARM gem5 Developers                        return MISCREG_DC_CVAC_Xt;
224810037SARM gem5 Developers                    }
224910037SARM gem5 Developers                    break;
225010037SARM gem5 Developers                  case 11:
225110037SARM gem5 Developers                    switch (op2) {
225210037SARM gem5 Developers                      case 1:
225310037SARM gem5 Developers                        return MISCREG_DC_CVAU_Xt;
225410037SARM gem5 Developers                    }
225510037SARM gem5 Developers                    break;
225610037SARM gem5 Developers                  case 14:
225710037SARM gem5 Developers                    switch (op2) {
225810037SARM gem5 Developers                      case 1:
225910037SARM gem5 Developers                        return MISCREG_DC_CIVAC_Xt;
226010037SARM gem5 Developers                    }
226110037SARM gem5 Developers                    break;
226210037SARM gem5 Developers                }
226310037SARM gem5 Developers                break;
226410037SARM gem5 Developers              case 4:
226510037SARM gem5 Developers                switch (crm) {
226610037SARM gem5 Developers                  case 8:
226710037SARM gem5 Developers                    switch (op2) {
226810037SARM gem5 Developers                      case 0:
226910037SARM gem5 Developers                        return MISCREG_AT_S1E2R_Xt;
227010037SARM gem5 Developers                      case 1:
227110037SARM gem5 Developers                        return MISCREG_AT_S1E2W_Xt;
227210037SARM gem5 Developers                      case 4:
227310037SARM gem5 Developers                        return MISCREG_AT_S12E1R_Xt;
227410037SARM gem5 Developers                      case 5:
227510037SARM gem5 Developers                        return MISCREG_AT_S12E1W_Xt;
227610037SARM gem5 Developers                      case 6:
227710037SARM gem5 Developers                        return MISCREG_AT_S12E0R_Xt;
227810037SARM gem5 Developers                      case 7:
227910037SARM gem5 Developers                        return MISCREG_AT_S12E0W_Xt;
228010037SARM gem5 Developers                    }
228110037SARM gem5 Developers                    break;
228210037SARM gem5 Developers                }
228310037SARM gem5 Developers                break;
228410037SARM gem5 Developers              case 6:
228510037SARM gem5 Developers                switch (crm) {
228610037SARM gem5 Developers                  case 8:
228710037SARM gem5 Developers                    switch (op2) {
228810037SARM gem5 Developers                      case 0:
228910037SARM gem5 Developers                        return MISCREG_AT_S1E3R_Xt;
229010037SARM gem5 Developers                      case 1:
229110037SARM gem5 Developers                        return MISCREG_AT_S1E3W_Xt;
229210037SARM gem5 Developers                    }
229310037SARM gem5 Developers                    break;
229410037SARM gem5 Developers                }
229510037SARM gem5 Developers                break;
229610037SARM gem5 Developers            }
229710037SARM gem5 Developers            break;
229810037SARM gem5 Developers          case 8:
229910037SARM gem5 Developers            switch (op1) {
230010037SARM gem5 Developers              case 0:
230110037SARM gem5 Developers                switch (crm) {
230210037SARM gem5 Developers                  case 3:
230310604SAndreas.Sandberg@ARM.com                    switch (op2) {
230410604SAndreas.Sandberg@ARM.com                      case 0:
230510604SAndreas.Sandberg@ARM.com                        return MISCREG_TLBI_VMALLE1IS;
230610604SAndreas.Sandberg@ARM.com                      case 1:
230710604SAndreas.Sandberg@ARM.com                        return MISCREG_TLBI_VAE1IS_Xt;
230810037SARM gem5 Developers                      case 2:
230910037SARM gem5 Developers                        return MISCREG_TLBI_ASIDE1IS_Xt;
231010037SARM gem5 Developers                      case 3:
231110037SARM gem5 Developers                        return MISCREG_TLBI_VAAE1IS_Xt;
231210037SARM gem5 Developers                      case 5:
231310037SARM gem5 Developers                        return MISCREG_TLBI_VALE1IS_Xt;
231410037SARM gem5 Developers                      case 7:
231510037SARM gem5 Developers                        return MISCREG_TLBI_VAALE1IS_Xt;
231610037SARM gem5 Developers                    }
231710037SARM gem5 Developers                    break;
231810037SARM gem5 Developers                  case 7:
231910037SARM gem5 Developers                    switch (op2) {
232010037SARM gem5 Developers                      case 0:
232110037SARM gem5 Developers                        return MISCREG_TLBI_VMALLE1;
232210037SARM gem5 Developers                      case 1:
232310037SARM gem5 Developers                        return MISCREG_TLBI_VAE1_Xt;
232410037SARM gem5 Developers                      case 2:
232510037SARM gem5 Developers                        return MISCREG_TLBI_ASIDE1_Xt;
232610037SARM gem5 Developers                      case 3:
232710037SARM gem5 Developers                        return MISCREG_TLBI_VAAE1_Xt;
232810037SARM gem5 Developers                      case 5:
232910037SARM gem5 Developers                        return MISCREG_TLBI_VALE1_Xt;
233010037SARM gem5 Developers                      case 7:
233110037SARM gem5 Developers                        return MISCREG_TLBI_VAALE1_Xt;
233210037SARM gem5 Developers                    }
233310037SARM gem5 Developers                    break;
233412816Sgiacomo.travaglini@arm.com                }
233512816Sgiacomo.travaglini@arm.com                break;
233612816Sgiacomo.travaglini@arm.com              case 4:
233712816Sgiacomo.travaglini@arm.com                switch (crm) {
233812816Sgiacomo.travaglini@arm.com                  case 0:
233912816Sgiacomo.travaglini@arm.com                    switch (op2) {
234012816Sgiacomo.travaglini@arm.com                      case 1:
234112816Sgiacomo.travaglini@arm.com                        return MISCREG_TLBI_IPAS2E1IS_Xt;
234212816Sgiacomo.travaglini@arm.com                      case 5:
234312816Sgiacomo.travaglini@arm.com                        return MISCREG_TLBI_IPAS2LE1IS_Xt;
234410037SARM gem5 Developers                    }
234510037SARM gem5 Developers                    break;
234610037SARM gem5 Developers                  case 3:
234710037SARM gem5 Developers                    switch (op2) {
234810037SARM gem5 Developers                      case 0:
234910037SARM gem5 Developers                        return MISCREG_TLBI_ALLE2IS;
235010037SARM gem5 Developers                      case 1:
235110037SARM gem5 Developers                        return MISCREG_TLBI_VAE2IS_Xt;
235210037SARM gem5 Developers                      case 4:
235310037SARM gem5 Developers                        return MISCREG_TLBI_ALLE1IS;
235410037SARM gem5 Developers                      case 5:
235510037SARM gem5 Developers                        return MISCREG_TLBI_VALE2IS_Xt;
235610037SARM gem5 Developers                      case 6:
235710037SARM gem5 Developers                        return MISCREG_TLBI_VMALLS12E1IS;
235810037SARM gem5 Developers                    }
235910037SARM gem5 Developers                    break;
236010037SARM gem5 Developers                  case 4:
236110037SARM gem5 Developers                    switch (op2) {
236210037SARM gem5 Developers                      case 1:
236310037SARM gem5 Developers                        return MISCREG_TLBI_IPAS2E1_Xt;
236410037SARM gem5 Developers                      case 5:
236510037SARM gem5 Developers                        return MISCREG_TLBI_IPAS2LE1_Xt;
236610037SARM gem5 Developers                    }
236710037SARM gem5 Developers                    break;
236810037SARM gem5 Developers                  case 7:
236910037SARM gem5 Developers                    switch (op2) {
237010037SARM gem5 Developers                      case 0:
237110037SARM gem5 Developers                        return MISCREG_TLBI_ALLE2;
237210037SARM gem5 Developers                      case 1:
237310037SARM gem5 Developers                        return MISCREG_TLBI_VAE2_Xt;
237410037SARM gem5 Developers                      case 4:
237510037SARM gem5 Developers                        return MISCREG_TLBI_ALLE1;
237610037SARM gem5 Developers                      case 5:
237710037SARM gem5 Developers                        return MISCREG_TLBI_VALE2_Xt;
237810037SARM gem5 Developers                      case 6:
237910037SARM gem5 Developers                        return MISCREG_TLBI_VMALLS12E1;
238010037SARM gem5 Developers                    }
238110037SARM gem5 Developers                    break;
238210037SARM gem5 Developers                }
238310037SARM gem5 Developers                break;
238410037SARM gem5 Developers              case 6:
238510037SARM gem5 Developers                switch (crm) {
238610037SARM gem5 Developers                  case 3:
238710037SARM gem5 Developers                    switch (op2) {
238810037SARM gem5 Developers                      case 0:
238910037SARM gem5 Developers                        return MISCREG_TLBI_ALLE3IS;
239010037SARM gem5 Developers                      case 1:
239110037SARM gem5 Developers                        return MISCREG_TLBI_VAE3IS_Xt;
239210037SARM gem5 Developers                      case 5:
239310037SARM gem5 Developers                        return MISCREG_TLBI_VALE3IS_Xt;
239410037SARM gem5 Developers                    }
239510037SARM gem5 Developers                    break;
239610037SARM gem5 Developers                  case 7:
239710037SARM gem5 Developers                    switch (op2) {
239810037SARM gem5 Developers                      case 0:
239910037SARM gem5 Developers                        return MISCREG_TLBI_ALLE3;
240010037SARM gem5 Developers                      case 1:
240110037SARM gem5 Developers                        return MISCREG_TLBI_VAE3_Xt;
240210037SARM gem5 Developers                      case 5:
240310037SARM gem5 Developers                        return MISCREG_TLBI_VALE3_Xt;
240410037SARM gem5 Developers                    }
240510037SARM gem5 Developers                    break;
240610037SARM gem5 Developers                }
240710037SARM gem5 Developers                break;
240810037SARM gem5 Developers            }
240910037SARM gem5 Developers            break;
241010037SARM gem5 Developers        }
241110037SARM gem5 Developers        break;
241210037SARM gem5 Developers      case 2:
241310037SARM gem5 Developers        switch (crn) {
241410037SARM gem5 Developers          case 0:
241510037SARM gem5 Developers            switch (op1) {
241610037SARM gem5 Developers              case 0:
241710037SARM gem5 Developers                switch (crm) {
241810037SARM gem5 Developers                  case 0:
241910037SARM gem5 Developers                    switch (op2) {
242010037SARM gem5 Developers                      case 2:
242110037SARM gem5 Developers                        return MISCREG_OSDTRRX_EL1;
242210037SARM gem5 Developers                      case 4:
242310037SARM gem5 Developers                        return MISCREG_DBGBVR0_EL1;
242412711Sgiacomo.travaglini@arm.com                      case 5:
242512711Sgiacomo.travaglini@arm.com                        return MISCREG_DBGBCR0_EL1;
242610037SARM gem5 Developers                      case 6:
242710037SARM gem5 Developers                        return MISCREG_DBGWVR0_EL1;
242810037SARM gem5 Developers                      case 7:
242910037SARM gem5 Developers                        return MISCREG_DBGWCR0_EL1;
243010037SARM gem5 Developers                    }
243110037SARM gem5 Developers                    break;
243210037SARM gem5 Developers                  case 1:
243312479SCurtis.Dunham@arm.com                    switch (op2) {
243412479SCurtis.Dunham@arm.com                      case 4:
243512479SCurtis.Dunham@arm.com                        return MISCREG_DBGBVR1_EL1;
243612479SCurtis.Dunham@arm.com                      case 5:
243712479SCurtis.Dunham@arm.com                        return MISCREG_DBGBCR1_EL1;
243812479SCurtis.Dunham@arm.com                      case 6:
243912479SCurtis.Dunham@arm.com                        return MISCREG_DBGWVR1_EL1;
244012479SCurtis.Dunham@arm.com                      case 7:
244112479SCurtis.Dunham@arm.com                        return MISCREG_DBGWCR1_EL1;
244212479SCurtis.Dunham@arm.com                    }
244312479SCurtis.Dunham@arm.com                    break;
244412661Sgiacomo.travaglini@arm.com                  case 2:
244512661Sgiacomo.travaglini@arm.com                    switch (op2) {
244612661Sgiacomo.travaglini@arm.com                      case 0:
244712661Sgiacomo.travaglini@arm.com                        return MISCREG_MDCCINT_EL1;
244812661Sgiacomo.travaglini@arm.com                      case 2:
244912479SCurtis.Dunham@arm.com                        return MISCREG_MDSCR_EL1;
245012479SCurtis.Dunham@arm.com                      case 4:
245112479SCurtis.Dunham@arm.com                        return MISCREG_DBGBVR2_EL1;
245212479SCurtis.Dunham@arm.com                      case 5:
245312479SCurtis.Dunham@arm.com                        return MISCREG_DBGBCR2_EL1;
245412479SCurtis.Dunham@arm.com                      case 6:
245512479SCurtis.Dunham@arm.com                        return MISCREG_DBGWVR2_EL1;
245612479SCurtis.Dunham@arm.com                      case 7:
245712479SCurtis.Dunham@arm.com                        return MISCREG_DBGWCR2_EL1;
245812479SCurtis.Dunham@arm.com                    }
245912479SCurtis.Dunham@arm.com                    break;
246012479SCurtis.Dunham@arm.com                  case 3:
246112479SCurtis.Dunham@arm.com                    switch (op2) {
246212479SCurtis.Dunham@arm.com                      case 2:
246312479SCurtis.Dunham@arm.com                        return MISCREG_OSDTRTX_EL1;
246412479SCurtis.Dunham@arm.com                      case 4:
246512479SCurtis.Dunham@arm.com                        return MISCREG_DBGBVR3_EL1;
246612479SCurtis.Dunham@arm.com                      case 5:
246712479SCurtis.Dunham@arm.com                        return MISCREG_DBGBCR3_EL1;
246812479SCurtis.Dunham@arm.com                      case 6:
246912479SCurtis.Dunham@arm.com                        return MISCREG_DBGWVR3_EL1;
247012479SCurtis.Dunham@arm.com                      case 7:
247112479SCurtis.Dunham@arm.com                        return MISCREG_DBGWCR3_EL1;
247212479SCurtis.Dunham@arm.com                    }
247312479SCurtis.Dunham@arm.com                    break;
247412479SCurtis.Dunham@arm.com                  case 4:
247512479SCurtis.Dunham@arm.com                    switch (op2) {
247612479SCurtis.Dunham@arm.com                      case 4:
247712479SCurtis.Dunham@arm.com                        return MISCREG_DBGBVR4_EL1;
247812479SCurtis.Dunham@arm.com                      case 5:
247912479SCurtis.Dunham@arm.com                        return MISCREG_DBGBCR4_EL1;
248012479SCurtis.Dunham@arm.com                    }
248112479SCurtis.Dunham@arm.com                    break;
248212479SCurtis.Dunham@arm.com                  case 5:
248312479SCurtis.Dunham@arm.com                    switch (op2) {
248412479SCurtis.Dunham@arm.com                      case 4:
248512479SCurtis.Dunham@arm.com                        return MISCREG_DBGBVR5_EL1;
248612479SCurtis.Dunham@arm.com                      case 5:
248712479SCurtis.Dunham@arm.com                        return MISCREG_DBGBCR5_EL1;
248812479SCurtis.Dunham@arm.com                    }
248912479SCurtis.Dunham@arm.com                    break;
249012479SCurtis.Dunham@arm.com                  case 6:
249112479SCurtis.Dunham@arm.com                    switch (op2) {
249212479SCurtis.Dunham@arm.com                      case 2:
249312479SCurtis.Dunham@arm.com                        return MISCREG_OSECCR_EL1;
249412479SCurtis.Dunham@arm.com                    }
249512479SCurtis.Dunham@arm.com                    break;
249612479SCurtis.Dunham@arm.com                }
249712479SCurtis.Dunham@arm.com                break;
249812479SCurtis.Dunham@arm.com              case 2:
249912479SCurtis.Dunham@arm.com                switch (crm) {
250012479SCurtis.Dunham@arm.com                  case 0:
250112479SCurtis.Dunham@arm.com                    switch (op2) {
250212479SCurtis.Dunham@arm.com                      case 0:
250312479SCurtis.Dunham@arm.com                        return MISCREG_TEECR32_EL1;
250412479SCurtis.Dunham@arm.com                    }
250512479SCurtis.Dunham@arm.com                    break;
250612479SCurtis.Dunham@arm.com                }
250712479SCurtis.Dunham@arm.com                break;
250812479SCurtis.Dunham@arm.com              case 3:
250912479SCurtis.Dunham@arm.com                switch (crm) {
251012479SCurtis.Dunham@arm.com                  case 1:
251112661Sgiacomo.travaglini@arm.com                    switch (op2) {
251212479SCurtis.Dunham@arm.com                      case 0:
251312479SCurtis.Dunham@arm.com                        return MISCREG_MDCCSR_EL0;
251412479SCurtis.Dunham@arm.com                    }
251512479SCurtis.Dunham@arm.com                    break;
251612479SCurtis.Dunham@arm.com                  case 4:
251712479SCurtis.Dunham@arm.com                    switch (op2) {
251812479SCurtis.Dunham@arm.com                      case 0:
251912479SCurtis.Dunham@arm.com                        return MISCREG_MDDTR_EL0;
252012479SCurtis.Dunham@arm.com                    }
252112661Sgiacomo.travaglini@arm.com                    break;
252212479SCurtis.Dunham@arm.com                  case 5:
252312479SCurtis.Dunham@arm.com                    switch (op2) {
252412479SCurtis.Dunham@arm.com                      case 0:
252512479SCurtis.Dunham@arm.com                        return MISCREG_MDDTRRX_EL0;
252612479SCurtis.Dunham@arm.com                    }
252712479SCurtis.Dunham@arm.com                    break;
252812479SCurtis.Dunham@arm.com                }
252912479SCurtis.Dunham@arm.com                break;
253012479SCurtis.Dunham@arm.com              case 4:
253112479SCurtis.Dunham@arm.com                switch (crm) {
253212479SCurtis.Dunham@arm.com                  case 7:
253312479SCurtis.Dunham@arm.com                    switch (op2) {
253412479SCurtis.Dunham@arm.com                      case 0:
253512479SCurtis.Dunham@arm.com                        return MISCREG_DBGVCR32_EL2;
253612479SCurtis.Dunham@arm.com                    }
253712479SCurtis.Dunham@arm.com                    break;
253812479SCurtis.Dunham@arm.com                }
253912479SCurtis.Dunham@arm.com                break;
254012479SCurtis.Dunham@arm.com            }
254112479SCurtis.Dunham@arm.com            break;
254212479SCurtis.Dunham@arm.com          case 1:
254312479SCurtis.Dunham@arm.com            switch (op1) {
254412479SCurtis.Dunham@arm.com              case 0:
254512479SCurtis.Dunham@arm.com                switch (crm) {
254612479SCurtis.Dunham@arm.com                  case 0:
254712479SCurtis.Dunham@arm.com                    switch (op2) {
254812479SCurtis.Dunham@arm.com                      case 0:
254912479SCurtis.Dunham@arm.com                        return MISCREG_MDRAR_EL1;
255012479SCurtis.Dunham@arm.com                      case 4:
255112479SCurtis.Dunham@arm.com                        return MISCREG_OSLAR_EL1;
255212479SCurtis.Dunham@arm.com                    }
255312479SCurtis.Dunham@arm.com                    break;
255412479SCurtis.Dunham@arm.com                  case 1:
255512479SCurtis.Dunham@arm.com                    switch (op2) {
255612479SCurtis.Dunham@arm.com                      case 4:
255712479SCurtis.Dunham@arm.com                        return MISCREG_OSLSR_EL1;
255812479SCurtis.Dunham@arm.com                    }
255912479SCurtis.Dunham@arm.com                    break;
256012479SCurtis.Dunham@arm.com                  case 3:
256112479SCurtis.Dunham@arm.com                    switch (op2) {
256212479SCurtis.Dunham@arm.com                      case 4:
256312479SCurtis.Dunham@arm.com                        return MISCREG_OSDLR_EL1;
256412479SCurtis.Dunham@arm.com                    }
256512479SCurtis.Dunham@arm.com                    break;
256612479SCurtis.Dunham@arm.com                  case 4:
256712479SCurtis.Dunham@arm.com                    switch (op2) {
256812479SCurtis.Dunham@arm.com                      case 4:
256912479SCurtis.Dunham@arm.com                        return MISCREG_DBGPRCR_EL1;
257012479SCurtis.Dunham@arm.com                    }
257112479SCurtis.Dunham@arm.com                    break;
257212479SCurtis.Dunham@arm.com                }
257312479SCurtis.Dunham@arm.com                break;
257412479SCurtis.Dunham@arm.com              case 2:
257512479SCurtis.Dunham@arm.com                switch (crm) {
257612479SCurtis.Dunham@arm.com                  case 0:
257712479SCurtis.Dunham@arm.com                    switch (op2) {
257812479SCurtis.Dunham@arm.com                      case 0:
257912479SCurtis.Dunham@arm.com                        return MISCREG_TEEHBR32_EL1;
258012479SCurtis.Dunham@arm.com                    }
258112479SCurtis.Dunham@arm.com                    break;
258212479SCurtis.Dunham@arm.com                }
258312479SCurtis.Dunham@arm.com                break;
258412479SCurtis.Dunham@arm.com            }
258512479SCurtis.Dunham@arm.com            break;
258612479SCurtis.Dunham@arm.com          case 7:
258712479SCurtis.Dunham@arm.com            switch (op1) {
258812479SCurtis.Dunham@arm.com              case 0:
258912479SCurtis.Dunham@arm.com                switch (crm) {
259012479SCurtis.Dunham@arm.com                  case 8:
259112479SCurtis.Dunham@arm.com                    switch (op2) {
259212479SCurtis.Dunham@arm.com                      case 6:
259312479SCurtis.Dunham@arm.com                        return MISCREG_DBGCLAIMSET_EL1;
259412479SCurtis.Dunham@arm.com                    }
259512479SCurtis.Dunham@arm.com                    break;
259612479SCurtis.Dunham@arm.com                  case 9:
259712479SCurtis.Dunham@arm.com                    switch (op2) {
259812479SCurtis.Dunham@arm.com                      case 6:
259912479SCurtis.Dunham@arm.com                        return MISCREG_DBGCLAIMCLR_EL1;
260012479SCurtis.Dunham@arm.com                    }
260112479SCurtis.Dunham@arm.com                    break;
260212479SCurtis.Dunham@arm.com                  case 14:
260312479SCurtis.Dunham@arm.com                    switch (op2) {
260412479SCurtis.Dunham@arm.com                      case 6:
260512479SCurtis.Dunham@arm.com                        return MISCREG_DBGAUTHSTATUS_EL1;
260612479SCurtis.Dunham@arm.com                    }
260712479SCurtis.Dunham@arm.com                    break;
260812479SCurtis.Dunham@arm.com                }
260912479SCurtis.Dunham@arm.com                break;
261012479SCurtis.Dunham@arm.com            }
261112479SCurtis.Dunham@arm.com            break;
261212479SCurtis.Dunham@arm.com        }
261312479SCurtis.Dunham@arm.com        break;
261412479SCurtis.Dunham@arm.com      case 3:
261512479SCurtis.Dunham@arm.com        switch (crn) {
261612479SCurtis.Dunham@arm.com          case 0:
261712479SCurtis.Dunham@arm.com            switch (op1) {
261812479SCurtis.Dunham@arm.com              case 0:
261912479SCurtis.Dunham@arm.com                switch (crm) {
262012479SCurtis.Dunham@arm.com                  case 0:
262112479SCurtis.Dunham@arm.com                    switch (op2) {
262212479SCurtis.Dunham@arm.com                      case 0:
262312479SCurtis.Dunham@arm.com                        return MISCREG_MIDR_EL1;
262412479SCurtis.Dunham@arm.com                      case 5:
262512479SCurtis.Dunham@arm.com                        return MISCREG_MPIDR_EL1;
262612479SCurtis.Dunham@arm.com                      case 6:
262712479SCurtis.Dunham@arm.com                        return MISCREG_REVIDR_EL1;
262812479SCurtis.Dunham@arm.com                    }
262912479SCurtis.Dunham@arm.com                    break;
263012479SCurtis.Dunham@arm.com                  case 1:
263112479SCurtis.Dunham@arm.com                    switch (op2) {
263212479SCurtis.Dunham@arm.com                      case 0:
263312479SCurtis.Dunham@arm.com                        return MISCREG_ID_PFR0_EL1;
263412479SCurtis.Dunham@arm.com                      case 1:
263512479SCurtis.Dunham@arm.com                        return MISCREG_ID_PFR1_EL1;
263612479SCurtis.Dunham@arm.com                      case 2:
263712479SCurtis.Dunham@arm.com                        return MISCREG_ID_DFR0_EL1;
263812479SCurtis.Dunham@arm.com                      case 3:
263912479SCurtis.Dunham@arm.com                        return MISCREG_ID_AFR0_EL1;
264012479SCurtis.Dunham@arm.com                      case 4:
264112479SCurtis.Dunham@arm.com                        return MISCREG_ID_MMFR0_EL1;
264212479SCurtis.Dunham@arm.com                      case 5:
264312479SCurtis.Dunham@arm.com                        return MISCREG_ID_MMFR1_EL1;
264412479SCurtis.Dunham@arm.com                      case 6:
264512479SCurtis.Dunham@arm.com                        return MISCREG_ID_MMFR2_EL1;
264612479SCurtis.Dunham@arm.com                      case 7:
264712479SCurtis.Dunham@arm.com                        return MISCREG_ID_MMFR3_EL1;
264812479SCurtis.Dunham@arm.com                    }
264912479SCurtis.Dunham@arm.com                    break;
265012479SCurtis.Dunham@arm.com                  case 2:
265112479SCurtis.Dunham@arm.com                    switch (op2) {
265212479SCurtis.Dunham@arm.com                      case 0:
265312479SCurtis.Dunham@arm.com                        return MISCREG_ID_ISAR0_EL1;
265412479SCurtis.Dunham@arm.com                      case 1:
265512479SCurtis.Dunham@arm.com                        return MISCREG_ID_ISAR1_EL1;
265612479SCurtis.Dunham@arm.com                      case 2:
265712479SCurtis.Dunham@arm.com                        return MISCREG_ID_ISAR2_EL1;
265812479SCurtis.Dunham@arm.com                      case 3:
265912479SCurtis.Dunham@arm.com                        return MISCREG_ID_ISAR3_EL1;
266012479SCurtis.Dunham@arm.com                      case 4:
266112479SCurtis.Dunham@arm.com                        return MISCREG_ID_ISAR4_EL1;
266212479SCurtis.Dunham@arm.com                      case 5:
266312479SCurtis.Dunham@arm.com                        return MISCREG_ID_ISAR5_EL1;
266412479SCurtis.Dunham@arm.com                    }
266512479SCurtis.Dunham@arm.com                    break;
266612479SCurtis.Dunham@arm.com                  case 3:
266712479SCurtis.Dunham@arm.com                    switch (op2) {
266812479SCurtis.Dunham@arm.com                      case 0:
266912479SCurtis.Dunham@arm.com                        return MISCREG_MVFR0_EL1;
267012479SCurtis.Dunham@arm.com                      case 1:
267112479SCurtis.Dunham@arm.com                        return MISCREG_MVFR1_EL1;
267212479SCurtis.Dunham@arm.com                      case 2:
267312479SCurtis.Dunham@arm.com                        return MISCREG_MVFR2_EL1;
267412479SCurtis.Dunham@arm.com                      case 3 ... 7:
267512479SCurtis.Dunham@arm.com                        return MISCREG_RAZ;
267612479SCurtis.Dunham@arm.com                    }
267712479SCurtis.Dunham@arm.com                    break;
267812479SCurtis.Dunham@arm.com                  case 4:
267912479SCurtis.Dunham@arm.com                    switch (op2) {
268012479SCurtis.Dunham@arm.com                      case 0:
268112479SCurtis.Dunham@arm.com                        return MISCREG_ID_AA64PFR0_EL1;
268212479SCurtis.Dunham@arm.com                      case 1:
268312479SCurtis.Dunham@arm.com                        return MISCREG_ID_AA64PFR1_EL1;
268412479SCurtis.Dunham@arm.com                      case 2 ... 7:
268512479SCurtis.Dunham@arm.com                        return MISCREG_RAZ;
268612479SCurtis.Dunham@arm.com                    }
268712479SCurtis.Dunham@arm.com                    break;
268812479SCurtis.Dunham@arm.com                  case 5:
268912479SCurtis.Dunham@arm.com                    switch (op2) {
269012479SCurtis.Dunham@arm.com                      case 0:
269112479SCurtis.Dunham@arm.com                        return MISCREG_ID_AA64DFR0_EL1;
269212479SCurtis.Dunham@arm.com                      case 1:
269312479SCurtis.Dunham@arm.com                        return MISCREG_ID_AA64DFR1_EL1;
269412479SCurtis.Dunham@arm.com                      case 4:
269512479SCurtis.Dunham@arm.com                        return MISCREG_ID_AA64AFR0_EL1;
269612479SCurtis.Dunham@arm.com                      case 5:
269712479SCurtis.Dunham@arm.com                        return MISCREG_ID_AA64AFR1_EL1;
269812479SCurtis.Dunham@arm.com                      case 2:
269912479SCurtis.Dunham@arm.com                      case 3:
270012479SCurtis.Dunham@arm.com                      case 6:
270112479SCurtis.Dunham@arm.com                      case 7:
270212479SCurtis.Dunham@arm.com                        return MISCREG_RAZ;
270312479SCurtis.Dunham@arm.com                    }
270412479SCurtis.Dunham@arm.com                    break;
270512479SCurtis.Dunham@arm.com                  case 6:
270612479SCurtis.Dunham@arm.com                    switch (op2) {
270712479SCurtis.Dunham@arm.com                      case 0:
270812479SCurtis.Dunham@arm.com                        return MISCREG_ID_AA64ISAR0_EL1;
270912479SCurtis.Dunham@arm.com                      case 1:
271012479SCurtis.Dunham@arm.com                        return MISCREG_ID_AA64ISAR1_EL1;
271112479SCurtis.Dunham@arm.com                      case 2 ... 7:
271212479SCurtis.Dunham@arm.com                        return MISCREG_RAZ;
271312479SCurtis.Dunham@arm.com                    }
271412479SCurtis.Dunham@arm.com                    break;
271512479SCurtis.Dunham@arm.com                  case 7:
271612479SCurtis.Dunham@arm.com                    switch (op2) {
271712479SCurtis.Dunham@arm.com                      case 0:
271812479SCurtis.Dunham@arm.com                        return MISCREG_ID_AA64MMFR0_EL1;
271912479SCurtis.Dunham@arm.com                      case 1:
272012479SCurtis.Dunham@arm.com                        return MISCREG_ID_AA64MMFR1_EL1;
272112479SCurtis.Dunham@arm.com                      case 2 ... 7:
272212479SCurtis.Dunham@arm.com                        return MISCREG_RAZ;
272312479SCurtis.Dunham@arm.com                    }
272412479SCurtis.Dunham@arm.com                    break;
272512479SCurtis.Dunham@arm.com                }
272612479SCurtis.Dunham@arm.com                break;
272712479SCurtis.Dunham@arm.com              case 1:
272812479SCurtis.Dunham@arm.com                switch (crm) {
272912479SCurtis.Dunham@arm.com                  case 0:
273012479SCurtis.Dunham@arm.com                    switch (op2) {
273112479SCurtis.Dunham@arm.com                      case 0:
273212479SCurtis.Dunham@arm.com                        return MISCREG_CCSIDR_EL1;
273312661Sgiacomo.travaglini@arm.com                      case 1:
273412479SCurtis.Dunham@arm.com                        return MISCREG_CLIDR_EL1;
273512479SCurtis.Dunham@arm.com                      case 7:
273612479SCurtis.Dunham@arm.com                        return MISCREG_AIDR_EL1;
273712479SCurtis.Dunham@arm.com                    }
273812479SCurtis.Dunham@arm.com                    break;
273912479SCurtis.Dunham@arm.com                }
274012479SCurtis.Dunham@arm.com                break;
274112479SCurtis.Dunham@arm.com              case 2:
274212479SCurtis.Dunham@arm.com                switch (crm) {
274312479SCurtis.Dunham@arm.com                  case 0:
274412479SCurtis.Dunham@arm.com                    switch (op2) {
274512479SCurtis.Dunham@arm.com                      case 0:
274612661Sgiacomo.travaglini@arm.com                        return MISCREG_CSSELR_EL1;
274712479SCurtis.Dunham@arm.com                    }
274812479SCurtis.Dunham@arm.com                    break;
274912479SCurtis.Dunham@arm.com                }
275012479SCurtis.Dunham@arm.com                break;
275112479SCurtis.Dunham@arm.com              case 3:
275212479SCurtis.Dunham@arm.com                switch (crm) {
275312479SCurtis.Dunham@arm.com                  case 0:
275412479SCurtis.Dunham@arm.com                    switch (op2) {
275512661Sgiacomo.travaglini@arm.com                      case 1:
275612479SCurtis.Dunham@arm.com                        return MISCREG_CTR_EL0;
275712479SCurtis.Dunham@arm.com                      case 7:
275812479SCurtis.Dunham@arm.com                        return MISCREG_DCZID_EL0;
275912479SCurtis.Dunham@arm.com                    }
276012479SCurtis.Dunham@arm.com                    break;
276112479SCurtis.Dunham@arm.com                }
276212479SCurtis.Dunham@arm.com                break;
276312479SCurtis.Dunham@arm.com              case 4:
276412479SCurtis.Dunham@arm.com                switch (crm) {
276512479SCurtis.Dunham@arm.com                  case 0:
276612479SCurtis.Dunham@arm.com                    switch (op2) {
276712479SCurtis.Dunham@arm.com                      case 0:
276812479SCurtis.Dunham@arm.com                        return MISCREG_VPIDR_EL2;
276912479SCurtis.Dunham@arm.com                      case 5:
277012479SCurtis.Dunham@arm.com                        return MISCREG_VMPIDR_EL2;
277112479SCurtis.Dunham@arm.com                    }
277212479SCurtis.Dunham@arm.com                    break;
277312479SCurtis.Dunham@arm.com                }
277412479SCurtis.Dunham@arm.com                break;
277512479SCurtis.Dunham@arm.com            }
277612479SCurtis.Dunham@arm.com            break;
277712479SCurtis.Dunham@arm.com          case 1:
277812479SCurtis.Dunham@arm.com            switch (op1) {
277912479SCurtis.Dunham@arm.com              case 0:
278012479SCurtis.Dunham@arm.com                switch (crm) {
278112479SCurtis.Dunham@arm.com                  case 0:
278212479SCurtis.Dunham@arm.com                    switch (op2) {
278312479SCurtis.Dunham@arm.com                      case 0:
278412479SCurtis.Dunham@arm.com                        return MISCREG_SCTLR_EL1;
278512479SCurtis.Dunham@arm.com                      case 1:
278612479SCurtis.Dunham@arm.com                        return MISCREG_ACTLR_EL1;
278712479SCurtis.Dunham@arm.com                      case 2:
278812479SCurtis.Dunham@arm.com                        return MISCREG_CPACR_EL1;
278912479SCurtis.Dunham@arm.com                    }
279012661Sgiacomo.travaglini@arm.com                    break;
279112479SCurtis.Dunham@arm.com                }
279212479SCurtis.Dunham@arm.com                break;
279312479SCurtis.Dunham@arm.com              case 4:
279412479SCurtis.Dunham@arm.com                switch (crm) {
279512479SCurtis.Dunham@arm.com                  case 0:
279612479SCurtis.Dunham@arm.com                    switch (op2) {
279712479SCurtis.Dunham@arm.com                      case 0:
279812479SCurtis.Dunham@arm.com                        return MISCREG_SCTLR_EL2;
279912661Sgiacomo.travaglini@arm.com                      case 1:
280012479SCurtis.Dunham@arm.com                        return MISCREG_ACTLR_EL2;
280112479SCurtis.Dunham@arm.com                    }
280212479SCurtis.Dunham@arm.com                    break;
280312479SCurtis.Dunham@arm.com                  case 1:
280412479SCurtis.Dunham@arm.com                    switch (op2) {
280512479SCurtis.Dunham@arm.com                      case 0:
280612479SCurtis.Dunham@arm.com                        return MISCREG_HCR_EL2;
280712479SCurtis.Dunham@arm.com                      case 1:
280812661Sgiacomo.travaglini@arm.com                        return MISCREG_MDCR_EL2;
280912479SCurtis.Dunham@arm.com                      case 2:
281012479SCurtis.Dunham@arm.com                        return MISCREG_CPTR_EL2;
281112479SCurtis.Dunham@arm.com                      case 3:
281212479SCurtis.Dunham@arm.com                        return MISCREG_HSTR_EL2;
281312479SCurtis.Dunham@arm.com                      case 7:
281412479SCurtis.Dunham@arm.com                        return MISCREG_HACR_EL2;
281512479SCurtis.Dunham@arm.com                    }
281612479SCurtis.Dunham@arm.com                    break;
281712479SCurtis.Dunham@arm.com                }
281812479SCurtis.Dunham@arm.com                break;
281912479SCurtis.Dunham@arm.com              case 6:
282012479SCurtis.Dunham@arm.com                switch (crm) {
282112661Sgiacomo.travaglini@arm.com                  case 0:
282212479SCurtis.Dunham@arm.com                    switch (op2) {
282312479SCurtis.Dunham@arm.com                      case 0:
282412479SCurtis.Dunham@arm.com                        return MISCREG_SCTLR_EL3;
282512479SCurtis.Dunham@arm.com                      case 1:
282612479SCurtis.Dunham@arm.com                        return MISCREG_ACTLR_EL3;
282712479SCurtis.Dunham@arm.com                    }
282812479SCurtis.Dunham@arm.com                    break;
282912479SCurtis.Dunham@arm.com                  case 1:
283012661Sgiacomo.travaglini@arm.com                    switch (op2) {
283112479SCurtis.Dunham@arm.com                      case 0:
283212479SCurtis.Dunham@arm.com                        return MISCREG_SCR_EL3;
283312479SCurtis.Dunham@arm.com                      case 1:
283412479SCurtis.Dunham@arm.com                        return MISCREG_SDER32_EL3;
283512479SCurtis.Dunham@arm.com                      case 2:
283612479SCurtis.Dunham@arm.com                        return MISCREG_CPTR_EL3;
283712479SCurtis.Dunham@arm.com                    }
283812479SCurtis.Dunham@arm.com                    break;
283912661Sgiacomo.travaglini@arm.com                  case 3:
284012479SCurtis.Dunham@arm.com                    switch (op2) {
284112479SCurtis.Dunham@arm.com                      case 1:
284212479SCurtis.Dunham@arm.com                        return MISCREG_MDCR_EL3;
284312479SCurtis.Dunham@arm.com                    }
284412479SCurtis.Dunham@arm.com                    break;
284512479SCurtis.Dunham@arm.com                }
284612479SCurtis.Dunham@arm.com                break;
284712479SCurtis.Dunham@arm.com            }
284812479SCurtis.Dunham@arm.com            break;
284912479SCurtis.Dunham@arm.com          case 2:
285012479SCurtis.Dunham@arm.com            switch (op1) {
285112479SCurtis.Dunham@arm.com              case 0:
285212661Sgiacomo.travaglini@arm.com                switch (crm) {
285312479SCurtis.Dunham@arm.com                  case 0:
285412479SCurtis.Dunham@arm.com                    switch (op2) {
285512479SCurtis.Dunham@arm.com                      case 0:
285612479SCurtis.Dunham@arm.com                        return MISCREG_TTBR0_EL1;
285712479SCurtis.Dunham@arm.com                      case 1:
285812479SCurtis.Dunham@arm.com                        return MISCREG_TTBR1_EL1;
285912479SCurtis.Dunham@arm.com                      case 2:
286012479SCurtis.Dunham@arm.com                        return MISCREG_TCR_EL1;
286112479SCurtis.Dunham@arm.com                    }
286212479SCurtis.Dunham@arm.com                    break;
286312479SCurtis.Dunham@arm.com                }
286412479SCurtis.Dunham@arm.com                break;
286512479SCurtis.Dunham@arm.com              case 4:
286612479SCurtis.Dunham@arm.com                switch (crm) {
286712661Sgiacomo.travaglini@arm.com                  case 0:
286812479SCurtis.Dunham@arm.com                    switch (op2) {
286912479SCurtis.Dunham@arm.com                      case 0:
287012479SCurtis.Dunham@arm.com                        return MISCREG_TTBR0_EL2;
287112479SCurtis.Dunham@arm.com                      case 2:
287212479SCurtis.Dunham@arm.com                        return MISCREG_TCR_EL2;
287312479SCurtis.Dunham@arm.com                    }
287412479SCurtis.Dunham@arm.com                    break;
287512479SCurtis.Dunham@arm.com                  case 1:
287612479SCurtis.Dunham@arm.com                    switch (op2) {
287712479SCurtis.Dunham@arm.com                      case 0:
287812479SCurtis.Dunham@arm.com                        return MISCREG_VTTBR_EL2;
287912479SCurtis.Dunham@arm.com                      case 2:
288012479SCurtis.Dunham@arm.com                        return MISCREG_VTCR_EL2;
288112479SCurtis.Dunham@arm.com                    }
288212479SCurtis.Dunham@arm.com                    break;
288312479SCurtis.Dunham@arm.com                }
288412661Sgiacomo.travaglini@arm.com                break;
288512479SCurtis.Dunham@arm.com              case 6:
288612479SCurtis.Dunham@arm.com                switch (crm) {
288712479SCurtis.Dunham@arm.com                  case 0:
288812479SCurtis.Dunham@arm.com                    switch (op2) {
288912479SCurtis.Dunham@arm.com                      case 0:
289012479SCurtis.Dunham@arm.com                        return MISCREG_TTBR0_EL3;
289112479SCurtis.Dunham@arm.com                      case 2:
289212479SCurtis.Dunham@arm.com                        return MISCREG_TCR_EL3;
289312661Sgiacomo.travaglini@arm.com                    }
289412479SCurtis.Dunham@arm.com                    break;
289512479SCurtis.Dunham@arm.com                }
289612479SCurtis.Dunham@arm.com                break;
289712479SCurtis.Dunham@arm.com            }
289812479SCurtis.Dunham@arm.com            break;
289912479SCurtis.Dunham@arm.com          case 3:
290012479SCurtis.Dunham@arm.com            switch (op1) {
290112479SCurtis.Dunham@arm.com              case 4:
290212479SCurtis.Dunham@arm.com                switch (crm) {
290312479SCurtis.Dunham@arm.com                  case 0:
290412479SCurtis.Dunham@arm.com                    switch (op2) {
290512479SCurtis.Dunham@arm.com                      case 0:
290612479SCurtis.Dunham@arm.com                        return MISCREG_DACR32_EL2;
290712479SCurtis.Dunham@arm.com                    }
290812479SCurtis.Dunham@arm.com                    break;
290912479SCurtis.Dunham@arm.com                }
291012479SCurtis.Dunham@arm.com                break;
291112479SCurtis.Dunham@arm.com            }
291212479SCurtis.Dunham@arm.com            break;
291312479SCurtis.Dunham@arm.com          case 4:
291412479SCurtis.Dunham@arm.com            switch (op1) {
291512479SCurtis.Dunham@arm.com              case 0:
291612661Sgiacomo.travaglini@arm.com                switch (crm) {
291712479SCurtis.Dunham@arm.com                  case 0:
291812479SCurtis.Dunham@arm.com                    switch (op2) {
291912479SCurtis.Dunham@arm.com                      case 0:
292012479SCurtis.Dunham@arm.com                        return MISCREG_SPSR_EL1;
292112479SCurtis.Dunham@arm.com                      case 1:
292212479SCurtis.Dunham@arm.com                        return MISCREG_ELR_EL1;
292312479SCurtis.Dunham@arm.com                    }
292412479SCurtis.Dunham@arm.com                    break;
292512479SCurtis.Dunham@arm.com                  case 1:
292612479SCurtis.Dunham@arm.com                    switch (op2) {
292712479SCurtis.Dunham@arm.com                      case 0:
292812479SCurtis.Dunham@arm.com                        return MISCREG_SP_EL0;
292912479SCurtis.Dunham@arm.com                    }
293012479SCurtis.Dunham@arm.com                    break;
293112479SCurtis.Dunham@arm.com                  case 2:
293212479SCurtis.Dunham@arm.com                    switch (op2) {
293312479SCurtis.Dunham@arm.com                      case 0:
293412479SCurtis.Dunham@arm.com                        return MISCREG_SPSEL;
293512479SCurtis.Dunham@arm.com                      case 2:
293612479SCurtis.Dunham@arm.com                        return MISCREG_CURRENTEL;
293712479SCurtis.Dunham@arm.com                    }
293812479SCurtis.Dunham@arm.com                    break;
293912479SCurtis.Dunham@arm.com                }
294012479SCurtis.Dunham@arm.com                break;
294112479SCurtis.Dunham@arm.com              case 3:
294212479SCurtis.Dunham@arm.com                switch (crm) {
294312479SCurtis.Dunham@arm.com                  case 2:
294412479SCurtis.Dunham@arm.com                    switch (op2) {
294512479SCurtis.Dunham@arm.com                      case 0:
294612479SCurtis.Dunham@arm.com                        return MISCREG_NZCV;
294712479SCurtis.Dunham@arm.com                      case 1:
294812479SCurtis.Dunham@arm.com                        return MISCREG_DAIF;
294912479SCurtis.Dunham@arm.com                    }
295012479SCurtis.Dunham@arm.com                    break;
295112479SCurtis.Dunham@arm.com                  case 4:
295212479SCurtis.Dunham@arm.com                    switch (op2) {
295312479SCurtis.Dunham@arm.com                      case 0:
295412479SCurtis.Dunham@arm.com                        return MISCREG_FPCR;
295512479SCurtis.Dunham@arm.com                      case 1:
295612479SCurtis.Dunham@arm.com                        return MISCREG_FPSR;
295712479SCurtis.Dunham@arm.com                    }
295812479SCurtis.Dunham@arm.com                    break;
295912479SCurtis.Dunham@arm.com                  case 5:
296012479SCurtis.Dunham@arm.com                    switch (op2) {
296112479SCurtis.Dunham@arm.com                      case 0:
296212479SCurtis.Dunham@arm.com                        return MISCREG_DSPSR_EL0;
296312479SCurtis.Dunham@arm.com                      case 1:
296412479SCurtis.Dunham@arm.com                        return MISCREG_DLR_EL0;
296512479SCurtis.Dunham@arm.com                    }
296612479SCurtis.Dunham@arm.com                    break;
296712479SCurtis.Dunham@arm.com                }
296812479SCurtis.Dunham@arm.com                break;
296912479SCurtis.Dunham@arm.com              case 4:
297012479SCurtis.Dunham@arm.com                switch (crm) {
297112479SCurtis.Dunham@arm.com                  case 0:
297212479SCurtis.Dunham@arm.com                    switch (op2) {
297312479SCurtis.Dunham@arm.com                      case 0:
297412479SCurtis.Dunham@arm.com                        return MISCREG_SPSR_EL2;
297512479SCurtis.Dunham@arm.com                      case 1:
297612479SCurtis.Dunham@arm.com                        return MISCREG_ELR_EL2;
297712479SCurtis.Dunham@arm.com                    }
297812479SCurtis.Dunham@arm.com                    break;
297912479SCurtis.Dunham@arm.com                  case 1:
298012479SCurtis.Dunham@arm.com                    switch (op2) {
298112479SCurtis.Dunham@arm.com                      case 0:
298212479SCurtis.Dunham@arm.com                        return MISCREG_SP_EL1;
298312479SCurtis.Dunham@arm.com                    }
298412479SCurtis.Dunham@arm.com                    break;
298512479SCurtis.Dunham@arm.com                  case 3:
298612479SCurtis.Dunham@arm.com                    switch (op2) {
298712479SCurtis.Dunham@arm.com                      case 0:
298812479SCurtis.Dunham@arm.com                        return MISCREG_SPSR_IRQ_AA64;
298912479SCurtis.Dunham@arm.com                      case 1:
299012479SCurtis.Dunham@arm.com                        return MISCREG_SPSR_ABT_AA64;
299112479SCurtis.Dunham@arm.com                      case 2:
299212479SCurtis.Dunham@arm.com                        return MISCREG_SPSR_UND_AA64;
299312479SCurtis.Dunham@arm.com                      case 3:
299412479SCurtis.Dunham@arm.com                        return MISCREG_SPSR_FIQ_AA64;
299512479SCurtis.Dunham@arm.com                    }
299612479SCurtis.Dunham@arm.com                    break;
299712479SCurtis.Dunham@arm.com                }
299812479SCurtis.Dunham@arm.com                break;
299912479SCurtis.Dunham@arm.com              case 6:
300012479SCurtis.Dunham@arm.com                switch (crm) {
300112479SCurtis.Dunham@arm.com                  case 0:
300212479SCurtis.Dunham@arm.com                    switch (op2) {
300312479SCurtis.Dunham@arm.com                      case 0:
300412479SCurtis.Dunham@arm.com                        return MISCREG_SPSR_EL3;
300512479SCurtis.Dunham@arm.com                      case 1:
300612479SCurtis.Dunham@arm.com                        return MISCREG_ELR_EL3;
300712479SCurtis.Dunham@arm.com                    }
300812479SCurtis.Dunham@arm.com                    break;
300912479SCurtis.Dunham@arm.com                  case 1:
301012479SCurtis.Dunham@arm.com                    switch (op2) {
301112479SCurtis.Dunham@arm.com                      case 0:
301212479SCurtis.Dunham@arm.com                        return MISCREG_SP_EL2;
301312479SCurtis.Dunham@arm.com                    }
301412479SCurtis.Dunham@arm.com                    break;
301512479SCurtis.Dunham@arm.com                }
301612479SCurtis.Dunham@arm.com                break;
301712479SCurtis.Dunham@arm.com            }
301812479SCurtis.Dunham@arm.com            break;
301912479SCurtis.Dunham@arm.com          case 5:
302012479SCurtis.Dunham@arm.com            switch (op1) {
302112479SCurtis.Dunham@arm.com              case 0:
302212479SCurtis.Dunham@arm.com                switch (crm) {
302312479SCurtis.Dunham@arm.com                  case 1:
302412479SCurtis.Dunham@arm.com                    switch (op2) {
302512479SCurtis.Dunham@arm.com                      case 0:
302612479SCurtis.Dunham@arm.com                        return MISCREG_AFSR0_EL1;
302712479SCurtis.Dunham@arm.com                      case 1:
302812479SCurtis.Dunham@arm.com                        return MISCREG_AFSR1_EL1;
302912479SCurtis.Dunham@arm.com                    }
303012479SCurtis.Dunham@arm.com                    break;
303112479SCurtis.Dunham@arm.com                  case 2:
303212479SCurtis.Dunham@arm.com                    switch (op2) {
303312479SCurtis.Dunham@arm.com                      case 0:
303412479SCurtis.Dunham@arm.com                        return MISCREG_ESR_EL1;
303512479SCurtis.Dunham@arm.com                    }
303612479SCurtis.Dunham@arm.com                    break;
303712479SCurtis.Dunham@arm.com                }
303812479SCurtis.Dunham@arm.com                break;
303912479SCurtis.Dunham@arm.com              case 4:
304012479SCurtis.Dunham@arm.com                switch (crm) {
304112479SCurtis.Dunham@arm.com                  case 0:
304212479SCurtis.Dunham@arm.com                    switch (op2) {
304312479SCurtis.Dunham@arm.com                      case 1:
304412479SCurtis.Dunham@arm.com                        return MISCREG_IFSR32_EL2;
304512479SCurtis.Dunham@arm.com                    }
304612479SCurtis.Dunham@arm.com                    break;
304712479SCurtis.Dunham@arm.com                  case 1:
304812479SCurtis.Dunham@arm.com                    switch (op2) {
304912479SCurtis.Dunham@arm.com                      case 0:
305012479SCurtis.Dunham@arm.com                        return MISCREG_AFSR0_EL2;
305112479SCurtis.Dunham@arm.com                      case 1:
305212479SCurtis.Dunham@arm.com                        return MISCREG_AFSR1_EL2;
305312479SCurtis.Dunham@arm.com                    }
305412479SCurtis.Dunham@arm.com                    break;
305512479SCurtis.Dunham@arm.com                  case 2:
305612479SCurtis.Dunham@arm.com                    switch (op2) {
305712479SCurtis.Dunham@arm.com                      case 0:
305812479SCurtis.Dunham@arm.com                        return MISCREG_ESR_EL2;
305912479SCurtis.Dunham@arm.com                    }
306012479SCurtis.Dunham@arm.com                    break;
306112479SCurtis.Dunham@arm.com                  case 3:
306212479SCurtis.Dunham@arm.com                    switch (op2) {
306312479SCurtis.Dunham@arm.com                      case 0:
306412479SCurtis.Dunham@arm.com                        return MISCREG_FPEXC32_EL2;
306512479SCurtis.Dunham@arm.com                    }
306612479SCurtis.Dunham@arm.com                    break;
306712479SCurtis.Dunham@arm.com                }
306812479SCurtis.Dunham@arm.com                break;
306912479SCurtis.Dunham@arm.com              case 6:
307012479SCurtis.Dunham@arm.com                switch (crm) {
307112479SCurtis.Dunham@arm.com                  case 1:
307212479SCurtis.Dunham@arm.com                    switch (op2) {
307312479SCurtis.Dunham@arm.com                      case 0:
307412479SCurtis.Dunham@arm.com                        return MISCREG_AFSR0_EL3;
307512479SCurtis.Dunham@arm.com                      case 1:
307612479SCurtis.Dunham@arm.com                        return MISCREG_AFSR1_EL3;
307712479SCurtis.Dunham@arm.com                    }
307812479SCurtis.Dunham@arm.com                    break;
307912479SCurtis.Dunham@arm.com                  case 2:
308012479SCurtis.Dunham@arm.com                    switch (op2) {
308112479SCurtis.Dunham@arm.com                      case 0:
308212479SCurtis.Dunham@arm.com                        return MISCREG_ESR_EL3;
308312479SCurtis.Dunham@arm.com                    }
308412479SCurtis.Dunham@arm.com                    break;
308512479SCurtis.Dunham@arm.com                }
308612479SCurtis.Dunham@arm.com                break;
308712479SCurtis.Dunham@arm.com            }
308812479SCurtis.Dunham@arm.com            break;
308912661Sgiacomo.travaglini@arm.com          case 6:
309012479SCurtis.Dunham@arm.com            switch (op1) {
309112479SCurtis.Dunham@arm.com              case 0:
309212479SCurtis.Dunham@arm.com                switch (crm) {
309312479SCurtis.Dunham@arm.com                  case 0:
309412479SCurtis.Dunham@arm.com                    switch (op2) {
309512479SCurtis.Dunham@arm.com                      case 0:
309612479SCurtis.Dunham@arm.com                        return MISCREG_FAR_EL1;
309712479SCurtis.Dunham@arm.com                    }
309812661Sgiacomo.travaglini@arm.com                    break;
309912479SCurtis.Dunham@arm.com                }
310012479SCurtis.Dunham@arm.com                break;
310112479SCurtis.Dunham@arm.com              case 4:
310212479SCurtis.Dunham@arm.com                switch (crm) {
310312479SCurtis.Dunham@arm.com                  case 0:
310412479SCurtis.Dunham@arm.com                    switch (op2) {
310512479SCurtis.Dunham@arm.com                      case 0:
310612479SCurtis.Dunham@arm.com                        return MISCREG_FAR_EL2;
310712661Sgiacomo.travaglini@arm.com                      case 4:
310812479SCurtis.Dunham@arm.com                        return MISCREG_HPFAR_EL2;
310912479SCurtis.Dunham@arm.com                    }
311012479SCurtis.Dunham@arm.com                    break;
311112479SCurtis.Dunham@arm.com                }
311212479SCurtis.Dunham@arm.com                break;
311312479SCurtis.Dunham@arm.com              case 6:
311412479SCurtis.Dunham@arm.com                switch (crm) {
311512479SCurtis.Dunham@arm.com                  case 0:
311612661Sgiacomo.travaglini@arm.com                    switch (op2) {
311712479SCurtis.Dunham@arm.com                      case 0:
311812479SCurtis.Dunham@arm.com                        return MISCREG_FAR_EL3;
311912479SCurtis.Dunham@arm.com                    }
312012479SCurtis.Dunham@arm.com                    break;
312112479SCurtis.Dunham@arm.com                }
312212479SCurtis.Dunham@arm.com                break;
312312479SCurtis.Dunham@arm.com            }
312412479SCurtis.Dunham@arm.com            break;
312512661Sgiacomo.travaglini@arm.com          case 7:
312612479SCurtis.Dunham@arm.com            switch (op1) {
312712479SCurtis.Dunham@arm.com              case 0:
312812479SCurtis.Dunham@arm.com                switch (crm) {
312912479SCurtis.Dunham@arm.com                  case 4:
313012479SCurtis.Dunham@arm.com                    switch (op2) {
313112479SCurtis.Dunham@arm.com                      case 0:
313212479SCurtis.Dunham@arm.com                        return MISCREG_PAR_EL1;
313312479SCurtis.Dunham@arm.com                    }
313412661Sgiacomo.travaglini@arm.com                    break;
313512479SCurtis.Dunham@arm.com                }
313612479SCurtis.Dunham@arm.com                break;
313712479SCurtis.Dunham@arm.com            }
313812479SCurtis.Dunham@arm.com            break;
313912479SCurtis.Dunham@arm.com          case 9:
314012479SCurtis.Dunham@arm.com            switch (op1) {
314112479SCurtis.Dunham@arm.com              case 0:
314212479SCurtis.Dunham@arm.com                switch (crm) {
314312479SCurtis.Dunham@arm.com                  case 14:
314412479SCurtis.Dunham@arm.com                    switch (op2) {
314512479SCurtis.Dunham@arm.com                      case 1:
314612479SCurtis.Dunham@arm.com                        return MISCREG_PMINTENSET_EL1;
314712479SCurtis.Dunham@arm.com                      case 2:
314812479SCurtis.Dunham@arm.com                        return MISCREG_PMINTENCLR_EL1;
314912479SCurtis.Dunham@arm.com                    }
315012479SCurtis.Dunham@arm.com                    break;
315112479SCurtis.Dunham@arm.com                }
315212479SCurtis.Dunham@arm.com                break;
315312479SCurtis.Dunham@arm.com              case 3:
315412479SCurtis.Dunham@arm.com                switch (crm) {
315512661Sgiacomo.travaglini@arm.com                  case 12:
315612479SCurtis.Dunham@arm.com                    switch (op2) {
315712479SCurtis.Dunham@arm.com                      case 0:
315812479SCurtis.Dunham@arm.com                        return MISCREG_PMCR_EL0;
315912479SCurtis.Dunham@arm.com                      case 1:
316012479SCurtis.Dunham@arm.com                        return MISCREG_PMCNTENSET_EL0;
316112479SCurtis.Dunham@arm.com                      case 2:
316212479SCurtis.Dunham@arm.com                        return MISCREG_PMCNTENCLR_EL0;
316312479SCurtis.Dunham@arm.com                      case 3:
316412479SCurtis.Dunham@arm.com                        return MISCREG_PMOVSCLR_EL0;
316512479SCurtis.Dunham@arm.com                      case 4:
316612479SCurtis.Dunham@arm.com                        return MISCREG_PMSWINC_EL0;
316712479SCurtis.Dunham@arm.com                      case 5:
316812479SCurtis.Dunham@arm.com                        return MISCREG_PMSELR_EL0;
316912479SCurtis.Dunham@arm.com                      case 6:
317012479SCurtis.Dunham@arm.com                        return MISCREG_PMCEID0_EL0;
317112479SCurtis.Dunham@arm.com                      case 7:
317212479SCurtis.Dunham@arm.com                        return MISCREG_PMCEID1_EL0;
317312479SCurtis.Dunham@arm.com                    }
317412479SCurtis.Dunham@arm.com                    break;
317512479SCurtis.Dunham@arm.com                  case 13:
317612479SCurtis.Dunham@arm.com                    switch (op2) {
317712661Sgiacomo.travaglini@arm.com                      case 0:
317812479SCurtis.Dunham@arm.com                        return MISCREG_PMCCNTR_EL0;
317912479SCurtis.Dunham@arm.com                      case 1:
318012479SCurtis.Dunham@arm.com                        return MISCREG_PMXEVTYPER_EL0;
318112479SCurtis.Dunham@arm.com                      case 2:
318212479SCurtis.Dunham@arm.com                        return MISCREG_PMXEVCNTR_EL0;
318312479SCurtis.Dunham@arm.com                    }
318412479SCurtis.Dunham@arm.com                    break;
318512479SCurtis.Dunham@arm.com                  case 14:
318612661Sgiacomo.travaglini@arm.com                    switch (op2) {
318712661Sgiacomo.travaglini@arm.com                      case 0:
318812661Sgiacomo.travaglini@arm.com                        return MISCREG_PMUSERENR_EL0;
318912479SCurtis.Dunham@arm.com                      case 3:
319012479SCurtis.Dunham@arm.com                        return MISCREG_PMOVSSET_EL0;
319112479SCurtis.Dunham@arm.com                    }
319212479SCurtis.Dunham@arm.com                    break;
319312479SCurtis.Dunham@arm.com                }
319412479SCurtis.Dunham@arm.com                break;
319512479SCurtis.Dunham@arm.com            }
319612661Sgiacomo.travaglini@arm.com            break;
319712661Sgiacomo.travaglini@arm.com          case 10:
319812661Sgiacomo.travaglini@arm.com            switch (op1) {
319912661Sgiacomo.travaglini@arm.com              case 0:
320012479SCurtis.Dunham@arm.com                switch (crm) {
320112479SCurtis.Dunham@arm.com                  case 2:
320212479SCurtis.Dunham@arm.com                    switch (op2) {
320312479SCurtis.Dunham@arm.com                      case 0:
320412479SCurtis.Dunham@arm.com                        return MISCREG_MAIR_EL1;
320512479SCurtis.Dunham@arm.com                    }
320612479SCurtis.Dunham@arm.com                    break;
320712661Sgiacomo.travaglini@arm.com                  case 3:
320812661Sgiacomo.travaglini@arm.com                    switch (op2) {
320912479SCurtis.Dunham@arm.com                      case 0:
321012479SCurtis.Dunham@arm.com                        return MISCREG_AMAIR_EL1;
321112479SCurtis.Dunham@arm.com                    }
321212479SCurtis.Dunham@arm.com                    break;
321312479SCurtis.Dunham@arm.com                }
321412479SCurtis.Dunham@arm.com                break;
321512479SCurtis.Dunham@arm.com              case 4:
321612479SCurtis.Dunham@arm.com                switch (crm) {
321712479SCurtis.Dunham@arm.com                  case 2:
321812479SCurtis.Dunham@arm.com                    switch (op2) {
321912479SCurtis.Dunham@arm.com                      case 0:
322012479SCurtis.Dunham@arm.com                        return MISCREG_MAIR_EL2;
322112479SCurtis.Dunham@arm.com                    }
322212479SCurtis.Dunham@arm.com                    break;
322312661Sgiacomo.travaglini@arm.com                  case 3:
322412661Sgiacomo.travaglini@arm.com                    switch (op2) {
322512661Sgiacomo.travaglini@arm.com                      case 0:
322612479SCurtis.Dunham@arm.com                        return MISCREG_AMAIR_EL2;
322712479SCurtis.Dunham@arm.com                    }
322812479SCurtis.Dunham@arm.com                    break;
322912479SCurtis.Dunham@arm.com                }
323012479SCurtis.Dunham@arm.com                break;
323112479SCurtis.Dunham@arm.com              case 6:
323212479SCurtis.Dunham@arm.com                switch (crm) {
323312661Sgiacomo.travaglini@arm.com                  case 2:
323412661Sgiacomo.travaglini@arm.com                    switch (op2) {
323512661Sgiacomo.travaglini@arm.com                      case 0:
323612479SCurtis.Dunham@arm.com                        return MISCREG_MAIR_EL3;
323712479SCurtis.Dunham@arm.com                    }
323812479SCurtis.Dunham@arm.com                    break;
323912479SCurtis.Dunham@arm.com                  case 3:
324012479SCurtis.Dunham@arm.com                    switch (op2) {
324112479SCurtis.Dunham@arm.com                      case 0:
324212479SCurtis.Dunham@arm.com                        return MISCREG_AMAIR_EL3;
324312479SCurtis.Dunham@arm.com                    }
324412479SCurtis.Dunham@arm.com                    break;
324512479SCurtis.Dunham@arm.com                }
324612479SCurtis.Dunham@arm.com                break;
324712479SCurtis.Dunham@arm.com            }
324812479SCurtis.Dunham@arm.com            break;
324912479SCurtis.Dunham@arm.com          case 11:
325012479SCurtis.Dunham@arm.com            switch (op1) {
325112479SCurtis.Dunham@arm.com              case 1:
325212479SCurtis.Dunham@arm.com                switch (crm) {
325312479SCurtis.Dunham@arm.com                  case 0:
325412479SCurtis.Dunham@arm.com                    switch (op2) {
325512479SCurtis.Dunham@arm.com                      case 2:
325612479SCurtis.Dunham@arm.com                        return MISCREG_L2CTLR_EL1;
325712479SCurtis.Dunham@arm.com                      case 3:
325812479SCurtis.Dunham@arm.com                        return MISCREG_L2ECTLR_EL1;
325912479SCurtis.Dunham@arm.com                    }
326012479SCurtis.Dunham@arm.com                    break;
326112479SCurtis.Dunham@arm.com                }
326212479SCurtis.Dunham@arm.com                break;
326312479SCurtis.Dunham@arm.com            }
326412479SCurtis.Dunham@arm.com            break;
326512479SCurtis.Dunham@arm.com          case 12:
326612479SCurtis.Dunham@arm.com            switch (op1) {
326712479SCurtis.Dunham@arm.com              case 0:
326812479SCurtis.Dunham@arm.com                switch (crm) {
326912479SCurtis.Dunham@arm.com                  case 0:
327012479SCurtis.Dunham@arm.com                    switch (op2) {
327112479SCurtis.Dunham@arm.com                      case 0:
327212479SCurtis.Dunham@arm.com                        return MISCREG_VBAR_EL1;
327312479SCurtis.Dunham@arm.com                      case 1:
327412479SCurtis.Dunham@arm.com                        return MISCREG_RVBAR_EL1;
327512479SCurtis.Dunham@arm.com                    }
327612479SCurtis.Dunham@arm.com                    break;
327712479SCurtis.Dunham@arm.com                  case 1:
327812479SCurtis.Dunham@arm.com                    switch (op2) {
327912479SCurtis.Dunham@arm.com                      case 0:
328012479SCurtis.Dunham@arm.com                        return MISCREG_ISR_EL1;
328112479SCurtis.Dunham@arm.com                    }
328212479SCurtis.Dunham@arm.com                    break;
328312479SCurtis.Dunham@arm.com                }
328412479SCurtis.Dunham@arm.com                break;
328512479SCurtis.Dunham@arm.com              case 4:
328612479SCurtis.Dunham@arm.com                switch (crm) {
328712479SCurtis.Dunham@arm.com                  case 0:
328812479SCurtis.Dunham@arm.com                    switch (op2) {
328912479SCurtis.Dunham@arm.com                      case 0:
329012479SCurtis.Dunham@arm.com                        return MISCREG_VBAR_EL2;
329112479SCurtis.Dunham@arm.com                      case 1:
329212479SCurtis.Dunham@arm.com                        return MISCREG_RVBAR_EL2;
329312479SCurtis.Dunham@arm.com                    }
329412479SCurtis.Dunham@arm.com                    break;
329512479SCurtis.Dunham@arm.com                }
329612479SCurtis.Dunham@arm.com                break;
329712479SCurtis.Dunham@arm.com              case 6:
329812661Sgiacomo.travaglini@arm.com                switch (crm) {
329912661Sgiacomo.travaglini@arm.com                  case 0:
330012661Sgiacomo.travaglini@arm.com                    switch (op2) {
330112479SCurtis.Dunham@arm.com                      case 0:
330212479SCurtis.Dunham@arm.com                        return MISCREG_VBAR_EL3;
330312479SCurtis.Dunham@arm.com                      case 1:
330412479SCurtis.Dunham@arm.com                        return MISCREG_RVBAR_EL3;
330512479SCurtis.Dunham@arm.com                      case 2:
330612479SCurtis.Dunham@arm.com                        return MISCREG_RMR_EL3;
330712479SCurtis.Dunham@arm.com                    }
330812479SCurtis.Dunham@arm.com                    break;
330912479SCurtis.Dunham@arm.com                }
331012479SCurtis.Dunham@arm.com                break;
331112479SCurtis.Dunham@arm.com            }
331212479SCurtis.Dunham@arm.com            break;
331312479SCurtis.Dunham@arm.com          case 13:
331412479SCurtis.Dunham@arm.com            switch (op1) {
331512479SCurtis.Dunham@arm.com              case 0:
331612479SCurtis.Dunham@arm.com                switch (crm) {
331712479SCurtis.Dunham@arm.com                  case 0:
331812479SCurtis.Dunham@arm.com                    switch (op2) {
331912479SCurtis.Dunham@arm.com                      case 1:
332012479SCurtis.Dunham@arm.com                        return MISCREG_CONTEXTIDR_EL1;
332112479SCurtis.Dunham@arm.com                      case 4:
332212479SCurtis.Dunham@arm.com                        return MISCREG_TPIDR_EL1;
332312479SCurtis.Dunham@arm.com                    }
332412479SCurtis.Dunham@arm.com                    break;
332512479SCurtis.Dunham@arm.com                }
332612479SCurtis.Dunham@arm.com                break;
332712479SCurtis.Dunham@arm.com              case 3:
332812479SCurtis.Dunham@arm.com                switch (crm) {
332912479SCurtis.Dunham@arm.com                  case 0:
333012479SCurtis.Dunham@arm.com                    switch (op2) {
333112479SCurtis.Dunham@arm.com                      case 2:
333212479SCurtis.Dunham@arm.com                        return MISCREG_TPIDR_EL0;
333312479SCurtis.Dunham@arm.com                      case 3:
333412479SCurtis.Dunham@arm.com                        return MISCREG_TPIDRRO_EL0;
333512479SCurtis.Dunham@arm.com                    }
333612479SCurtis.Dunham@arm.com                    break;
333712479SCurtis.Dunham@arm.com                }
333812479SCurtis.Dunham@arm.com                break;
333912479SCurtis.Dunham@arm.com              case 4:
334012479SCurtis.Dunham@arm.com                switch (crm) {
334112479SCurtis.Dunham@arm.com                  case 0:
334212479SCurtis.Dunham@arm.com                    switch (op2) {
334312479SCurtis.Dunham@arm.com                      case 2:
334412479SCurtis.Dunham@arm.com                        return MISCREG_TPIDR_EL2;
334512479SCurtis.Dunham@arm.com                    }
334612479SCurtis.Dunham@arm.com                    break;
334712479SCurtis.Dunham@arm.com                }
334812479SCurtis.Dunham@arm.com                break;
334912479SCurtis.Dunham@arm.com              case 6:
335012479SCurtis.Dunham@arm.com                switch (crm) {
335112479SCurtis.Dunham@arm.com                  case 0:
335212479SCurtis.Dunham@arm.com                    switch (op2) {
335312479SCurtis.Dunham@arm.com                      case 2:
335412479SCurtis.Dunham@arm.com                        return MISCREG_TPIDR_EL3;
335512479SCurtis.Dunham@arm.com                    }
335612479SCurtis.Dunham@arm.com                    break;
335712479SCurtis.Dunham@arm.com                }
335812479SCurtis.Dunham@arm.com                break;
335912479SCurtis.Dunham@arm.com            }
336012479SCurtis.Dunham@arm.com            break;
336112479SCurtis.Dunham@arm.com          case 14:
336212479SCurtis.Dunham@arm.com            switch (op1) {
336312479SCurtis.Dunham@arm.com              case 0:
336412479SCurtis.Dunham@arm.com                switch (crm) {
336512479SCurtis.Dunham@arm.com                  case 1:
336612479SCurtis.Dunham@arm.com                    switch (op2) {
336712479SCurtis.Dunham@arm.com                      case 0:
336812479SCurtis.Dunham@arm.com                        return MISCREG_CNTKCTL_EL1;
336912479SCurtis.Dunham@arm.com                    }
337012479SCurtis.Dunham@arm.com                    break;
337112479SCurtis.Dunham@arm.com                }
337212479SCurtis.Dunham@arm.com                break;
337312479SCurtis.Dunham@arm.com              case 3:
337412479SCurtis.Dunham@arm.com                switch (crm) {
337512479SCurtis.Dunham@arm.com                  case 0:
337612479SCurtis.Dunham@arm.com                    switch (op2) {
337712479SCurtis.Dunham@arm.com                      case 0:
337812479SCurtis.Dunham@arm.com                        return MISCREG_CNTFRQ_EL0;
337912479SCurtis.Dunham@arm.com                      case 1:
338012479SCurtis.Dunham@arm.com                        return MISCREG_CNTPCT_EL0;
338112479SCurtis.Dunham@arm.com                      case 2:
338212479SCurtis.Dunham@arm.com                        return MISCREG_CNTVCT_EL0;
338312479SCurtis.Dunham@arm.com                    }
338412479SCurtis.Dunham@arm.com                    break;
338512479SCurtis.Dunham@arm.com                  case 2:
338612479SCurtis.Dunham@arm.com                    switch (op2) {
338712479SCurtis.Dunham@arm.com                      case 0:
338812479SCurtis.Dunham@arm.com                        return MISCREG_CNTP_TVAL_EL0;
338912479SCurtis.Dunham@arm.com                      case 1:
339012479SCurtis.Dunham@arm.com                        return MISCREG_CNTP_CTL_EL0;
339112479SCurtis.Dunham@arm.com                      case 2:
339212479SCurtis.Dunham@arm.com                        return MISCREG_CNTP_CVAL_EL0;
339312479SCurtis.Dunham@arm.com                    }
339412479SCurtis.Dunham@arm.com                    break;
339512479SCurtis.Dunham@arm.com                  case 3:
339612479SCurtis.Dunham@arm.com                    switch (op2) {
339712479SCurtis.Dunham@arm.com                      case 0:
339812479SCurtis.Dunham@arm.com                        return MISCREG_CNTV_TVAL_EL0;
339912479SCurtis.Dunham@arm.com                      case 1:
340012479SCurtis.Dunham@arm.com                        return MISCREG_CNTV_CTL_EL0;
340112479SCurtis.Dunham@arm.com                      case 2:
340212479SCurtis.Dunham@arm.com                        return MISCREG_CNTV_CVAL_EL0;
340312479SCurtis.Dunham@arm.com                    }
340412479SCurtis.Dunham@arm.com                    break;
340512479SCurtis.Dunham@arm.com                  case 8:
340612479SCurtis.Dunham@arm.com                    switch (op2) {
340712479SCurtis.Dunham@arm.com                      case 0:
340812479SCurtis.Dunham@arm.com                        return MISCREG_PMEVCNTR0_EL0;
340912479SCurtis.Dunham@arm.com                      case 1:
341012479SCurtis.Dunham@arm.com                        return MISCREG_PMEVCNTR1_EL0;
341112479SCurtis.Dunham@arm.com                      case 2:
341212479SCurtis.Dunham@arm.com                        return MISCREG_PMEVCNTR2_EL0;
341312479SCurtis.Dunham@arm.com                      case 3:
341412479SCurtis.Dunham@arm.com                        return MISCREG_PMEVCNTR3_EL0;
341512479SCurtis.Dunham@arm.com                      case 4:
341612479SCurtis.Dunham@arm.com                        return MISCREG_PMEVCNTR4_EL0;
341712479SCurtis.Dunham@arm.com                      case 5:
341812479SCurtis.Dunham@arm.com                        return MISCREG_PMEVCNTR5_EL0;
341912479SCurtis.Dunham@arm.com                    }
342012479SCurtis.Dunham@arm.com                    break;
342112479SCurtis.Dunham@arm.com                  case 12:
342212479SCurtis.Dunham@arm.com                    switch (op2) {
342312479SCurtis.Dunham@arm.com                      case 0:
342412479SCurtis.Dunham@arm.com                        return MISCREG_PMEVTYPER0_EL0;
342512479SCurtis.Dunham@arm.com                      case 1:
342612479SCurtis.Dunham@arm.com                        return MISCREG_PMEVTYPER1_EL0;
342712479SCurtis.Dunham@arm.com                      case 2:
342812479SCurtis.Dunham@arm.com                        return MISCREG_PMEVTYPER2_EL0;
342912479SCurtis.Dunham@arm.com                      case 3:
343012479SCurtis.Dunham@arm.com                        return MISCREG_PMEVTYPER3_EL0;
343112479SCurtis.Dunham@arm.com                      case 4:
343212479SCurtis.Dunham@arm.com                        return MISCREG_PMEVTYPER4_EL0;
343312479SCurtis.Dunham@arm.com                      case 5:
343412479SCurtis.Dunham@arm.com                        return MISCREG_PMEVTYPER5_EL0;
343512479SCurtis.Dunham@arm.com                    }
343612479SCurtis.Dunham@arm.com                    break;
343712479SCurtis.Dunham@arm.com                  case 15:
343812479SCurtis.Dunham@arm.com                    switch (op2) {
343912479SCurtis.Dunham@arm.com                      case 7:
344012690Sgiacomo.travaglini@arm.com                        return MISCREG_PMCCFILTR_EL0;
344112690Sgiacomo.travaglini@arm.com                    }
344212479SCurtis.Dunham@arm.com                }
344312690Sgiacomo.travaglini@arm.com                break;
344412690Sgiacomo.travaglini@arm.com              case 4:
344512479SCurtis.Dunham@arm.com                switch (crm) {
344612479SCurtis.Dunham@arm.com                  case 0:
344712479SCurtis.Dunham@arm.com                    switch (op2) {
344812479SCurtis.Dunham@arm.com                      case 3:
344912690Sgiacomo.travaglini@arm.com                        return MISCREG_CNTVOFF_EL2;
345012690Sgiacomo.travaglini@arm.com                    }
345112479SCurtis.Dunham@arm.com                    break;
345212690Sgiacomo.travaglini@arm.com                  case 1:
345312690Sgiacomo.travaglini@arm.com                    switch (op2) {
345412479SCurtis.Dunham@arm.com                      case 0:
345512690Sgiacomo.travaglini@arm.com                        return MISCREG_CNTHCTL_EL2;
345612690Sgiacomo.travaglini@arm.com                    }
345712479SCurtis.Dunham@arm.com                    break;
345812690Sgiacomo.travaglini@arm.com                  case 2:
345912690Sgiacomo.travaglini@arm.com                    switch (op2) {
346012479SCurtis.Dunham@arm.com                      case 0:
346112690Sgiacomo.travaglini@arm.com                        return MISCREG_CNTHP_TVAL_EL2;
346212690Sgiacomo.travaglini@arm.com                      case 1:
346312479SCurtis.Dunham@arm.com                        return MISCREG_CNTHP_CTL_EL2;
346412690Sgiacomo.travaglini@arm.com                      case 2:
346512690Sgiacomo.travaglini@arm.com                        return MISCREG_CNTHP_CVAL_EL2;
346612479SCurtis.Dunham@arm.com                    }
346712690Sgiacomo.travaglini@arm.com                    break;
346812690Sgiacomo.travaglini@arm.com                }
346912479SCurtis.Dunham@arm.com                break;
347012690Sgiacomo.travaglini@arm.com              case 7:
347112690Sgiacomo.travaglini@arm.com                switch (crm) {
347212479SCurtis.Dunham@arm.com                  case 2:
347312690Sgiacomo.travaglini@arm.com                    switch (op2) {
347412690Sgiacomo.travaglini@arm.com                      case 0:
347512479SCurtis.Dunham@arm.com                        return MISCREG_CNTPS_TVAL_EL1;
347612690Sgiacomo.travaglini@arm.com                      case 1:
347712690Sgiacomo.travaglini@arm.com                        return MISCREG_CNTPS_CTL_EL1;
347812479SCurtis.Dunham@arm.com                      case 2:
347912690Sgiacomo.travaglini@arm.com                        return MISCREG_CNTPS_CVAL_EL1;
348012690Sgiacomo.travaglini@arm.com                    }
348112479SCurtis.Dunham@arm.com                    break;
348212479SCurtis.Dunham@arm.com                }
348312479SCurtis.Dunham@arm.com                break;
348412479SCurtis.Dunham@arm.com            }
348512479SCurtis.Dunham@arm.com            break;
348612479SCurtis.Dunham@arm.com          case 15:
348712479SCurtis.Dunham@arm.com            switch (op1) {
348812479SCurtis.Dunham@arm.com              case 0:
348912479SCurtis.Dunham@arm.com                switch (crm) {
349012479SCurtis.Dunham@arm.com                  case 0:
349112479SCurtis.Dunham@arm.com                    switch (op2) {
349212479SCurtis.Dunham@arm.com                      case 0:
349312479SCurtis.Dunham@arm.com                        return MISCREG_IL1DATA0_EL1;
349412479SCurtis.Dunham@arm.com                      case 1:
349512479SCurtis.Dunham@arm.com                        return MISCREG_IL1DATA1_EL1;
349612479SCurtis.Dunham@arm.com                      case 2:
349712479SCurtis.Dunham@arm.com                        return MISCREG_IL1DATA2_EL1;
349812479SCurtis.Dunham@arm.com                      case 3:
349912479SCurtis.Dunham@arm.com                        return MISCREG_IL1DATA3_EL1;
350012479SCurtis.Dunham@arm.com                    }
350112479SCurtis.Dunham@arm.com                    break;
350212479SCurtis.Dunham@arm.com                  case 1:
350312479SCurtis.Dunham@arm.com                    switch (op2) {
350412479SCurtis.Dunham@arm.com                      case 0:
350512479SCurtis.Dunham@arm.com                        return MISCREG_DL1DATA0_EL1;
350612479SCurtis.Dunham@arm.com                      case 1:
350712479SCurtis.Dunham@arm.com                        return MISCREG_DL1DATA1_EL1;
350812479SCurtis.Dunham@arm.com                      case 2:
350912479SCurtis.Dunham@arm.com                        return MISCREG_DL1DATA2_EL1;
351012479SCurtis.Dunham@arm.com                      case 3:
351112479SCurtis.Dunham@arm.com                        return MISCREG_DL1DATA3_EL1;
351212479SCurtis.Dunham@arm.com                      case 4:
351312479SCurtis.Dunham@arm.com                        return MISCREG_DL1DATA4_EL1;
351412479SCurtis.Dunham@arm.com                    }
351512479SCurtis.Dunham@arm.com                    break;
351612479SCurtis.Dunham@arm.com                }
351712479SCurtis.Dunham@arm.com                break;
351812479SCurtis.Dunham@arm.com              case 1:
351912479SCurtis.Dunham@arm.com                switch (crm) {
352012479SCurtis.Dunham@arm.com                  case 0:
352112479SCurtis.Dunham@arm.com                    switch (op2) {
352212479SCurtis.Dunham@arm.com                      case 0:
352312479SCurtis.Dunham@arm.com                        return MISCREG_L2ACTLR_EL1;
352412479SCurtis.Dunham@arm.com                    }
352512479SCurtis.Dunham@arm.com                    break;
352612479SCurtis.Dunham@arm.com                  case 2:
352712479SCurtis.Dunham@arm.com                    switch (op2) {
352812479SCurtis.Dunham@arm.com                      case 0:
352912479SCurtis.Dunham@arm.com                        return MISCREG_CPUACTLR_EL1;
353012479SCurtis.Dunham@arm.com                      case 1:
353112479SCurtis.Dunham@arm.com                        return MISCREG_CPUECTLR_EL1;
353212479SCurtis.Dunham@arm.com                      case 2:
353312479SCurtis.Dunham@arm.com                        return MISCREG_CPUMERRSR_EL1;
353412479SCurtis.Dunham@arm.com                      case 3:
353512479SCurtis.Dunham@arm.com                        return MISCREG_L2MERRSR_EL1;
353612479SCurtis.Dunham@arm.com                    }
353712479SCurtis.Dunham@arm.com                    break;
353812479SCurtis.Dunham@arm.com                  case 3:
353912479SCurtis.Dunham@arm.com                    switch (op2) {
354012479SCurtis.Dunham@arm.com                      case 0:
354112479SCurtis.Dunham@arm.com                        return MISCREG_CBAR_EL1;
354212479SCurtis.Dunham@arm.com
354312479SCurtis.Dunham@arm.com                    }
354412479SCurtis.Dunham@arm.com                    break;
354512479SCurtis.Dunham@arm.com                }
354612479SCurtis.Dunham@arm.com                break;
354712479SCurtis.Dunham@arm.com            }
354812479SCurtis.Dunham@arm.com            break;
354912479SCurtis.Dunham@arm.com        }
355012479SCurtis.Dunham@arm.com        break;
355112479SCurtis.Dunham@arm.com    }
355212479SCurtis.Dunham@arm.com
355312479SCurtis.Dunham@arm.com    return MISCREG_UNKNOWN;
355412479SCurtis.Dunham@arm.com}
355512479SCurtis.Dunham@arm.com
355612479SCurtis.Dunham@arm.com} // namespace ArmISA
355712479SCurtis.Dunham@arm.com