miscregs.cc revision 12240
17259Sgblack@eecs.umich.edu/*
211939Snikos.nikoleris@arm.com * Copyright (c) 2010-2013, 2015-2017 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/miscregs.hh"
4311793Sbrandon.potter@amd.com
4411939Snikos.nikoleris@arm.com#include <tuple>
4511939Snikos.nikoleris@arm.com
467405SAli.Saidi@ARM.com#include "arch/arm/isa.hh"
477404SAli.Saidi@ARM.com#include "base/misc.hh"
4810037SARM gem5 Developers#include "cpu/thread_context.hh"
4910828SGiacomo.Gabrielli@arm.com#include "sim/full_system.hh"
507259Sgblack@eecs.umich.edu
517259Sgblack@eecs.umich.edunamespace ArmISA
527259Sgblack@eecs.umich.edu{
537259Sgblack@eecs.umich.edu
547259Sgblack@eecs.umich.eduMiscRegIndex
558868SMatt.Horsnell@arm.comdecodeCP14Reg(unsigned crn, unsigned opc1, unsigned crm, unsigned opc2)
568868SMatt.Horsnell@arm.com{
578868SMatt.Horsnell@arm.com    switch(crn) {
588868SMatt.Horsnell@arm.com      case 0:
5910037SARM gem5 Developers        switch (opc1) {
608868SMatt.Horsnell@arm.com          case 0:
6110037SARM gem5 Developers            switch (opc2) {
628868SMatt.Horsnell@arm.com              case 0:
6310037SARM gem5 Developers                switch (crm) {
6410037SARM gem5 Developers                  case 0:
6510037SARM gem5 Developers                    return MISCREG_DBGDIDR;
6610037SARM gem5 Developers                  case 1:
6710037SARM gem5 Developers                    return MISCREG_DBGDSCRint;
6810037SARM gem5 Developers                }
6910037SARM gem5 Developers                break;
708868SMatt.Horsnell@arm.com            }
7110037SARM gem5 Developers            break;
7210037SARM gem5 Developers          case 7:
7310037SARM gem5 Developers            switch (opc2) {
7410037SARM gem5 Developers              case 0:
7510037SARM gem5 Developers                switch (crm) {
7610037SARM gem5 Developers                  case 0:
7710037SARM gem5 Developers                    return MISCREG_JIDR;
7810037SARM gem5 Developers                }
7910037SARM gem5 Developers              break;
8010037SARM gem5 Developers            }
8110037SARM gem5 Developers            break;
829959Schander.sudanthi@arm.com        }
8310037SARM gem5 Developers        break;
849959Schander.sudanthi@arm.com      case 1:
859959Schander.sudanthi@arm.com        switch (opc1) {
869959Schander.sudanthi@arm.com          case 6:
879959Schander.sudanthi@arm.com            switch (crm) {
889959Schander.sudanthi@arm.com              case 0:
899959Schander.sudanthi@arm.com                switch (opc2) {
909959Schander.sudanthi@arm.com                  case 0:
919959Schander.sudanthi@arm.com                    return MISCREG_TEEHBR;
929959Schander.sudanthi@arm.com                }
9310037SARM gem5 Developers                break;
949959Schander.sudanthi@arm.com            }
9510037SARM gem5 Developers            break;
9610037SARM gem5 Developers          case 7:
9710037SARM gem5 Developers            switch (crm) {
9810037SARM gem5 Developers              case 0:
9910037SARM gem5 Developers                switch (opc2) {
10010037SARM gem5 Developers                  case 0:
10110037SARM gem5 Developers                    return MISCREG_JOSCR;
10210037SARM gem5 Developers                }
10310037SARM gem5 Developers                break;
10410037SARM gem5 Developers            }
10510037SARM gem5 Developers            break;
1068868SMatt.Horsnell@arm.com        }
10710037SARM gem5 Developers        break;
10810037SARM gem5 Developers      case 2:
10910037SARM gem5 Developers        switch (opc1) {
11010037SARM gem5 Developers          case 7:
11110037SARM gem5 Developers            switch (crm) {
11210037SARM gem5 Developers              case 0:
11310037SARM gem5 Developers                switch (opc2) {
11410037SARM gem5 Developers                  case 0:
11510037SARM gem5 Developers                    return MISCREG_JMCR;
11610037SARM gem5 Developers                }
11710037SARM gem5 Developers                break;
11810037SARM gem5 Developers            }
11910037SARM gem5 Developers            break;
12010037SARM gem5 Developers        }
12110037SARM gem5 Developers        break;
1228868SMatt.Horsnell@arm.com    }
12310037SARM gem5 Developers    // If we get here then it must be a register that we haven't implemented
12410037SARM gem5 Developers    warn("CP14 unimplemented crn[%d], opc1[%d], crm[%d], opc2[%d]",
12510037SARM gem5 Developers         crn, opc1, crm, opc2);
12610037SARM gem5 Developers    return MISCREG_CP14_UNIMPL;
12710037SARM gem5 Developers}
1288868SMatt.Horsnell@arm.com
12910037SARM gem5 Developersusing namespace std;
13010037SARM gem5 Developers
13110037SARM gem5 Developersbitset<NUM_MISCREG_INFOS> miscRegInfo[NUM_MISCREGS] = {
13210037SARM gem5 Developers    // MISCREG_CPSR
13310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
13410037SARM gem5 Developers    // MISCREG_SPSR
13510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
13610037SARM gem5 Developers    // MISCREG_SPSR_FIQ
13710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
13810037SARM gem5 Developers    // MISCREG_SPSR_IRQ
13910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
14010037SARM gem5 Developers    // MISCREG_SPSR_SVC
14110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
14210037SARM gem5 Developers    // MISCREG_SPSR_MON
14310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
14410037SARM gem5 Developers    // MISCREG_SPSR_ABT
14510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
14610037SARM gem5 Developers    // MISCREG_SPSR_HYP
14710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
14810037SARM gem5 Developers    // MISCREG_SPSR_UND
14910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
15010037SARM gem5 Developers    // MISCREG_ELR_HYP
15110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
15210037SARM gem5 Developers    // MISCREG_FPSID
15310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
15410037SARM gem5 Developers    // MISCREG_FPSCR
15510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
15610037SARM gem5 Developers    // MISCREG_MVFR1
15710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
15810037SARM gem5 Developers    // MISCREG_MVFR0
15910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
16010037SARM gem5 Developers    // MISCREG_FPEXC
16110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
16210037SARM gem5 Developers
16310037SARM gem5 Developers    // Helper registers
16410037SARM gem5 Developers    // MISCREG_CPSR_MODE
16510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
16610037SARM gem5 Developers    // MISCREG_CPSR_Q
16710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
16810037SARM gem5 Developers    // MISCREG_FPSCR_Q
16910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
17010037SARM gem5 Developers    // MISCREG_FPSCR_EXC
17110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
17210037SARM gem5 Developers    // MISCREG_LOCKADDR
17310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
17410037SARM gem5 Developers    // MISCREG_LOCKFLAG
17510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
17610037SARM gem5 Developers    // MISCREG_PRRR_MAIR0
17710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000011001")),
17810037SARM gem5 Developers    // MISCREG_PRRR_MAIR0_NS
17910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
18010037SARM gem5 Developers    // MISCREG_PRRR_MAIR0_S
18110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
18210037SARM gem5 Developers    // MISCREG_NMRR_MAIR1
18310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000011001")),
18410037SARM gem5 Developers    // MISCREG_NMRR_MAIR1_NS
18510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
18610037SARM gem5 Developers    // MISCREG_NMRR_MAIR1_S
18710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
18810037SARM gem5 Developers    // MISCREG_PMXEVTYPER_PMCCFILTR
18910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000001001")),
19010037SARM gem5 Developers    // MISCREG_SCTLR_RST
19110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
19210037SARM gem5 Developers    // MISCREG_SEV_MAILBOX
19310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
19410037SARM gem5 Developers
19510037SARM gem5 Developers    // AArch32 CP14 registers
19610037SARM gem5 Developers    // MISCREG_DBGDIDR
19710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
19810037SARM gem5 Developers    // MISCREG_DBGDSCRint
19910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
20010037SARM gem5 Developers    // MISCREG_DBGDCCINT
20110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
20210037SARM gem5 Developers    // MISCREG_DBGDTRTXint
20310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
20410037SARM gem5 Developers    // MISCREG_DBGDTRRXint
20510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
20610037SARM gem5 Developers    // MISCREG_DBGWFAR
20710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
20810037SARM gem5 Developers    // MISCREG_DBGVCR
20910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
21010037SARM gem5 Developers    // MISCREG_DBGDTRRXext
21110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
21210037SARM gem5 Developers    // MISCREG_DBGDSCRext
21310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000100")),
21410037SARM gem5 Developers    // MISCREG_DBGDTRTXext
21510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
21610037SARM gem5 Developers    // MISCREG_DBGOSECCR
21710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
21810037SARM gem5 Developers    // MISCREG_DBGBVR0
21910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
22010037SARM gem5 Developers    // MISCREG_DBGBVR1
22110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
22210037SARM gem5 Developers    // MISCREG_DBGBVR2
22310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
22410037SARM gem5 Developers    // MISCREG_DBGBVR3
22510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
22610037SARM gem5 Developers    // MISCREG_DBGBVR4
22710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
22810037SARM gem5 Developers    // MISCREG_DBGBVR5
22910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
23010037SARM gem5 Developers    // MISCREG_DBGBCR0
23110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
23210037SARM gem5 Developers    // MISCREG_DBGBCR1
23310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
23410037SARM gem5 Developers    // MISCREG_DBGBCR2
23510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
23610037SARM gem5 Developers    // MISCREG_DBGBCR3
23710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
23810037SARM gem5 Developers    // MISCREG_DBGBCR4
23910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
24010037SARM gem5 Developers    // MISCREG_DBGBCR5
24110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
24210037SARM gem5 Developers    // MISCREG_DBGWVR0
24310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
24410037SARM gem5 Developers    // MISCREG_DBGWVR1
24510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
24610037SARM gem5 Developers    // MISCREG_DBGWVR2
24710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
24810037SARM gem5 Developers    // MISCREG_DBGWVR3
24910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
25010037SARM gem5 Developers    // MISCREG_DBGWCR0
25110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
25210037SARM gem5 Developers    // MISCREG_DBGWCR1
25310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
25410037SARM gem5 Developers    // MISCREG_DBGWCR2
25510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
25610037SARM gem5 Developers    // MISCREG_DBGWCR3
25710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
25810037SARM gem5 Developers    // MISCREG_DBGDRAR
25910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
26010037SARM gem5 Developers    // MISCREG_DBGBXVR4
26110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
26210037SARM gem5 Developers    // MISCREG_DBGBXVR5
26310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
26410037SARM gem5 Developers    // MISCREG_DBGOSLAR
26510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101111111111000000")),
26610037SARM gem5 Developers    // MISCREG_DBGOSLSR
26710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
26810037SARM gem5 Developers    // MISCREG_DBGOSDLR
26910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
27010037SARM gem5 Developers    // MISCREG_DBGPRCR
27110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
27210037SARM gem5 Developers    // MISCREG_DBGDSAR
27310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
27410037SARM gem5 Developers    // MISCREG_DBGCLAIMSET
27510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
27610037SARM gem5 Developers    // MISCREG_DBGCLAIMCLR
27710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
27810037SARM gem5 Developers    // MISCREG_DBGAUTHSTATUS
27910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
28010037SARM gem5 Developers    // MISCREG_DBGDEVID2
28110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
28210037SARM gem5 Developers    // MISCREG_DBGDEVID1
28310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
28410037SARM gem5 Developers    // MISCREG_DBGDEVID0
28510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
28610037SARM gem5 Developers    // MISCREG_TEECR
28710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
28810037SARM gem5 Developers    // MISCREG_JIDR
28910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
29010037SARM gem5 Developers    // MISCREG_TEEHBR
29110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
29210037SARM gem5 Developers    // MISCREG_JOSCR
29310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
29410037SARM gem5 Developers    // MISCREG_JMCR
29510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
29610037SARM gem5 Developers
29710037SARM gem5 Developers    // AArch32 CP15 registers
29810037SARM gem5 Developers    // MISCREG_MIDR
29910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
30010037SARM gem5 Developers    // MISCREG_CTR
30110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
30210037SARM gem5 Developers    // MISCREG_TCMTR
30310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
30410037SARM gem5 Developers    // MISCREG_TLBTR
30510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
30610037SARM gem5 Developers    // MISCREG_MPIDR
30710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
30810037SARM gem5 Developers    // MISCREG_REVIDR
30910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000100")),
31010037SARM gem5 Developers    // MISCREG_ID_PFR0
31110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
31210037SARM gem5 Developers    // MISCREG_ID_PFR1
31310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
31410037SARM gem5 Developers    // MISCREG_ID_DFR0
31510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
31610037SARM gem5 Developers    // MISCREG_ID_AFR0
31710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
31810037SARM gem5 Developers    // MISCREG_ID_MMFR0
31910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
32010037SARM gem5 Developers    // MISCREG_ID_MMFR1
32110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
32210037SARM gem5 Developers    // MISCREG_ID_MMFR2
32310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
32410037SARM gem5 Developers    // MISCREG_ID_MMFR3
32510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
32610037SARM gem5 Developers    // MISCREG_ID_ISAR0
32710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
32810037SARM gem5 Developers    // MISCREG_ID_ISAR1
32910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
33010037SARM gem5 Developers    // MISCREG_ID_ISAR2
33110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
33210037SARM gem5 Developers    // MISCREG_ID_ISAR3
33310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
33410037SARM gem5 Developers    // MISCREG_ID_ISAR4
33510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
33610037SARM gem5 Developers    // MISCREG_ID_ISAR5
33710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
33810037SARM gem5 Developers    // MISCREG_CCSIDR
33910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
34010037SARM gem5 Developers    // MISCREG_CLIDR
34110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
34210037SARM gem5 Developers    // MISCREG_AIDR
34310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
34410037SARM gem5 Developers    // MISCREG_CSSELR
34510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
34610037SARM gem5 Developers    // MISCREG_CSSELR_NS
34710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
34810037SARM gem5 Developers    // MISCREG_CSSELR_S
34910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
35010037SARM gem5 Developers    // MISCREG_VPIDR
35110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
35210037SARM gem5 Developers    // MISCREG_VMPIDR
35310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
35410037SARM gem5 Developers    // MISCREG_SCTLR
35510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
35610037SARM gem5 Developers    // MISCREG_SCTLR_NS
35710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
35810037SARM gem5 Developers    // MISCREG_SCTLR_S
35910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
36010037SARM gem5 Developers    // MISCREG_ACTLR
36110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
36210037SARM gem5 Developers    // MISCREG_ACTLR_NS
36310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
36410037SARM gem5 Developers    // MISCREG_ACTLR_S
36510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
36610037SARM gem5 Developers    // MISCREG_CPACR
36710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
36810037SARM gem5 Developers    // MISCREG_SCR
36910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110011000000000001")),
37010037SARM gem5 Developers    // MISCREG_SDER
37110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
37210037SARM gem5 Developers    // MISCREG_NSACR
37310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110111010000000001")),
37410037SARM gem5 Developers    // MISCREG_HSCTLR
37510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
37610037SARM gem5 Developers    // MISCREG_HACTLR
37710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
37810037SARM gem5 Developers    // MISCREG_HCR
37910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
38010037SARM gem5 Developers    // MISCREG_HDCR
38110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
38210037SARM gem5 Developers    // MISCREG_HCPTR
38310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
38410037SARM gem5 Developers    // MISCREG_HSTR
38510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
38610037SARM gem5 Developers    // MISCREG_HACR
38710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000100")),
38810037SARM gem5 Developers    // MISCREG_TTBR0
38910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
39010037SARM gem5 Developers    // MISCREG_TTBR0_NS
39110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
39210037SARM gem5 Developers    // MISCREG_TTBR0_S
39310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
39410037SARM gem5 Developers    // MISCREG_TTBR1
39510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
39610037SARM gem5 Developers    // MISCREG_TTBR1_NS
39710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
39810037SARM gem5 Developers    // MISCREG_TTBR1_S
39910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
40010037SARM gem5 Developers    // MISCREG_TTBCR
40110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
40210037SARM gem5 Developers    // MISCREG_TTBCR_NS
40310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
40410037SARM gem5 Developers    // MISCREG_TTBCR_S
40510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
40610037SARM gem5 Developers    // MISCREG_HTCR
40710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
40810037SARM gem5 Developers    // MISCREG_VTCR
40910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
41010037SARM gem5 Developers    // MISCREG_DACR
41110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
41210037SARM gem5 Developers    // MISCREG_DACR_NS
41310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
41410037SARM gem5 Developers    // MISCREG_DACR_S
41510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
41610037SARM gem5 Developers    // MISCREG_DFSR
41710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
41810037SARM gem5 Developers    // MISCREG_DFSR_NS
41910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
42010037SARM gem5 Developers    // MISCREG_DFSR_S
42110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
42210037SARM gem5 Developers    // MISCREG_IFSR
42310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
42410037SARM gem5 Developers    // MISCREG_IFSR_NS
42510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
42610037SARM gem5 Developers    // MISCREG_IFSR_S
42710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
42810037SARM gem5 Developers    // MISCREG_ADFSR
42910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010100")),
43010037SARM gem5 Developers    // MISCREG_ADFSR_NS
43110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100100")),
43210037SARM gem5 Developers    // MISCREG_ADFSR_S
43310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100100")),
43410037SARM gem5 Developers    // MISCREG_AIFSR
43510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010100")),
43610037SARM gem5 Developers    // MISCREG_AIFSR_NS
43710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100100")),
43810037SARM gem5 Developers    // MISCREG_AIFSR_S
43910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100100")),
44010037SARM gem5 Developers    // MISCREG_HADFSR
44110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
44210037SARM gem5 Developers    // MISCREG_HAIFSR
44310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
44410037SARM gem5 Developers    // MISCREG_HSR
44510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
44610037SARM gem5 Developers    // MISCREG_DFAR
44710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
44810037SARM gem5 Developers    // MISCREG_DFAR_NS
44910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
45010037SARM gem5 Developers    // MISCREG_DFAR_S
45110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
45210037SARM gem5 Developers    // MISCREG_IFAR
45310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
45410037SARM gem5 Developers    // MISCREG_IFAR_NS
45510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
45610037SARM gem5 Developers    // MISCREG_IFAR_S
45710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
45810037SARM gem5 Developers    // MISCREG_HDFAR
45910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
46010037SARM gem5 Developers    // MISCREG_HIFAR
46110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
46210037SARM gem5 Developers    // MISCREG_HPFAR
46310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
46410037SARM gem5 Developers    // MISCREG_ICIALLUIS
46510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
46610037SARM gem5 Developers    // MISCREG_BPIALLIS
46710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
46810037SARM gem5 Developers    // MISCREG_PAR
46910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
47010037SARM gem5 Developers    // MISCREG_PAR_NS
47110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
47210037SARM gem5 Developers    // MISCREG_PAR_S
47310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
47410037SARM gem5 Developers    // MISCREG_ICIALLU
47510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
47610037SARM gem5 Developers    // MISCREG_ICIMVAU
47710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
47810037SARM gem5 Developers    // MISCREG_CP15ISB
47910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010101010000001")),
48010037SARM gem5 Developers    // MISCREG_BPIALL
48110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
48210037SARM gem5 Developers    // MISCREG_BPIMVA
48310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
48410037SARM gem5 Developers    // MISCREG_DCIMVAC
48510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
48610037SARM gem5 Developers    // MISCREG_DCISW
48710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
48810037SARM gem5 Developers    // MISCREG_ATS1CPR
48910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
49010037SARM gem5 Developers    // MISCREG_ATS1CPW
49110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
49210037SARM gem5 Developers    // MISCREG_ATS1CUR
49310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
49410037SARM gem5 Developers    // MISCREG_ATS1CUW
49510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
49610037SARM gem5 Developers    // MISCREG_ATS12NSOPR
49710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010000000000001")),
49810037SARM gem5 Developers    // MISCREG_ATS12NSOPW
49910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010000000000001")),
50010037SARM gem5 Developers    // MISCREG_ATS12NSOUR
50110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010000000000001")),
50210037SARM gem5 Developers    // MISCREG_ATS12NSOUW
50310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010000000000001")),
50410037SARM gem5 Developers    // MISCREG_DCCMVAC
50510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
50610037SARM gem5 Developers    // MISCREG_DCCSW
50710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
50810037SARM gem5 Developers    // MISCREG_CP15DSB
50910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010101010000001")),
51010037SARM gem5 Developers    // MISCREG_CP15DMB
51110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010101010000001")),
51210037SARM gem5 Developers    // MISCREG_DCCMVAU
51310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
51410037SARM gem5 Developers    // MISCREG_DCCIMVAC
51510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
51610037SARM gem5 Developers    // MISCREG_DCCISW
51710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
51810037SARM gem5 Developers    // MISCREG_ATS1HR
51910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
52010037SARM gem5 Developers    // MISCREG_ATS1HW
52110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
52210037SARM gem5 Developers    // MISCREG_TLBIALLIS
52310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
52410037SARM gem5 Developers    // MISCREG_TLBIMVAIS
52510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
52610037SARM gem5 Developers    // MISCREG_TLBIASIDIS
52710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
52810037SARM gem5 Developers    // MISCREG_TLBIMVAAIS
52910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
53010037SARM gem5 Developers    // MISCREG_TLBIMVALIS
53110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
53210037SARM gem5 Developers    // MISCREG_TLBIMVAALIS
53310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
53410037SARM gem5 Developers    // MISCREG_ITLBIALL
53510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
53610037SARM gem5 Developers    // MISCREG_ITLBIMVA
53710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
53810037SARM gem5 Developers    // MISCREG_ITLBIASID
53910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
54010037SARM gem5 Developers    // MISCREG_DTLBIALL
54110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
54210037SARM gem5 Developers    // MISCREG_DTLBIMVA
54310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
54410037SARM gem5 Developers    // MISCREG_DTLBIASID
54510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
54610037SARM gem5 Developers    // MISCREG_TLBIALL
54710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
54810037SARM gem5 Developers    // MISCREG_TLBIMVA
54910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
55010037SARM gem5 Developers    // MISCREG_TLBIASID
55110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
55210037SARM gem5 Developers    // MISCREG_TLBIMVAA
55310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
55410037SARM gem5 Developers    // MISCREG_TLBIMVAL
55510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
55610037SARM gem5 Developers    // MISCREG_TLBIMVAAL
55710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
55810037SARM gem5 Developers    // MISCREG_TLBIIPAS2IS
55910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
56010037SARM gem5 Developers    // MISCREG_TLBIIPAS2LIS
56110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
56210037SARM gem5 Developers    // MISCREG_TLBIALLHIS
56310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
56410037SARM gem5 Developers    // MISCREG_TLBIMVAHIS
56510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
56610037SARM gem5 Developers    // MISCREG_TLBIALLNSNHIS
56710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
56810037SARM gem5 Developers    // MISCREG_TLBIMVALHIS
56910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
57010037SARM gem5 Developers    // MISCREG_TLBIIPAS2
57110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
57210037SARM gem5 Developers    // MISCREG_TLBIIPAS2L
57310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
57410037SARM gem5 Developers    // MISCREG_TLBIALLH
57510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
57610037SARM gem5 Developers    // MISCREG_TLBIMVAH
57710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
57810037SARM gem5 Developers    // MISCREG_TLBIALLNSNH
57910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
58010037SARM gem5 Developers    // MISCREG_TLBIMVALH
58110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
58210037SARM gem5 Developers    // MISCREG_PMCR
58310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
58410037SARM gem5 Developers    // MISCREG_PMCNTENSET
58510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
58610037SARM gem5 Developers    // MISCREG_PMCNTENCLR
58710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
58810037SARM gem5 Developers    // MISCREG_PMOVSR
58910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
59010037SARM gem5 Developers    // MISCREG_PMSWINC
59110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
59210037SARM gem5 Developers    // MISCREG_PMSELR
59310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
59410037SARM gem5 Developers    // MISCREG_PMCEID0
59510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
59610037SARM gem5 Developers    // MISCREG_PMCEID1
59710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
59810037SARM gem5 Developers    // MISCREG_PMCCNTR
59910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
60010037SARM gem5 Developers    // MISCREG_PMXEVTYPER
60110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
60210037SARM gem5 Developers    // MISCREG_PMCCFILTR
60310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
60410037SARM gem5 Developers    // MISCREG_PMXEVCNTR
60510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
60610037SARM gem5 Developers    // MISCREG_PMUSERENR
60710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110101000001")),
60810037SARM gem5 Developers    // MISCREG_PMINTENSET
60910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
61010037SARM gem5 Developers    // MISCREG_PMINTENCLR
61110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
61210037SARM gem5 Developers    // MISCREG_PMOVSSET
61310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
61410037SARM gem5 Developers    // MISCREG_L2CTLR
61510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
61610037SARM gem5 Developers    // MISCREG_L2ECTLR
61710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
61810037SARM gem5 Developers    // MISCREG_PRRR
61910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
62010037SARM gem5 Developers    // MISCREG_PRRR_NS
62110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
62210037SARM gem5 Developers    // MISCREG_PRRR_S
62310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
62410037SARM gem5 Developers    // MISCREG_MAIR0
62510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
62610037SARM gem5 Developers    // MISCREG_MAIR0_NS
62710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
62810037SARM gem5 Developers    // MISCREG_MAIR0_S
62910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
63010037SARM gem5 Developers    // MISCREG_NMRR
63110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
63210037SARM gem5 Developers    // MISCREG_NMRR_NS
63310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
63410037SARM gem5 Developers    // MISCREG_NMRR_S
63510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
63610037SARM gem5 Developers    // MISCREG_MAIR1
63710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
63810037SARM gem5 Developers    // MISCREG_MAIR1_NS
63910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
64010037SARM gem5 Developers    // MISCREG_MAIR1_S
64110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
64210037SARM gem5 Developers    // MISCREG_AMAIR0
64310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
64410037SARM gem5 Developers    // MISCREG_AMAIR0_NS
64510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
64610037SARM gem5 Developers    // MISCREG_AMAIR0_S
64710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
64810037SARM gem5 Developers    // MISCREG_AMAIR1
64910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
65010037SARM gem5 Developers    // MISCREG_AMAIR1_NS
65110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
65210037SARM gem5 Developers    // MISCREG_AMAIR1_S
65310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
65410037SARM gem5 Developers    // MISCREG_HMAIR0
65510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
65610037SARM gem5 Developers    // MISCREG_HMAIR1
65710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
65810037SARM gem5 Developers    // MISCREG_HAMAIR0
65910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000100")),
66010037SARM gem5 Developers    // MISCREG_HAMAIR1
66110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000100")),
66210037SARM gem5 Developers    // MISCREG_VBAR
66310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
66410037SARM gem5 Developers    // MISCREG_VBAR_NS
66510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
66610037SARM gem5 Developers    // MISCREG_VBAR_S
66710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
66810037SARM gem5 Developers    // MISCREG_MVBAR
66910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110011000000000001")),
67010037SARM gem5 Developers    // MISCREG_RMR
67110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110011000000000000")),
67210037SARM gem5 Developers    // MISCREG_ISR
67310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
67410037SARM gem5 Developers    // MISCREG_HVBAR
67510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
67610037SARM gem5 Developers    // MISCREG_FCSEIDR
67710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000100")),
67810037SARM gem5 Developers    // MISCREG_CONTEXTIDR
67910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
68010037SARM gem5 Developers    // MISCREG_CONTEXTIDR_NS
68110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
68210037SARM gem5 Developers    // MISCREG_CONTEXTIDR_S
68310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
68410037SARM gem5 Developers    // MISCREG_TPIDRURW
68510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
68610037SARM gem5 Developers    // MISCREG_TPIDRURW_NS
68710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100111111100001")),
68810037SARM gem5 Developers    // MISCREG_TPIDRURW_S
68910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
69010037SARM gem5 Developers    // MISCREG_TPIDRURO
69110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
69210037SARM gem5 Developers    // MISCREG_TPIDRURO_NS
69310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110101100001")),
69410037SARM gem5 Developers    // MISCREG_TPIDRURO_S
69510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
69610037SARM gem5 Developers    // MISCREG_TPIDRPRW
69710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
69810037SARM gem5 Developers    // MISCREG_TPIDRPRW_NS
69910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100110000100001")),
70010037SARM gem5 Developers    // MISCREG_TPIDRPRW_S
70110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
70210037SARM gem5 Developers    // MISCREG_HTPIDR
70310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
70410037SARM gem5 Developers    // MISCREG_CNTFRQ
70510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110101010101000011")),
70610037SARM gem5 Developers    // MISCREG_CNTKCTL
70710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
70810037SARM gem5 Developers    // MISCREG_CNTP_TVAL
70910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
71010037SARM gem5 Developers    // MISCREG_CNTP_TVAL_NS
71110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100111111100001")),
71210037SARM gem5 Developers    // MISCREG_CNTP_TVAL_S
71310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011001111100000")),
71410037SARM gem5 Developers    // MISCREG_CNTP_CTL
71510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
71610037SARM gem5 Developers    // MISCREG_CNTP_CTL_NS
71710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100111111100001")),
71810037SARM gem5 Developers    // MISCREG_CNTP_CTL_S
71910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011001111100000")),
72010037SARM gem5 Developers    // MISCREG_CNTV_TVAL
72110845Sandreas.sandberg@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
72210037SARM gem5 Developers    // MISCREG_CNTV_CTL
72310845Sandreas.sandberg@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
72410037SARM gem5 Developers    // MISCREG_CNTHCTL
72510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01001000000000000000")),
72610037SARM gem5 Developers    // MISCREG_CNTHP_TVAL
72710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01001000000000000000")),
72810037SARM gem5 Developers    // MISCREG_CNTHP_CTL
72910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01001000000000000000")),
73010037SARM gem5 Developers    // MISCREG_IL1DATA0
73110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
73210037SARM gem5 Developers    // MISCREG_IL1DATA1
73310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
73410037SARM gem5 Developers    // MISCREG_IL1DATA2
73510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
73610037SARM gem5 Developers    // MISCREG_IL1DATA3
73710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
73810037SARM gem5 Developers    // MISCREG_DL1DATA0
73910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
74010037SARM gem5 Developers    // MISCREG_DL1DATA1
74110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
74210037SARM gem5 Developers    // MISCREG_DL1DATA2
74310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
74410037SARM gem5 Developers    // MISCREG_DL1DATA3
74510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
74610037SARM gem5 Developers    // MISCREG_DL1DATA4
74710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
74810037SARM gem5 Developers    // MISCREG_RAMINDEX
74910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
75010037SARM gem5 Developers    // MISCREG_L2ACTLR
75110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
75210037SARM gem5 Developers    // MISCREG_CBAR
75310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000000")),
75410037SARM gem5 Developers    // MISCREG_HTTBR
75510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
75610037SARM gem5 Developers    // MISCREG_VTTBR
75710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
75810037SARM gem5 Developers    // MISCREG_CNTPCT
75910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010101000001")),
76010037SARM gem5 Developers    // MISCREG_CNTVCT
76110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010101000011")),
76210037SARM gem5 Developers    // MISCREG_CNTP_CVAL
76310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
76410037SARM gem5 Developers    // MISCREG_CNTP_CVAL_NS
76510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100111111100001")),
76610037SARM gem5 Developers    // MISCREG_CNTP_CVAL_S
76710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00110011001111100000")),
76810037SARM gem5 Developers    // MISCREG_CNTV_CVAL
76910845Sandreas.sandberg@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
77010037SARM gem5 Developers    // MISCREG_CNTVOFF
77110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
77210037SARM gem5 Developers    // MISCREG_CNTHP_CVAL
77310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01001000000000000000")),
77410037SARM gem5 Developers    // MISCREG_CPUMERRSR
77510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
77610037SARM gem5 Developers    // MISCREG_L2MERRSR
77710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000100")),
77810037SARM gem5 Developers
77910037SARM gem5 Developers    // AArch64 registers (Op0=2)
78010037SARM gem5 Developers    // MISCREG_MDCCINT_EL1
78110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
78210037SARM gem5 Developers    // MISCREG_OSDTRRX_EL1
78310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
78410037SARM gem5 Developers    // MISCREG_MDSCR_EL1
78510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
78610037SARM gem5 Developers    // MISCREG_OSDTRTX_EL1
78710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
78810037SARM gem5 Developers    // MISCREG_OSECCR_EL1
78910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
79010037SARM gem5 Developers    // MISCREG_DBGBVR0_EL1
79110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
79210037SARM gem5 Developers    // MISCREG_DBGBVR1_EL1
79310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
79410037SARM gem5 Developers    // MISCREG_DBGBVR2_EL1
79510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
79610037SARM gem5 Developers    // MISCREG_DBGBVR3_EL1
79710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
79810037SARM gem5 Developers    // MISCREG_DBGBVR4_EL1
79910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
80010037SARM gem5 Developers    // MISCREG_DBGBVR5_EL1
80110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
80210037SARM gem5 Developers    // MISCREG_DBGBCR0_EL1
80310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
80410037SARM gem5 Developers    // MISCREG_DBGBCR1_EL1
80510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
80610037SARM gem5 Developers    // MISCREG_DBGBCR2_EL1
80710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
80810037SARM gem5 Developers    // MISCREG_DBGBCR3_EL1
80910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
81010037SARM gem5 Developers    // MISCREG_DBGBCR4_EL1
81110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
81210037SARM gem5 Developers    // MISCREG_DBGBCR5_EL1
81310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
81410037SARM gem5 Developers    // MISCREG_DBGWVR0_EL1
81510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
81610037SARM gem5 Developers    // MISCREG_DBGWVR1_EL1
81710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
81810037SARM gem5 Developers    // MISCREG_DBGWVR2_EL1
81910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
82010037SARM gem5 Developers    // MISCREG_DBGWVR3_EL1
82110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
82210037SARM gem5 Developers    // MISCREG_DBGWCR0_EL1
82310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
82410037SARM gem5 Developers    // MISCREG_DBGWCR1_EL1
82510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
82610037SARM gem5 Developers    // MISCREG_DBGWCR2_EL1
82710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
82810037SARM gem5 Developers    // MISCREG_DBGWCR3_EL1
82910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
83010037SARM gem5 Developers    // MISCREG_MDCCSR_EL0
83110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
83210037SARM gem5 Developers    // MISCREG_MDDTR_EL0
83310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
83410037SARM gem5 Developers    // MISCREG_MDDTRTX_EL0
83510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
83610037SARM gem5 Developers    // MISCREG_MDDTRRX_EL0
83710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
83810037SARM gem5 Developers    // MISCREG_DBGVCR32_EL2
83910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
84010037SARM gem5 Developers    // MISCREG_MDRAR_EL1
84110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
84210037SARM gem5 Developers    // MISCREG_OSLAR_EL1
84310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101111111111000001")),
84410037SARM gem5 Developers    // MISCREG_OSLSR_EL1
84510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
84610037SARM gem5 Developers    // MISCREG_OSDLR_EL1
84710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
84810037SARM gem5 Developers    // MISCREG_DBGPRCR_EL1
84910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
85010037SARM gem5 Developers    // MISCREG_DBGCLAIMSET_EL1
85110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
85210037SARM gem5 Developers    // MISCREG_DBGCLAIMCLR_EL1
85310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
85410037SARM gem5 Developers    // MISCREG_DBGAUTHSTATUS_EL1
85510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
85610037SARM gem5 Developers    // MISCREG_TEECR32_EL1
85710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000000001")),
85810037SARM gem5 Developers    // MISCREG_TEEHBR32_EL1
85910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000000001")),
86010037SARM gem5 Developers
86110037SARM gem5 Developers    // AArch64 registers (Op0=1,3)
86210037SARM gem5 Developers    // MISCREG_MIDR_EL1
86310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
86410037SARM gem5 Developers    // MISCREG_MPIDR_EL1
86510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
86610037SARM gem5 Developers    // MISCREG_REVIDR_EL1
86710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
86810037SARM gem5 Developers    // MISCREG_ID_PFR0_EL1
86910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
87010037SARM gem5 Developers    // MISCREG_ID_PFR1_EL1
87110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
87210037SARM gem5 Developers    // MISCREG_ID_DFR0_EL1
87310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
87410037SARM gem5 Developers    // MISCREG_ID_AFR0_EL1
87510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
87610037SARM gem5 Developers    // MISCREG_ID_MMFR0_EL1
87710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
87810037SARM gem5 Developers    // MISCREG_ID_MMFR1_EL1
87910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
88010037SARM gem5 Developers    // MISCREG_ID_MMFR2_EL1
88110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
88210037SARM gem5 Developers    // MISCREG_ID_MMFR3_EL1
88310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
88410037SARM gem5 Developers    // MISCREG_ID_ISAR0_EL1
88510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
88610037SARM gem5 Developers    // MISCREG_ID_ISAR1_EL1
88710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
88810037SARM gem5 Developers    // MISCREG_ID_ISAR2_EL1
88910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
89010037SARM gem5 Developers    // MISCREG_ID_ISAR3_EL1
89110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
89210037SARM gem5 Developers    // MISCREG_ID_ISAR4_EL1
89310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
89410037SARM gem5 Developers    // MISCREG_ID_ISAR5_EL1
89510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
89610037SARM gem5 Developers    // MISCREG_MVFR0_EL1
89710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
89810037SARM gem5 Developers    // MISCREG_MVFR1_EL1
89910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
90010037SARM gem5 Developers    // MISCREG_MVFR2_EL1
90110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
90210037SARM gem5 Developers    // MISCREG_ID_AA64PFR0_EL1
90310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
90410037SARM gem5 Developers    // MISCREG_ID_AA64PFR1_EL1
90510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
90610037SARM gem5 Developers    // MISCREG_ID_AA64DFR0_EL1
90710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
90810037SARM gem5 Developers    // MISCREG_ID_AA64DFR1_EL1
90910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
91010037SARM gem5 Developers    // MISCREG_ID_AA64AFR0_EL1
91110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
91210037SARM gem5 Developers    // MISCREG_ID_AA64AFR1_EL1
91310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
91410037SARM gem5 Developers    // MISCREG_ID_AA64ISAR0_EL1
91510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
91610037SARM gem5 Developers    // MISCREG_ID_AA64ISAR1_EL1
91710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
91810037SARM gem5 Developers    // MISCREG_ID_AA64MMFR0_EL1
91910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
92010037SARM gem5 Developers    // MISCREG_ID_AA64MMFR1_EL1
92110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
92210037SARM gem5 Developers    // MISCREG_CCSIDR_EL1
92310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
92410037SARM gem5 Developers    // MISCREG_CLIDR_EL1
92510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
92610037SARM gem5 Developers    // MISCREG_AIDR_EL1
92710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
92810037SARM gem5 Developers    // MISCREG_CSSELR_EL1
92910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
93010037SARM gem5 Developers    // MISCREG_CTR_EL0
93110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010101000001")),
93210037SARM gem5 Developers    // MISCREG_DCZID_EL0
93310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010101000001")),
93410037SARM gem5 Developers    // MISCREG_VPIDR_EL2
93510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
93610037SARM gem5 Developers    // MISCREG_VMPIDR_EL2
93710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
93810037SARM gem5 Developers    // MISCREG_SCTLR_EL1
93910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
94010037SARM gem5 Developers    // MISCREG_ACTLR_EL1
94110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
94210037SARM gem5 Developers    // MISCREG_CPACR_EL1
94310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
94410037SARM gem5 Developers    // MISCREG_SCTLR_EL2
94510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
94610037SARM gem5 Developers    // MISCREG_ACTLR_EL2
94710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
94810037SARM gem5 Developers    // MISCREG_HCR_EL2
94910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
95010037SARM gem5 Developers    // MISCREG_MDCR_EL2
95110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
95210037SARM gem5 Developers    // MISCREG_CPTR_EL2
95310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
95410037SARM gem5 Developers    // MISCREG_HSTR_EL2
95510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
95610037SARM gem5 Developers    // MISCREG_HACR_EL2
95710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
95810037SARM gem5 Developers    // MISCREG_SCTLR_EL3
95910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
96010037SARM gem5 Developers    // MISCREG_ACTLR_EL3
96110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
96210037SARM gem5 Developers    // MISCREG_SCR_EL3
96310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
96410037SARM gem5 Developers    // MISCREG_SDER32_EL3
96510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
96610037SARM gem5 Developers    // MISCREG_CPTR_EL3
96710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
96810037SARM gem5 Developers    // MISCREG_MDCR_EL3
96910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
97010037SARM gem5 Developers    // MISCREG_TTBR0_EL1
97110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
97210037SARM gem5 Developers    // MISCREG_TTBR1_EL1
97310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
97410037SARM gem5 Developers    // MISCREG_TCR_EL1
97510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
97610037SARM gem5 Developers    // MISCREG_TTBR0_EL2
97710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
97810037SARM gem5 Developers    // MISCREG_TCR_EL2
97910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
98010037SARM gem5 Developers    // MISCREG_VTTBR_EL2
98110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
98210037SARM gem5 Developers    // MISCREG_VTCR_EL2
98310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
98410037SARM gem5 Developers    // MISCREG_TTBR0_EL3
98510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
98610037SARM gem5 Developers    // MISCREG_TCR_EL3
98710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
98810037SARM gem5 Developers    // MISCREG_DACR32_EL2
98910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
99010037SARM gem5 Developers    // MISCREG_SPSR_EL1
99110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
99210037SARM gem5 Developers    // MISCREG_ELR_EL1
99310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
99410037SARM gem5 Developers    // MISCREG_SP_EL0
99510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
99610037SARM gem5 Developers    // MISCREG_SPSEL
99710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
99810037SARM gem5 Developers    // MISCREG_CURRENTEL
99910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
100010037SARM gem5 Developers    // MISCREG_NZCV
100110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
100210037SARM gem5 Developers    // MISCREG_DAIF
100310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
100410037SARM gem5 Developers    // MISCREG_FPCR
100510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
100610037SARM gem5 Developers    // MISCREG_FPSR
100710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
100810037SARM gem5 Developers    // MISCREG_DSPSR_EL0
100910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
101010037SARM gem5 Developers    // MISCREG_DLR_EL0
101110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
101210037SARM gem5 Developers    // MISCREG_SPSR_EL2
101310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
101410037SARM gem5 Developers    // MISCREG_ELR_EL2
101510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
101610037SARM gem5 Developers    // MISCREG_SP_EL1
101710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
101810037SARM gem5 Developers    // MISCREG_SPSR_IRQ_AA64
101910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
102010037SARM gem5 Developers    // MISCREG_SPSR_ABT_AA64
102110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
102210037SARM gem5 Developers    // MISCREG_SPSR_UND_AA64
102310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
102410037SARM gem5 Developers    // MISCREG_SPSR_FIQ_AA64
102510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
102610037SARM gem5 Developers    // MISCREG_SPSR_EL3
102710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
102810037SARM gem5 Developers    // MISCREG_ELR_EL3
102910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
103010037SARM gem5 Developers    // MISCREG_SP_EL2
103110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
103210037SARM gem5 Developers    // MISCREG_AFSR0_EL1
103310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
103410037SARM gem5 Developers    // MISCREG_AFSR1_EL1
103510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
103610037SARM gem5 Developers    // MISCREG_ESR_EL1
103710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
103810037SARM gem5 Developers    // MISCREG_IFSR32_EL2
103910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
104010037SARM gem5 Developers    // MISCREG_AFSR0_EL2
104110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
104210037SARM gem5 Developers    // MISCREG_AFSR1_EL2
104310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
104410037SARM gem5 Developers    // MISCREG_ESR_EL2
104510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
104610037SARM gem5 Developers    // MISCREG_FPEXC32_EL2
104710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
104810037SARM gem5 Developers    // MISCREG_AFSR0_EL3
104910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
105010037SARM gem5 Developers    // MISCREG_AFSR1_EL3
105110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
105210037SARM gem5 Developers    // MISCREG_ESR_EL3
105310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
105410037SARM gem5 Developers    // MISCREG_FAR_EL1
105510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
105610037SARM gem5 Developers    // MISCREG_FAR_EL2
105710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
105810037SARM gem5 Developers    // MISCREG_HPFAR_EL2
105910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
106010037SARM gem5 Developers    // MISCREG_FAR_EL3
106110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
106210037SARM gem5 Developers    // MISCREG_IC_IALLUIS
106310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
106410037SARM gem5 Developers    // MISCREG_PAR_EL1
106510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
106610037SARM gem5 Developers    // MISCREG_IC_IALLU
106710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
106810037SARM gem5 Developers    // MISCREG_DC_IVAC_Xt
106912240Snikos.nikoleris@arm.com    bitset<NUM_MISCREG_INFOS>(string("10101010101010000101")),
107010037SARM gem5 Developers    // MISCREG_DC_ISW_Xt
107110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
107210037SARM gem5 Developers    // MISCREG_AT_S1E1R_Xt
107310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
107410037SARM gem5 Developers    // MISCREG_AT_S1E1W_Xt
107510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
107610037SARM gem5 Developers    // MISCREG_AT_S1E0R_Xt
107710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
107810037SARM gem5 Developers    // MISCREG_AT_S1E0W_Xt
107910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
108010037SARM gem5 Developers    // MISCREG_DC_CSW_Xt
108110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
108210037SARM gem5 Developers    // MISCREG_DC_CISW_Xt
108310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
108410037SARM gem5 Developers    // MISCREG_DC_ZVA_Xt
108510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100010000101")),
108610037SARM gem5 Developers    // MISCREG_IC_IVAU_Xt
108710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010101010000001")),
108810037SARM gem5 Developers    // MISCREG_DC_CVAC_Xt
108910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010101010000101")),
109010037SARM gem5 Developers    // MISCREG_DC_CVAU_Xt
109110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010101010000101")),
109210037SARM gem5 Developers    // MISCREG_DC_CIVAC_Xt
109310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010101010000101")),
109410037SARM gem5 Developers    // MISCREG_AT_S1E2R_Xt
109510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
109610037SARM gem5 Developers    // MISCREG_AT_S1E2W_Xt
109710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
109810037SARM gem5 Developers    // MISCREG_AT_S12E1R_Xt
109910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
110010037SARM gem5 Developers    // MISCREG_AT_S12E1W_Xt
110110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
110210037SARM gem5 Developers    // MISCREG_AT_S12E0R_Xt
110310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
110410037SARM gem5 Developers    // MISCREG_AT_S12E0W_Xt
110510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
110610037SARM gem5 Developers    // MISCREG_AT_S1E3R_Xt
110710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
110810037SARM gem5 Developers    // MISCREG_AT_S1E3W_Xt
110910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
111010037SARM gem5 Developers    // MISCREG_TLBI_VMALLE1IS
111110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
111210037SARM gem5 Developers    // MISCREG_TLBI_VAE1IS_Xt
111310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
111410037SARM gem5 Developers    // MISCREG_TLBI_ASIDE1IS_Xt
111510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
111610037SARM gem5 Developers    // MISCREG_TLBI_VAAE1IS_Xt
111710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
111810037SARM gem5 Developers    // MISCREG_TLBI_VALE1IS_Xt
111910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
112010037SARM gem5 Developers    // MISCREG_TLBI_VAALE1IS_Xt
112110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
112210037SARM gem5 Developers    // MISCREG_TLBI_VMALLE1
112310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
112410037SARM gem5 Developers    // MISCREG_TLBI_VAE1_Xt
112510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
112610037SARM gem5 Developers    // MISCREG_TLBI_ASIDE1_Xt
112710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
112810037SARM gem5 Developers    // MISCREG_TLBI_VAAE1_Xt
112910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
113010037SARM gem5 Developers    // MISCREG_TLBI_VALE1_Xt
113110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
113210037SARM gem5 Developers    // MISCREG_TLBI_VAALE1_Xt
113310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
113410037SARM gem5 Developers    // MISCREG_TLBI_IPAS2E1IS_Xt
113510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
113610037SARM gem5 Developers    // MISCREG_TLBI_IPAS2LE1IS_Xt
113710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
113810037SARM gem5 Developers    // MISCREG_TLBI_ALLE2IS
113910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
114010037SARM gem5 Developers    // MISCREG_TLBI_VAE2IS_Xt
114110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
114210037SARM gem5 Developers    // MISCREG_TLBI_ALLE1IS
114310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
114410037SARM gem5 Developers    // MISCREG_TLBI_VALE2IS_Xt
114510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
114610037SARM gem5 Developers    // MISCREG_TLBI_VMALLS12E1IS
114710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
114810037SARM gem5 Developers    // MISCREG_TLBI_IPAS2E1_Xt
114910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
115010037SARM gem5 Developers    // MISCREG_TLBI_IPAS2LE1_Xt
115110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
115210037SARM gem5 Developers    // MISCREG_TLBI_ALLE2
115310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
115410037SARM gem5 Developers    // MISCREG_TLBI_VAE2_Xt
115510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
115610037SARM gem5 Developers    // MISCREG_TLBI_ALLE1
115710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
115810037SARM gem5 Developers    // MISCREG_TLBI_VALE2_Xt
115910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
116010037SARM gem5 Developers    // MISCREG_TLBI_VMALLS12E1
116110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
116210037SARM gem5 Developers    // MISCREG_TLBI_ALLE3IS
116310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
116410037SARM gem5 Developers    // MISCREG_TLBI_VAE3IS_Xt
116510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
116610037SARM gem5 Developers    // MISCREG_TLBI_VALE3IS_Xt
116710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
116810037SARM gem5 Developers    // MISCREG_TLBI_ALLE3
116910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
117010037SARM gem5 Developers    // MISCREG_TLBI_VAE3_Xt
117110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
117210037SARM gem5 Developers    // MISCREG_TLBI_VALE3_Xt
117310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
117410037SARM gem5 Developers    // MISCREG_PMINTENSET_EL1
117510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
117610037SARM gem5 Developers    // MISCREG_PMINTENCLR_EL1
117710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
117810037SARM gem5 Developers    // MISCREG_PMCR_EL0
117910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
118010037SARM gem5 Developers    // MISCREG_PMCNTENSET_EL0
118110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
118210037SARM gem5 Developers    // MISCREG_PMCNTENCLR_EL0
118310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
118410037SARM gem5 Developers    // MISCREG_PMOVSCLR_EL0
118510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
118610037SARM gem5 Developers    // MISCREG_PMSWINC_EL0
118710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("10101010101111000001")),
118810037SARM gem5 Developers    // MISCREG_PMSELR_EL0
118910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
119010037SARM gem5 Developers    // MISCREG_PMCEID0_EL0
119110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101011111000001")),
119210037SARM gem5 Developers    // MISCREG_PMCEID1_EL0
119310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101011111000001")),
119410037SARM gem5 Developers    // MISCREG_PMCCNTR_EL0
119510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
119610037SARM gem5 Developers    // MISCREG_PMXEVTYPER_EL0
119710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
119810037SARM gem5 Developers    // MISCREG_PMCCFILTR_EL0
119910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
120010037SARM gem5 Developers    // MISCREG_PMXEVCNTR_EL0
120110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
120210037SARM gem5 Developers    // MISCREG_PMUSERENR_EL0
120310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110101000001")),
120410037SARM gem5 Developers    // MISCREG_PMOVSSET_EL0
120510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
120610037SARM gem5 Developers    // MISCREG_MAIR_EL1
120710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
120810037SARM gem5 Developers    // MISCREG_AMAIR_EL1
120910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
121010037SARM gem5 Developers    // MISCREG_MAIR_EL2
121110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
121210037SARM gem5 Developers    // MISCREG_AMAIR_EL2
121310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
121410037SARM gem5 Developers    // MISCREG_MAIR_EL3
121510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
121610037SARM gem5 Developers    // MISCREG_AMAIR_EL3
121710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
121810037SARM gem5 Developers    // MISCREG_L2CTLR_EL1
121910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
122010037SARM gem5 Developers    // MISCREG_L2ECTLR_EL1
122110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
122210037SARM gem5 Developers    // MISCREG_VBAR_EL1
122310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
122410037SARM gem5 Developers    // MISCREG_RVBAR_EL1
122510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
122610037SARM gem5 Developers    // MISCREG_ISR_EL1
122710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
122810037SARM gem5 Developers    // MISCREG_VBAR_EL2
122910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
123010037SARM gem5 Developers    // MISCREG_RVBAR_EL2
123110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010100000000000001")),
123210037SARM gem5 Developers    // MISCREG_VBAR_EL3
123310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
123410037SARM gem5 Developers    // MISCREG_RVBAR_EL3
123510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010000000000000001")),
123610037SARM gem5 Developers    // MISCREG_RMR_EL3
123710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
123810037SARM gem5 Developers    // MISCREG_CONTEXTIDR_EL1
123910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
124010037SARM gem5 Developers    // MISCREG_TPIDR_EL1
124110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
124210037SARM gem5 Developers    // MISCREG_TPIDR_EL0
124310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
124410037SARM gem5 Developers    // MISCREG_TPIDRRO_EL0
124510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110101000001")),
124610037SARM gem5 Developers    // MISCREG_TPIDR_EL2
124710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
124810037SARM gem5 Developers    // MISCREG_TPIDR_EL3
124910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
125010037SARM gem5 Developers    // MISCREG_CNTKCTL_EL1
125110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
125210037SARM gem5 Developers    // MISCREG_CNTFRQ_EL0
125310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11110101010101000001")),
125410037SARM gem5 Developers    // MISCREG_CNTPCT_EL0
125510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010101000001")),
125610037SARM gem5 Developers    // MISCREG_CNTVCT_EL0
125710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010101000011")),
125810037SARM gem5 Developers    // MISCREG_CNTP_TVAL_EL0
125910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
126010037SARM gem5 Developers    // MISCREG_CNTP_CTL_EL0
126110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
126210037SARM gem5 Developers    // MISCREG_CNTP_CVAL_EL0
126310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
126410037SARM gem5 Developers    // MISCREG_CNTV_TVAL_EL0
126510845Sandreas.sandberg@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
126610037SARM gem5 Developers    // MISCREG_CNTV_CTL_EL0
126710845Sandreas.sandberg@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
126810037SARM gem5 Developers    // MISCREG_CNTV_CVAL_EL0
126910845Sandreas.sandberg@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
127010037SARM gem5 Developers    // MISCREG_PMEVCNTR0_EL0
127110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
127210037SARM gem5 Developers    // MISCREG_PMEVCNTR1_EL0
127310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
127410037SARM gem5 Developers    // MISCREG_PMEVCNTR2_EL0
127510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
127610037SARM gem5 Developers    // MISCREG_PMEVCNTR3_EL0
127710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
127810037SARM gem5 Developers    // MISCREG_PMEVCNTR4_EL0
127910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
128010037SARM gem5 Developers    // MISCREG_PMEVCNTR5_EL0
128110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
128210037SARM gem5 Developers    // MISCREG_PMEVTYPER0_EL0
128310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
128410037SARM gem5 Developers    // MISCREG_PMEVTYPER1_EL0
128510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
128610037SARM gem5 Developers    // MISCREG_PMEVTYPER2_EL0
128710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
128810037SARM gem5 Developers    // MISCREG_PMEVTYPER3_EL0
128910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
129010037SARM gem5 Developers    // MISCREG_PMEVTYPER4_EL0
129110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
129210037SARM gem5 Developers    // MISCREG_PMEVTYPER5_EL0
129310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
129410037SARM gem5 Developers    // MISCREG_CNTVOFF_EL2
129510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
129610037SARM gem5 Developers    // MISCREG_CNTHCTL_EL2
129711587SDylan.Johnson@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01111000000000000100")),
129810037SARM gem5 Developers    // MISCREG_CNTHP_TVAL_EL2
129910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
130010037SARM gem5 Developers    // MISCREG_CNTHP_CTL_EL2
130110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
130210037SARM gem5 Developers    // MISCREG_CNTHP_CVAL_EL2
130310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
130410037SARM gem5 Developers    // MISCREG_CNTPS_TVAL_EL1
130510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
130610037SARM gem5 Developers    // MISCREG_CNTPS_CTL_EL1
130710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
130810037SARM gem5 Developers    // MISCREG_CNTPS_CVAL_EL1
130910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
131010037SARM gem5 Developers    // MISCREG_IL1DATA0_EL1
131110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
131210037SARM gem5 Developers    // MISCREG_IL1DATA1_EL1
131310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
131410037SARM gem5 Developers    // MISCREG_IL1DATA2_EL1
131510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
131610037SARM gem5 Developers    // MISCREG_IL1DATA3_EL1
131710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
131810037SARM gem5 Developers    // MISCREG_DL1DATA0_EL1
131910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
132010037SARM gem5 Developers    // MISCREG_DL1DATA1_EL1
132110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
132210037SARM gem5 Developers    // MISCREG_DL1DATA2_EL1
132310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
132410037SARM gem5 Developers    // MISCREG_DL1DATA3_EL1
132510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
132610037SARM gem5 Developers    // MISCREG_DL1DATA4_EL1
132710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
132810037SARM gem5 Developers    // MISCREG_L2ACTLR_EL1
132910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
133010037SARM gem5 Developers    // MISCREG_CPUACTLR_EL1
133110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
133210037SARM gem5 Developers    // MISCREG_CPUECTLR_EL1
133310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
133410037SARM gem5 Developers    // MISCREG_CPUMERRSR_EL1
133510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
133610037SARM gem5 Developers    // MISCREG_L2MERRSR_EL1
133710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111110000000100")),
133810037SARM gem5 Developers    // MISCREG_CBAR_EL1
133910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
134010856SCurtis.Dunham@arm.com    // MISCREG_CONTEXTIDR_EL2
134110856SCurtis.Dunham@arm.com    bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
134210037SARM gem5 Developers
134310037SARM gem5 Developers    // Dummy registers
134410037SARM gem5 Developers    // MISCREG_NOP
134510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
134610037SARM gem5 Developers    // MISCREG_RAZ
134710506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
134810037SARM gem5 Developers    // MISCREG_CP14_UNIMPL
134910506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000000100")),
135010037SARM gem5 Developers    // MISCREG_CP15_UNIMPL
135110506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000000100")),
135210037SARM gem5 Developers    // MISCREG_A64_UNIMPL
135310506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000000100")),
135410037SARM gem5 Developers    // MISCREG_UNKNOWN
135510506SAli.Saidi@ARM.com    bitset<NUM_MISCREG_INFOS>(string("00000000000000000001"))
135610037SARM gem5 Developers};
13578868SMatt.Horsnell@arm.com
13588868SMatt.Horsnell@arm.comMiscRegIndex
13597259Sgblack@eecs.umich.edudecodeCP15Reg(unsigned crn, unsigned opc1, unsigned crm, unsigned opc2)
13607259Sgblack@eecs.umich.edu{
13617259Sgblack@eecs.umich.edu    switch (crn) {
13627259Sgblack@eecs.umich.edu      case 0:
13637259Sgblack@eecs.umich.edu        switch (opc1) {
13647259Sgblack@eecs.umich.edu          case 0:
13657259Sgblack@eecs.umich.edu            switch (crm) {
13667259Sgblack@eecs.umich.edu              case 0:
13677259Sgblack@eecs.umich.edu                switch (opc2) {
13687259Sgblack@eecs.umich.edu                  case 1:
13697259Sgblack@eecs.umich.edu                    return MISCREG_CTR;
13707259Sgblack@eecs.umich.edu                  case 2:
13717259Sgblack@eecs.umich.edu                    return MISCREG_TCMTR;
13727351Sgblack@eecs.umich.edu                  case 3:
13737351Sgblack@eecs.umich.edu                    return MISCREG_TLBTR;
13747259Sgblack@eecs.umich.edu                  case 5:
13757259Sgblack@eecs.umich.edu                    return MISCREG_MPIDR;
137610037SARM gem5 Developers                  case 6:
137710037SARM gem5 Developers                    return MISCREG_REVIDR;
13787259Sgblack@eecs.umich.edu                  default:
13797259Sgblack@eecs.umich.edu                    return MISCREG_MIDR;
13807259Sgblack@eecs.umich.edu                }
13817259Sgblack@eecs.umich.edu                break;
13827259Sgblack@eecs.umich.edu              case 1:
13837259Sgblack@eecs.umich.edu                switch (opc2) {
13847259Sgblack@eecs.umich.edu                  case 0:
13857259Sgblack@eecs.umich.edu                    return MISCREG_ID_PFR0;
13867259Sgblack@eecs.umich.edu                  case 1:
13877259Sgblack@eecs.umich.edu                    return MISCREG_ID_PFR1;
13887259Sgblack@eecs.umich.edu                  case 2:
13897259Sgblack@eecs.umich.edu                    return MISCREG_ID_DFR0;
13907259Sgblack@eecs.umich.edu                  case 3:
13917259Sgblack@eecs.umich.edu                    return MISCREG_ID_AFR0;
13927259Sgblack@eecs.umich.edu                  case 4:
13937259Sgblack@eecs.umich.edu                    return MISCREG_ID_MMFR0;
13947259Sgblack@eecs.umich.edu                  case 5:
13957259Sgblack@eecs.umich.edu                    return MISCREG_ID_MMFR1;
13967259Sgblack@eecs.umich.edu                  case 6:
13977259Sgblack@eecs.umich.edu                    return MISCREG_ID_MMFR2;
13987259Sgblack@eecs.umich.edu                  case 7:
13997259Sgblack@eecs.umich.edu                    return MISCREG_ID_MMFR3;
14007259Sgblack@eecs.umich.edu                }
14017259Sgblack@eecs.umich.edu                break;
14027259Sgblack@eecs.umich.edu              case 2:
14037259Sgblack@eecs.umich.edu                switch (opc2) {
14047259Sgblack@eecs.umich.edu                  case 0:
14057259Sgblack@eecs.umich.edu                    return MISCREG_ID_ISAR0;
14067259Sgblack@eecs.umich.edu                  case 1:
14077259Sgblack@eecs.umich.edu                    return MISCREG_ID_ISAR1;
14087259Sgblack@eecs.umich.edu                  case 2:
14097259Sgblack@eecs.umich.edu                    return MISCREG_ID_ISAR2;
14107259Sgblack@eecs.umich.edu                  case 3:
14117259Sgblack@eecs.umich.edu                    return MISCREG_ID_ISAR3;
14127259Sgblack@eecs.umich.edu                  case 4:
14137259Sgblack@eecs.umich.edu                    return MISCREG_ID_ISAR4;
14147259Sgblack@eecs.umich.edu                  case 5:
14157259Sgblack@eecs.umich.edu                    return MISCREG_ID_ISAR5;
14167259Sgblack@eecs.umich.edu                  case 6:
14177259Sgblack@eecs.umich.edu                  case 7:
14187259Sgblack@eecs.umich.edu                    return MISCREG_RAZ; // read as zero
14197259Sgblack@eecs.umich.edu                }
14207259Sgblack@eecs.umich.edu                break;
14217259Sgblack@eecs.umich.edu              default:
14227259Sgblack@eecs.umich.edu                return MISCREG_RAZ; // read as zero
14237259Sgblack@eecs.umich.edu            }
14247259Sgblack@eecs.umich.edu            break;
14257259Sgblack@eecs.umich.edu          case 1:
14267259Sgblack@eecs.umich.edu            if (crm == 0) {
14277259Sgblack@eecs.umich.edu                switch (opc2) {
14287259Sgblack@eecs.umich.edu                  case 0:
14297259Sgblack@eecs.umich.edu                    return MISCREG_CCSIDR;
14307259Sgblack@eecs.umich.edu                  case 1:
14317259Sgblack@eecs.umich.edu                    return MISCREG_CLIDR;
14327259Sgblack@eecs.umich.edu                  case 7:
14337259Sgblack@eecs.umich.edu                    return MISCREG_AIDR;
14347259Sgblack@eecs.umich.edu                }
14357259Sgblack@eecs.umich.edu            }
14367259Sgblack@eecs.umich.edu            break;
14377259Sgblack@eecs.umich.edu          case 2:
14387259Sgblack@eecs.umich.edu            if (crm == 0 && opc2 == 0) {
14397259Sgblack@eecs.umich.edu                return MISCREG_CSSELR;
14407259Sgblack@eecs.umich.edu            }
14417259Sgblack@eecs.umich.edu            break;
144210037SARM gem5 Developers          case 4:
144310037SARM gem5 Developers            if (crm == 0) {
144410037SARM gem5 Developers                if (opc2 == 0)
144510037SARM gem5 Developers                    return MISCREG_VPIDR;
144610037SARM gem5 Developers                else if (opc2 == 5)
144710037SARM gem5 Developers                    return MISCREG_VMPIDR;
144810037SARM gem5 Developers            }
144910037SARM gem5 Developers            break;
14507259Sgblack@eecs.umich.edu        }
14517259Sgblack@eecs.umich.edu        break;
14527259Sgblack@eecs.umich.edu      case 1:
14537351Sgblack@eecs.umich.edu        if (opc1 == 0) {
14547351Sgblack@eecs.umich.edu            if (crm == 0) {
14557351Sgblack@eecs.umich.edu                switch (opc2) {
14567351Sgblack@eecs.umich.edu                  case 0:
14577351Sgblack@eecs.umich.edu                    return MISCREG_SCTLR;
14587351Sgblack@eecs.umich.edu                  case 1:
14597351Sgblack@eecs.umich.edu                    return MISCREG_ACTLR;
14607351Sgblack@eecs.umich.edu                  case 0x2:
14617351Sgblack@eecs.umich.edu                    return MISCREG_CPACR;
14627351Sgblack@eecs.umich.edu                }
14637351Sgblack@eecs.umich.edu            } else if (crm == 1) {
14647351Sgblack@eecs.umich.edu                switch (opc2) {
14657351Sgblack@eecs.umich.edu                  case 0:
14667351Sgblack@eecs.umich.edu                    return MISCREG_SCR;
14677351Sgblack@eecs.umich.edu                  case 1:
14687351Sgblack@eecs.umich.edu                    return MISCREG_SDER;
14697351Sgblack@eecs.umich.edu                  case 2:
14707351Sgblack@eecs.umich.edu                    return MISCREG_NSACR;
14717351Sgblack@eecs.umich.edu                }
14727351Sgblack@eecs.umich.edu            }
147310037SARM gem5 Developers        } else if (opc1 == 4) {
147410037SARM gem5 Developers            if (crm == 0) {
147510037SARM gem5 Developers                if (opc2 == 0)
147610037SARM gem5 Developers                    return MISCREG_HSCTLR;
147710037SARM gem5 Developers                else if (opc2 == 1)
147810037SARM gem5 Developers                    return MISCREG_HACTLR;
147910037SARM gem5 Developers            } else if (crm == 1) {
148010037SARM gem5 Developers                switch (opc2) {
148110037SARM gem5 Developers                  case 0:
148210037SARM gem5 Developers                    return MISCREG_HCR;
148310037SARM gem5 Developers                  case 1:
148410037SARM gem5 Developers                    return MISCREG_HDCR;
148510037SARM gem5 Developers                  case 2:
148610037SARM gem5 Developers                    return MISCREG_HCPTR;
148710037SARM gem5 Developers                  case 3:
148810037SARM gem5 Developers                    return MISCREG_HSTR;
148910037SARM gem5 Developers                  case 7:
149010037SARM gem5 Developers                    return MISCREG_HACR;
149110037SARM gem5 Developers                }
149210037SARM gem5 Developers            }
14937351Sgblack@eecs.umich.edu        }
14947351Sgblack@eecs.umich.edu        break;
14957351Sgblack@eecs.umich.edu      case 2:
14967406SAli.Saidi@ARM.com        if (opc1 == 0 && crm == 0) {
14977259Sgblack@eecs.umich.edu            switch (opc2) {
14987259Sgblack@eecs.umich.edu              case 0:
14997351Sgblack@eecs.umich.edu                return MISCREG_TTBR0;
15007259Sgblack@eecs.umich.edu              case 1:
15017351Sgblack@eecs.umich.edu                return MISCREG_TTBR1;
15027351Sgblack@eecs.umich.edu              case 2:
15037351Sgblack@eecs.umich.edu                return MISCREG_TTBCR;
15047259Sgblack@eecs.umich.edu            }
150510037SARM gem5 Developers        } else if (opc1 == 4) {
150610037SARM gem5 Developers            if (crm == 0 && opc2 == 2)
150710037SARM gem5 Developers                return MISCREG_HTCR;
150810037SARM gem5 Developers            else if (crm == 1 && opc2 == 2)
150910037SARM gem5 Developers                return MISCREG_VTCR;
15107259Sgblack@eecs.umich.edu        }
15117259Sgblack@eecs.umich.edu        break;
15127351Sgblack@eecs.umich.edu      case 3:
15137351Sgblack@eecs.umich.edu        if (opc1 == 0 && crm == 0 && opc2 == 0) {
15147351Sgblack@eecs.umich.edu            return MISCREG_DACR;
15157351Sgblack@eecs.umich.edu        }
15167351Sgblack@eecs.umich.edu        break;
15177259Sgblack@eecs.umich.edu      case 5:
15187259Sgblack@eecs.umich.edu        if (opc1 == 0) {
15197259Sgblack@eecs.umich.edu            if (crm == 0) {
15207259Sgblack@eecs.umich.edu                if (opc2 == 0) {
15217259Sgblack@eecs.umich.edu                    return MISCREG_DFSR;
15227259Sgblack@eecs.umich.edu                } else if (opc2 == 1) {
15237259Sgblack@eecs.umich.edu                    return MISCREG_IFSR;
15247259Sgblack@eecs.umich.edu                }
15257259Sgblack@eecs.umich.edu            } else if (crm == 1) {
15267259Sgblack@eecs.umich.edu                if (opc2 == 0) {
15277259Sgblack@eecs.umich.edu                    return MISCREG_ADFSR;
15287259Sgblack@eecs.umich.edu                } else if (opc2 == 1) {
15297259Sgblack@eecs.umich.edu                    return MISCREG_AIFSR;
15307259Sgblack@eecs.umich.edu                }
15317259Sgblack@eecs.umich.edu            }
153210037SARM gem5 Developers        } else if (opc1 == 4) {
153310037SARM gem5 Developers            if (crm == 1) {
153410037SARM gem5 Developers                if (opc2 == 0)
153510037SARM gem5 Developers                    return MISCREG_HADFSR;
153610037SARM gem5 Developers                else if (opc2 == 1)
153710037SARM gem5 Developers                    return MISCREG_HAIFSR;
153810037SARM gem5 Developers            } else if (crm == 2 && opc2 == 0) {
153910037SARM gem5 Developers                return MISCREG_HSR;
154010037SARM gem5 Developers            }
15417259Sgblack@eecs.umich.edu        }
15427259Sgblack@eecs.umich.edu        break;
15437259Sgblack@eecs.umich.edu      case 6:
15447351Sgblack@eecs.umich.edu        if (opc1 == 0 && crm == 0) {
15457351Sgblack@eecs.umich.edu            switch (opc2) {
15467259Sgblack@eecs.umich.edu              case 0:
15477351Sgblack@eecs.umich.edu                return MISCREG_DFAR;
15487259Sgblack@eecs.umich.edu              case 2:
15497351Sgblack@eecs.umich.edu                return MISCREG_IFAR;
15507259Sgblack@eecs.umich.edu            }
155110037SARM gem5 Developers        } else if (opc1 == 4 && crm == 0) {
155210037SARM gem5 Developers            switch (opc2) {
155310037SARM gem5 Developers              case 0:
155410037SARM gem5 Developers                return MISCREG_HDFAR;
155510037SARM gem5 Developers              case 2:
155610037SARM gem5 Developers                return MISCREG_HIFAR;
155710037SARM gem5 Developers              case 4:
155810037SARM gem5 Developers                return MISCREG_HPFAR;
155910037SARM gem5 Developers            }
15607259Sgblack@eecs.umich.edu        }
15617259Sgblack@eecs.umich.edu        break;
15627259Sgblack@eecs.umich.edu      case 7:
15637259Sgblack@eecs.umich.edu        if (opc1 == 0) {
15647259Sgblack@eecs.umich.edu            switch (crm) {
15657259Sgblack@eecs.umich.edu              case 0:
15667259Sgblack@eecs.umich.edu                if (opc2 == 4) {
15677259Sgblack@eecs.umich.edu                    return MISCREG_NOP;
15687259Sgblack@eecs.umich.edu                }
15697259Sgblack@eecs.umich.edu                break;
15707259Sgblack@eecs.umich.edu              case 1:
15717259Sgblack@eecs.umich.edu                switch (opc2) {
15727259Sgblack@eecs.umich.edu                  case 0:
15737259Sgblack@eecs.umich.edu                    return MISCREG_ICIALLUIS;
15747259Sgblack@eecs.umich.edu                  case 6:
15757259Sgblack@eecs.umich.edu                    return MISCREG_BPIALLIS;
15767259Sgblack@eecs.umich.edu                }
15777259Sgblack@eecs.umich.edu                break;
15787351Sgblack@eecs.umich.edu              case 4:
15797351Sgblack@eecs.umich.edu                if (opc2 == 0) {
15807351Sgblack@eecs.umich.edu                    return MISCREG_PAR;
15817351Sgblack@eecs.umich.edu                }
15827351Sgblack@eecs.umich.edu                break;
15837259Sgblack@eecs.umich.edu              case 5:
15847259Sgblack@eecs.umich.edu                switch (opc2) {
15857259Sgblack@eecs.umich.edu                  case 0:
15867259Sgblack@eecs.umich.edu                    return MISCREG_ICIALLU;
15877259Sgblack@eecs.umich.edu                  case 1:
15887259Sgblack@eecs.umich.edu                    return MISCREG_ICIMVAU;
15897259Sgblack@eecs.umich.edu                  case 4:
15907259Sgblack@eecs.umich.edu                    return MISCREG_CP15ISB;
15917259Sgblack@eecs.umich.edu                  case 6:
15927259Sgblack@eecs.umich.edu                    return MISCREG_BPIALL;
15937259Sgblack@eecs.umich.edu                  case 7:
15947259Sgblack@eecs.umich.edu                    return MISCREG_BPIMVA;
15957259Sgblack@eecs.umich.edu                }
15967259Sgblack@eecs.umich.edu                break;
15977259Sgblack@eecs.umich.edu              case 6:
15987259Sgblack@eecs.umich.edu                if (opc2 == 1) {
15997259Sgblack@eecs.umich.edu                    return MISCREG_DCIMVAC;
16007259Sgblack@eecs.umich.edu                } else if (opc2 == 2) {
16017259Sgblack@eecs.umich.edu                    return MISCREG_DCISW;
16027259Sgblack@eecs.umich.edu                }
16037259Sgblack@eecs.umich.edu                break;
16047351Sgblack@eecs.umich.edu              case 8:
16057351Sgblack@eecs.umich.edu                switch (opc2) {
16067351Sgblack@eecs.umich.edu                  case 0:
160710037SARM gem5 Developers                    return MISCREG_ATS1CPR;
16087351Sgblack@eecs.umich.edu                  case 1:
160910037SARM gem5 Developers                    return MISCREG_ATS1CPW;
16107351Sgblack@eecs.umich.edu                  case 2:
161110037SARM gem5 Developers                    return MISCREG_ATS1CUR;
16127351Sgblack@eecs.umich.edu                  case 3:
161310037SARM gem5 Developers                    return MISCREG_ATS1CUW;
16147351Sgblack@eecs.umich.edu                  case 4:
161510037SARM gem5 Developers                    return MISCREG_ATS12NSOPR;
16167351Sgblack@eecs.umich.edu                  case 5:
161710037SARM gem5 Developers                    return MISCREG_ATS12NSOPW;
16187351Sgblack@eecs.umich.edu                  case 6:
161910037SARM gem5 Developers                    return MISCREG_ATS12NSOUR;
16207351Sgblack@eecs.umich.edu                  case 7:
162110037SARM gem5 Developers                    return MISCREG_ATS12NSOUW;
16227351Sgblack@eecs.umich.edu                }
16237351Sgblack@eecs.umich.edu                break;
16247259Sgblack@eecs.umich.edu              case 10:
16257259Sgblack@eecs.umich.edu                switch (opc2) {
16267259Sgblack@eecs.umich.edu                  case 1:
16277259Sgblack@eecs.umich.edu                    return MISCREG_DCCMVAC;
16287259Sgblack@eecs.umich.edu                  case 2:
162910037SARM gem5 Developers                    return MISCREG_DCCSW;
16307259Sgblack@eecs.umich.edu                  case 4:
16317259Sgblack@eecs.umich.edu                    return MISCREG_CP15DSB;
16327259Sgblack@eecs.umich.edu                  case 5:
16337259Sgblack@eecs.umich.edu                    return MISCREG_CP15DMB;
16347259Sgblack@eecs.umich.edu                }
16357259Sgblack@eecs.umich.edu                break;
16367259Sgblack@eecs.umich.edu              case 11:
16377259Sgblack@eecs.umich.edu                if (opc2 == 1) {
16387259Sgblack@eecs.umich.edu                    return MISCREG_DCCMVAU;
16397259Sgblack@eecs.umich.edu                }
16407259Sgblack@eecs.umich.edu                break;
16417259Sgblack@eecs.umich.edu              case 13:
16427259Sgblack@eecs.umich.edu                if (opc2 == 1) {
16437259Sgblack@eecs.umich.edu                    return MISCREG_NOP;
16447259Sgblack@eecs.umich.edu                }
16457259Sgblack@eecs.umich.edu                break;
16467259Sgblack@eecs.umich.edu              case 14:
16477259Sgblack@eecs.umich.edu                if (opc2 == 1) {
16487259Sgblack@eecs.umich.edu                    return MISCREG_DCCIMVAC;
16497259Sgblack@eecs.umich.edu                } else if (opc2 == 2) {
16507259Sgblack@eecs.umich.edu                    return MISCREG_DCCISW;
16517259Sgblack@eecs.umich.edu                }
16527259Sgblack@eecs.umich.edu                break;
16537259Sgblack@eecs.umich.edu            }
165410037SARM gem5 Developers        } else if (opc1 == 4 && crm == 8) {
165510037SARM gem5 Developers            if (opc2 == 0)
165610037SARM gem5 Developers                return MISCREG_ATS1HR;
165710037SARM gem5 Developers            else if (opc2 == 1)
165810037SARM gem5 Developers                return MISCREG_ATS1HW;
16597259Sgblack@eecs.umich.edu        }
16607259Sgblack@eecs.umich.edu        break;
16617351Sgblack@eecs.umich.edu      case 8:
16627351Sgblack@eecs.umich.edu        if (opc1 == 0) {
16637351Sgblack@eecs.umich.edu            switch (crm) {
16647351Sgblack@eecs.umich.edu              case 3:
16657351Sgblack@eecs.umich.edu                switch (opc2) {
16667351Sgblack@eecs.umich.edu                  case 0:
16677351Sgblack@eecs.umich.edu                    return MISCREG_TLBIALLIS;
16687351Sgblack@eecs.umich.edu                  case 1:
16697351Sgblack@eecs.umich.edu                    return MISCREG_TLBIMVAIS;
16707351Sgblack@eecs.umich.edu                  case 2:
16717351Sgblack@eecs.umich.edu                    return MISCREG_TLBIASIDIS;
16727351Sgblack@eecs.umich.edu                  case 3:
16737351Sgblack@eecs.umich.edu                    return MISCREG_TLBIMVAAIS;
16747351Sgblack@eecs.umich.edu                }
16757351Sgblack@eecs.umich.edu                break;
16767351Sgblack@eecs.umich.edu              case 5:
16777351Sgblack@eecs.umich.edu                switch (opc2) {
16787351Sgblack@eecs.umich.edu                  case 0:
16797351Sgblack@eecs.umich.edu                    return MISCREG_ITLBIALL;
16807351Sgblack@eecs.umich.edu                  case 1:
16817351Sgblack@eecs.umich.edu                    return MISCREG_ITLBIMVA;
16827351Sgblack@eecs.umich.edu                  case 2:
16837351Sgblack@eecs.umich.edu                    return MISCREG_ITLBIASID;
16847351Sgblack@eecs.umich.edu                }
16857351Sgblack@eecs.umich.edu                break;
16867351Sgblack@eecs.umich.edu              case 6:
16877351Sgblack@eecs.umich.edu                switch (opc2) {
16887351Sgblack@eecs.umich.edu                  case 0:
16897351Sgblack@eecs.umich.edu                    return MISCREG_DTLBIALL;
16907351Sgblack@eecs.umich.edu                  case 1:
16917351Sgblack@eecs.umich.edu                    return MISCREG_DTLBIMVA;
16927351Sgblack@eecs.umich.edu                  case 2:
16937351Sgblack@eecs.umich.edu                    return MISCREG_DTLBIASID;
16947351Sgblack@eecs.umich.edu                }
16957351Sgblack@eecs.umich.edu                break;
16967351Sgblack@eecs.umich.edu              case 7:
16977351Sgblack@eecs.umich.edu                switch (opc2) {
16987351Sgblack@eecs.umich.edu                  case 0:
16997351Sgblack@eecs.umich.edu                    return MISCREG_TLBIALL;
17007351Sgblack@eecs.umich.edu                  case 1:
17017351Sgblack@eecs.umich.edu                    return MISCREG_TLBIMVA;
17027351Sgblack@eecs.umich.edu                  case 2:
17037351Sgblack@eecs.umich.edu                    return MISCREG_TLBIASID;
17047351Sgblack@eecs.umich.edu                  case 3:
17057351Sgblack@eecs.umich.edu                    return MISCREG_TLBIMVAA;
17067351Sgblack@eecs.umich.edu                }
17077351Sgblack@eecs.umich.edu                break;
17087351Sgblack@eecs.umich.edu            }
170910037SARM gem5 Developers        } else if (opc1 == 4) {
171010037SARM gem5 Developers            if (crm == 3) {
171110037SARM gem5 Developers                switch (opc2) {
171210037SARM gem5 Developers                  case 0:
171310037SARM gem5 Developers                    return MISCREG_TLBIALLHIS;
171410037SARM gem5 Developers                  case 1:
171510037SARM gem5 Developers                    return MISCREG_TLBIMVAHIS;
171610037SARM gem5 Developers                  case 4:
171710037SARM gem5 Developers                    return MISCREG_TLBIALLNSNHIS;
171810037SARM gem5 Developers                }
171910037SARM gem5 Developers            } else if (crm == 7) {
172010037SARM gem5 Developers                switch (opc2) {
172110037SARM gem5 Developers                  case 0:
172210037SARM gem5 Developers                    return MISCREG_TLBIALLH;
172310037SARM gem5 Developers                  case 1:
172410037SARM gem5 Developers                    return MISCREG_TLBIMVAH;
172510037SARM gem5 Developers                  case 4:
172610037SARM gem5 Developers                    return MISCREG_TLBIALLNSNH;
172710037SARM gem5 Developers                }
172810037SARM gem5 Developers            }
17297351Sgblack@eecs.umich.edu        }
17307351Sgblack@eecs.umich.edu        break;
17317259Sgblack@eecs.umich.edu      case 9:
17327583SAli.Saidi@arm.com        if (opc1 == 0) {
17337259Sgblack@eecs.umich.edu            switch (crm) {
17347259Sgblack@eecs.umich.edu              case 12:
17357583SAli.Saidi@arm.com                switch (opc2) {
17367583SAli.Saidi@arm.com                  case 0:
17377583SAli.Saidi@arm.com                    return MISCREG_PMCR;
17387583SAli.Saidi@arm.com                  case 1:
17397583SAli.Saidi@arm.com                    return MISCREG_PMCNTENSET;
17407583SAli.Saidi@arm.com                  case 2:
17417583SAli.Saidi@arm.com                    return MISCREG_PMCNTENCLR;
17427583SAli.Saidi@arm.com                  case 3:
17437583SAli.Saidi@arm.com                    return MISCREG_PMOVSR;
17447583SAli.Saidi@arm.com                  case 4:
17457583SAli.Saidi@arm.com                    return MISCREG_PMSWINC;
17467583SAli.Saidi@arm.com                  case 5:
17477583SAli.Saidi@arm.com                    return MISCREG_PMSELR;
17487583SAli.Saidi@arm.com                  case 6:
17497583SAli.Saidi@arm.com                    return MISCREG_PMCEID0;
17507583SAli.Saidi@arm.com                  case 7:
17517583SAli.Saidi@arm.com                    return MISCREG_PMCEID1;
17527583SAli.Saidi@arm.com                }
17538988SAli.Saidi@ARM.com                break;
17547259Sgblack@eecs.umich.edu              case 13:
17557583SAli.Saidi@arm.com                switch (opc2) {
17567583SAli.Saidi@arm.com                  case 0:
17577583SAli.Saidi@arm.com                    return MISCREG_PMCCNTR;
17587583SAli.Saidi@arm.com                  case 1:
175910037SARM gem5 Developers                    // Selector is PMSELR.SEL
176010037SARM gem5 Developers                    return MISCREG_PMXEVTYPER_PMCCFILTR;
17617583SAli.Saidi@arm.com                  case 2:
17627583SAli.Saidi@arm.com                    return MISCREG_PMXEVCNTR;
17637583SAli.Saidi@arm.com                }
17648988SAli.Saidi@ARM.com                break;
17657259Sgblack@eecs.umich.edu              case 14:
17667583SAli.Saidi@arm.com                switch (opc2) {
17677583SAli.Saidi@arm.com                  case 0:
17687583SAli.Saidi@arm.com                    return MISCREG_PMUSERENR;
17697583SAli.Saidi@arm.com                  case 1:
17707583SAli.Saidi@arm.com                    return MISCREG_PMINTENSET;
17717583SAli.Saidi@arm.com                  case 2:
17727583SAli.Saidi@arm.com                    return MISCREG_PMINTENCLR;
177310037SARM gem5 Developers                  case 3:
177410037SARM gem5 Developers                    return MISCREG_PMOVSSET;
17757583SAli.Saidi@arm.com                }
17768988SAli.Saidi@ARM.com                break;
17777259Sgblack@eecs.umich.edu            }
17788058SAli.Saidi@ARM.com        } else if (opc1 == 1) {
17798549Sdaniel.johnson@arm.com            switch (crm) {
17808549Sdaniel.johnson@arm.com              case 0:
17818549Sdaniel.johnson@arm.com                switch (opc2) {
17828549Sdaniel.johnson@arm.com                  case 2: // L2CTLR, L2 Control Register
17838549Sdaniel.johnson@arm.com                    return MISCREG_L2CTLR;
178410037SARM gem5 Developers                  case 3:
178510037SARM gem5 Developers                    return MISCREG_L2ECTLR;
17868549Sdaniel.johnson@arm.com                }
17878988SAli.Saidi@ARM.com                break;
178810037SARM gem5 Developers                break;
17898549Sdaniel.johnson@arm.com            }
17907259Sgblack@eecs.umich.edu        }
17917259Sgblack@eecs.umich.edu        break;
17927351Sgblack@eecs.umich.edu      case 10:
17937351Sgblack@eecs.umich.edu        if (opc1 == 0) {
17947351Sgblack@eecs.umich.edu            // crm 0, 1, 4, and 8, with op2 0 - 7, reserved for TLB lockdown
17957351Sgblack@eecs.umich.edu            if (crm == 2) { // TEX Remap Registers
17967351Sgblack@eecs.umich.edu                if (opc2 == 0) {
179710037SARM gem5 Developers                    // Selector is TTBCR.EAE
179810037SARM gem5 Developers                    return MISCREG_PRRR_MAIR0;
17997351Sgblack@eecs.umich.edu                } else if (opc2 == 1) {
180010037SARM gem5 Developers                    // Selector is TTBCR.EAE
180110037SARM gem5 Developers                    return MISCREG_NMRR_MAIR1;
18027351Sgblack@eecs.umich.edu                }
180310037SARM gem5 Developers            } else if (crm == 3) {
180410037SARM gem5 Developers                if (opc2 == 0) {
180510037SARM gem5 Developers                    return MISCREG_AMAIR0;
180610037SARM gem5 Developers                } else if (opc2 == 1) {
180710037SARM gem5 Developers                    return MISCREG_AMAIR1;
180810037SARM gem5 Developers                }
180910037SARM gem5 Developers            }
181010037SARM gem5 Developers        } else if (opc1 == 4) {
181110037SARM gem5 Developers            // crm 0, 1, 4, and 8, with op2 0 - 7, reserved for TLB lockdown
181210037SARM gem5 Developers            if (crm == 2) {
181310037SARM gem5 Developers                if (opc2 == 0)
181410037SARM gem5 Developers                    return MISCREG_HMAIR0;
181510037SARM gem5 Developers                else if (opc2 == 1)
181610037SARM gem5 Developers                    return MISCREG_HMAIR1;
181710037SARM gem5 Developers            } else if (crm == 3) {
181810037SARM gem5 Developers                if (opc2 == 0)
181910037SARM gem5 Developers                    return MISCREG_HAMAIR0;
182010037SARM gem5 Developers                else if (opc2 == 1)
182110037SARM gem5 Developers                    return MISCREG_HAMAIR1;
18227351Sgblack@eecs.umich.edu            }
18237351Sgblack@eecs.umich.edu        }
18247351Sgblack@eecs.umich.edu        break;
18257259Sgblack@eecs.umich.edu      case 11:
18268737Skoansin.tan@gmail.com        if (opc1 <=7) {
18277259Sgblack@eecs.umich.edu            switch (crm) {
18287259Sgblack@eecs.umich.edu              case 0:
18297259Sgblack@eecs.umich.edu              case 1:
18307259Sgblack@eecs.umich.edu              case 2:
18317259Sgblack@eecs.umich.edu              case 3:
18327259Sgblack@eecs.umich.edu              case 4:
18337259Sgblack@eecs.umich.edu              case 5:
18347259Sgblack@eecs.umich.edu              case 6:
18357259Sgblack@eecs.umich.edu              case 7:
18367259Sgblack@eecs.umich.edu              case 8:
18377259Sgblack@eecs.umich.edu              case 15:
18387259Sgblack@eecs.umich.edu                // Reserved for DMA operations for TCM access
18397259Sgblack@eecs.umich.edu                break;
18407259Sgblack@eecs.umich.edu            }
18417259Sgblack@eecs.umich.edu        }
18427259Sgblack@eecs.umich.edu        break;
18437351Sgblack@eecs.umich.edu      case 12:
18447351Sgblack@eecs.umich.edu        if (opc1 == 0) {
18457351Sgblack@eecs.umich.edu            if (crm == 0) {
18467351Sgblack@eecs.umich.edu                if (opc2 == 0) {
18477351Sgblack@eecs.umich.edu                    return MISCREG_VBAR;
18487351Sgblack@eecs.umich.edu                } else if (opc2 == 1) {
18497351Sgblack@eecs.umich.edu                    return MISCREG_MVBAR;
18507351Sgblack@eecs.umich.edu                }
18517351Sgblack@eecs.umich.edu            } else if (crm == 1) {
18527351Sgblack@eecs.umich.edu                if (opc2 == 0) {
18537351Sgblack@eecs.umich.edu                    return MISCREG_ISR;
18547351Sgblack@eecs.umich.edu                }
18557351Sgblack@eecs.umich.edu            }
185610037SARM gem5 Developers        } else if (opc1 == 4) {
185710037SARM gem5 Developers            if (crm == 0 && opc2 == 0)
185810037SARM gem5 Developers                return MISCREG_HVBAR;
18597351Sgblack@eecs.umich.edu        }
18607351Sgblack@eecs.umich.edu        break;
18617259Sgblack@eecs.umich.edu      case 13:
18627259Sgblack@eecs.umich.edu        if (opc1 == 0) {
18637259Sgblack@eecs.umich.edu            if (crm == 0) {
18647406SAli.Saidi@ARM.com                switch (opc2) {
18657351Sgblack@eecs.umich.edu                  case 0:
186610037SARM gem5 Developers                    return MISCREG_FCSEIDR;
18677259Sgblack@eecs.umich.edu                  case 1:
18687259Sgblack@eecs.umich.edu                    return MISCREG_CONTEXTIDR;
18697259Sgblack@eecs.umich.edu                  case 2:
18707259Sgblack@eecs.umich.edu                    return MISCREG_TPIDRURW;
18717259Sgblack@eecs.umich.edu                  case 3:
18727259Sgblack@eecs.umich.edu                    return MISCREG_TPIDRURO;
18737259Sgblack@eecs.umich.edu                  case 4:
18747259Sgblack@eecs.umich.edu                    return MISCREG_TPIDRPRW;
18757259Sgblack@eecs.umich.edu                }
18767259Sgblack@eecs.umich.edu            }
187710037SARM gem5 Developers        } else if (opc1 == 4) {
187810037SARM gem5 Developers            if (crm == 0 && opc2 == 2)
187910037SARM gem5 Developers                return MISCREG_HTPIDR;
188010037SARM gem5 Developers        }
188110037SARM gem5 Developers        break;
188210037SARM gem5 Developers      case 14:
188310037SARM gem5 Developers        if (opc1 == 0) {
188410037SARM gem5 Developers            switch (crm) {
188510037SARM gem5 Developers              case 0:
188610037SARM gem5 Developers                if (opc2 == 0)
188710037SARM gem5 Developers                    return MISCREG_CNTFRQ;
188810037SARM gem5 Developers                break;
188910037SARM gem5 Developers              case 1:
189010037SARM gem5 Developers                if (opc2 == 0)
189110037SARM gem5 Developers                    return MISCREG_CNTKCTL;
189210037SARM gem5 Developers                break;
189310037SARM gem5 Developers              case 2:
189410037SARM gem5 Developers                if (opc2 == 0)
189510037SARM gem5 Developers                    return MISCREG_CNTP_TVAL;
189610037SARM gem5 Developers                else if (opc2 == 1)
189710037SARM gem5 Developers                    return MISCREG_CNTP_CTL;
189810037SARM gem5 Developers                break;
189910037SARM gem5 Developers              case 3:
190010037SARM gem5 Developers                if (opc2 == 0)
190110037SARM gem5 Developers                    return MISCREG_CNTV_TVAL;
190210037SARM gem5 Developers                else if (opc2 == 1)
190310037SARM gem5 Developers                    return MISCREG_CNTV_CTL;
190410037SARM gem5 Developers                break;
190510037SARM gem5 Developers            }
190610037SARM gem5 Developers        } else if (opc1 == 4) {
190710037SARM gem5 Developers            if (crm == 1 && opc2 == 0) {
190810037SARM gem5 Developers                return MISCREG_CNTHCTL;
190910037SARM gem5 Developers            } else if (crm == 2) {
191010037SARM gem5 Developers                if (opc2 == 0)
191110037SARM gem5 Developers                    return MISCREG_CNTHP_TVAL;
191210037SARM gem5 Developers                else if (opc2 == 1)
191310037SARM gem5 Developers                    return MISCREG_CNTHP_CTL;
191410037SARM gem5 Developers            }
19157259Sgblack@eecs.umich.edu        }
19167259Sgblack@eecs.umich.edu        break;
19177259Sgblack@eecs.umich.edu      case 15:
19187259Sgblack@eecs.umich.edu        // Implementation defined
191910037SARM gem5 Developers        return MISCREG_CP15_UNIMPL;
19207259Sgblack@eecs.umich.edu    }
19217259Sgblack@eecs.umich.edu    // Unrecognized register
192210037SARM gem5 Developers    return MISCREG_CP15_UNIMPL;
19237259Sgblack@eecs.umich.edu}
19247259Sgblack@eecs.umich.edu
192510037SARM gem5 DevelopersMiscRegIndex
192610037SARM gem5 DevelopersdecodeCP15Reg64(unsigned crm, unsigned opc1)
192710037SARM gem5 Developers{
192810037SARM gem5 Developers    switch (crm) {
192910037SARM gem5 Developers      case 2:
193010037SARM gem5 Developers        switch (opc1) {
193110037SARM gem5 Developers          case 0:
193210037SARM gem5 Developers            return MISCREG_TTBR0;
193310037SARM gem5 Developers          case 1:
193410037SARM gem5 Developers            return MISCREG_TTBR1;
193510037SARM gem5 Developers          case 4:
193610037SARM gem5 Developers            return MISCREG_HTTBR;
193710037SARM gem5 Developers          case 6:
193810037SARM gem5 Developers            return MISCREG_VTTBR;
193910037SARM gem5 Developers        }
194010037SARM gem5 Developers        break;
194110037SARM gem5 Developers      case 7:
194210037SARM gem5 Developers        if (opc1 == 0)
194310037SARM gem5 Developers            return MISCREG_PAR;
194410037SARM gem5 Developers        break;
194510037SARM gem5 Developers      case 14:
194610037SARM gem5 Developers        switch (opc1) {
194710037SARM gem5 Developers          case 0:
194810037SARM gem5 Developers            return MISCREG_CNTPCT;
194910037SARM gem5 Developers          case 1:
195010037SARM gem5 Developers            return MISCREG_CNTVCT;
195110037SARM gem5 Developers          case 2:
195210037SARM gem5 Developers            return MISCREG_CNTP_CVAL;
195310037SARM gem5 Developers          case 3:
195410037SARM gem5 Developers            return MISCREG_CNTV_CVAL;
195510037SARM gem5 Developers          case 4:
195610037SARM gem5 Developers            return MISCREG_CNTVOFF;
195710037SARM gem5 Developers          case 6:
195810037SARM gem5 Developers            return MISCREG_CNTHP_CVAL;
195910037SARM gem5 Developers        }
196010037SARM gem5 Developers        break;
196110037SARM gem5 Developers      case 15:
196210037SARM gem5 Developers        if (opc1 == 0)
196310037SARM gem5 Developers            return MISCREG_CPUMERRSR;
196410037SARM gem5 Developers        else if (opc1 == 1)
196510037SARM gem5 Developers            return MISCREG_L2MERRSR;
196610037SARM gem5 Developers        break;
196710037SARM gem5 Developers    }
196810037SARM gem5 Developers    // Unrecognized register
196910037SARM gem5 Developers    return MISCREG_CP15_UNIMPL;
19708902Sandreas.hansson@arm.com}
197110037SARM gem5 Developers
197211939Snikos.nikoleris@arm.comstd::tuple<bool, bool>
197311939Snikos.nikoleris@arm.comcanReadCoprocReg(MiscRegIndex reg, SCR scr, CPSR cpsr)
197410037SARM gem5 Developers{
197510037SARM gem5 Developers    bool secure = !scr.ns;
197611939Snikos.nikoleris@arm.com    bool canRead = false;
197711939Snikos.nikoleris@arm.com    bool undefined = false;
197810037SARM gem5 Developers
197910037SARM gem5 Developers    switch (cpsr.mode) {
198010037SARM gem5 Developers      case MODE_USER:
198110037SARM gem5 Developers        canRead = secure ? miscRegInfo[reg][MISCREG_USR_S_RD] :
198210037SARM gem5 Developers                           miscRegInfo[reg][MISCREG_USR_NS_RD];
198310037SARM gem5 Developers        break;
198410037SARM gem5 Developers      case MODE_FIQ:
198510037SARM gem5 Developers      case MODE_IRQ:
198610037SARM gem5 Developers      case MODE_SVC:
198710037SARM gem5 Developers      case MODE_ABORT:
198810037SARM gem5 Developers      case MODE_UNDEFINED:
198910037SARM gem5 Developers      case MODE_SYSTEM:
199010037SARM gem5 Developers        canRead = secure ? miscRegInfo[reg][MISCREG_PRI_S_RD] :
199110037SARM gem5 Developers                           miscRegInfo[reg][MISCREG_PRI_NS_RD];
199210037SARM gem5 Developers        break;
199310037SARM gem5 Developers      case MODE_MON:
199410037SARM gem5 Developers        canRead = secure ? miscRegInfo[reg][MISCREG_MON_NS0_RD] :
199510037SARM gem5 Developers                           miscRegInfo[reg][MISCREG_MON_NS1_RD];
199610037SARM gem5 Developers        break;
199710037SARM gem5 Developers      case MODE_HYP:
199810037SARM gem5 Developers        canRead = miscRegInfo[reg][MISCREG_HYP_RD];
199910037SARM gem5 Developers        break;
200010037SARM gem5 Developers      default:
200111939Snikos.nikoleris@arm.com        undefined = true;
200210037SARM gem5 Developers    }
200310037SARM gem5 Developers    // can't do permissions checkes on the root of a banked pair of regs
200410037SARM gem5 Developers    assert(!miscRegInfo[reg][MISCREG_BANKED]);
200511939Snikos.nikoleris@arm.com    return std::make_tuple(canRead, undefined);
200610037SARM gem5 Developers}
200710037SARM gem5 Developers
200811939Snikos.nikoleris@arm.comstd::tuple<bool, bool>
200911939Snikos.nikoleris@arm.comcanWriteCoprocReg(MiscRegIndex reg, SCR scr, CPSR cpsr)
201010037SARM gem5 Developers{
201110037SARM gem5 Developers    bool secure = !scr.ns;
201211939Snikos.nikoleris@arm.com    bool canWrite = false;
201311939Snikos.nikoleris@arm.com    bool undefined = false;
201410037SARM gem5 Developers
201510037SARM gem5 Developers    switch (cpsr.mode) {
201610037SARM gem5 Developers      case MODE_USER:
201710037SARM gem5 Developers        canWrite = secure ? miscRegInfo[reg][MISCREG_USR_S_WR] :
201810037SARM gem5 Developers                            miscRegInfo[reg][MISCREG_USR_NS_WR];
201910037SARM gem5 Developers        break;
202010037SARM gem5 Developers      case MODE_FIQ:
202110037SARM gem5 Developers      case MODE_IRQ:
202210037SARM gem5 Developers      case MODE_SVC:
202310037SARM gem5 Developers      case MODE_ABORT:
202410037SARM gem5 Developers      case MODE_UNDEFINED:
202510037SARM gem5 Developers      case MODE_SYSTEM:
202610037SARM gem5 Developers        canWrite = secure ? miscRegInfo[reg][MISCREG_PRI_S_WR] :
202710037SARM gem5 Developers                            miscRegInfo[reg][MISCREG_PRI_NS_WR];
202810037SARM gem5 Developers        break;
202910037SARM gem5 Developers      case MODE_MON:
203010037SARM gem5 Developers        canWrite = secure ? miscRegInfo[reg][MISCREG_MON_NS0_WR] :
203110037SARM gem5 Developers                            miscRegInfo[reg][MISCREG_MON_NS1_WR];
203210037SARM gem5 Developers        break;
203310037SARM gem5 Developers      case MODE_HYP:
203410037SARM gem5 Developers        canWrite =  miscRegInfo[reg][MISCREG_HYP_WR];
203510037SARM gem5 Developers        break;
203610037SARM gem5 Developers      default:
203711939Snikos.nikoleris@arm.com        undefined = true;
203810037SARM gem5 Developers    }
203910037SARM gem5 Developers    // can't do permissions checkes on the root of a banked pair of regs
204010037SARM gem5 Developers    assert(!miscRegInfo[reg][MISCREG_BANKED]);
204111939Snikos.nikoleris@arm.com    return std::make_tuple(canWrite, undefined);
204210037SARM gem5 Developers}
204310037SARM gem5 Developers
204410037SARM gem5 Developersint
204510421Sandreas.hansson@arm.comflattenMiscRegNsBanked(MiscRegIndex reg, ThreadContext *tc)
204610037SARM gem5 Developers{
204711771SCurtis.Dunham@arm.com    SCR scr = tc->readMiscReg(MISCREG_SCR);
204811771SCurtis.Dunham@arm.com    return flattenMiscRegNsBanked(reg, tc, scr.ns);
204910037SARM gem5 Developers}
205010037SARM gem5 Developers
205110037SARM gem5 Developersint
205210421Sandreas.hansson@arm.comflattenMiscRegNsBanked(MiscRegIndex reg, ThreadContext *tc, bool ns)
205310037SARM gem5 Developers{
205410421Sandreas.hansson@arm.com    int reg_as_int = static_cast<int>(reg);
205510037SARM gem5 Developers    if (miscRegInfo[reg][MISCREG_BANKED]) {
205611771SCurtis.Dunham@arm.com        reg_as_int += (ArmSystem::haveSecurity(tc) &&
205711771SCurtis.Dunham@arm.com                      !ArmSystem::highestELIs64(tc) && !ns) ? 2 : 1;
205810037SARM gem5 Developers    }
205910421Sandreas.hansson@arm.com    return reg_as_int;
206010037SARM gem5 Developers}
206110037SARM gem5 Developers
206210037SARM gem5 Developers
206310037SARM gem5 Developers/**
206410037SARM gem5 Developers * If the reg is a child reg of a banked set, then the parent is the last
206510037SARM gem5 Developers * banked one in the list. This is messy, and the wish is to eventually have
206610037SARM gem5 Developers * the bitmap replaced with a better data structure. the preUnflatten function
206710037SARM gem5 Developers * initializes a lookup table to speed up the search for these banked
206810037SARM gem5 Developers * registers.
206910037SARM gem5 Developers */
207010037SARM gem5 Developers
207110037SARM gem5 Developersint unflattenResultMiscReg[NUM_MISCREGS];
207210037SARM gem5 Developers
207310037SARM gem5 Developersvoid
207410037SARM gem5 DeveloperspreUnflattenMiscReg()
207510037SARM gem5 Developers{
207610037SARM gem5 Developers    int reg = -1;
207710037SARM gem5 Developers    for (int i = 0 ; i < NUM_MISCREGS; i++){
207810037SARM gem5 Developers        if (miscRegInfo[i][MISCREG_BANKED])
207910037SARM gem5 Developers            reg = i;
208010037SARM gem5 Developers        if (miscRegInfo[i][MISCREG_BANKED_CHILD])
208110037SARM gem5 Developers            unflattenResultMiscReg[i] = reg;
208210037SARM gem5 Developers        else
208310037SARM gem5 Developers            unflattenResultMiscReg[i] = i;
208410037SARM gem5 Developers        // if this assert fails, no parent was found, and something is broken
208510037SARM gem5 Developers        assert(unflattenResultMiscReg[i] > -1);
208610037SARM gem5 Developers    }
208710037SARM gem5 Developers}
208810037SARM gem5 Developers
208910037SARM gem5 Developersint
209010037SARM gem5 DevelopersunflattenMiscReg(int reg)
209110037SARM gem5 Developers{
209210037SARM gem5 Developers    return unflattenResultMiscReg[reg];
209310037SARM gem5 Developers}
209410037SARM gem5 Developers
209510037SARM gem5 Developersbool
209610037SARM gem5 DeveloperscanReadAArch64SysReg(MiscRegIndex reg, SCR scr, CPSR cpsr, ThreadContext *tc)
209710037SARM gem5 Developers{
209810037SARM gem5 Developers    // Check for SP_EL0 access while SPSEL == 0
209910037SARM gem5 Developers    if ((reg == MISCREG_SP_EL0) && (tc->readMiscReg(MISCREG_SPSEL) == 0))
210010037SARM gem5 Developers        return false;
210110037SARM gem5 Developers
210210037SARM gem5 Developers    // Check for RVBAR access
210310037SARM gem5 Developers    if (reg == MISCREG_RVBAR_EL1) {
210410037SARM gem5 Developers        ExceptionLevel highest_el = ArmSystem::highestEL(tc);
210510037SARM gem5 Developers        if (highest_el == EL2 || highest_el == EL3)
210610037SARM gem5 Developers            return false;
210710037SARM gem5 Developers    }
210810037SARM gem5 Developers    if (reg == MISCREG_RVBAR_EL2) {
210910037SARM gem5 Developers        ExceptionLevel highest_el = ArmSystem::highestEL(tc);
211010037SARM gem5 Developers        if (highest_el == EL3)
211110037SARM gem5 Developers            return false;
211210037SARM gem5 Developers    }
211310037SARM gem5 Developers
211410037SARM gem5 Developers    bool secure = ArmSystem::haveSecurity(tc) && !scr.ns;
211510037SARM gem5 Developers
211610037SARM gem5 Developers    switch (opModeToEL((OperatingMode) (uint8_t) cpsr.mode)) {
211710037SARM gem5 Developers      case EL0:
211810037SARM gem5 Developers        return secure ? miscRegInfo[reg][MISCREG_USR_S_RD] :
211910037SARM gem5 Developers            miscRegInfo[reg][MISCREG_USR_NS_RD];
212010037SARM gem5 Developers      case EL1:
212110037SARM gem5 Developers        return secure ? miscRegInfo[reg][MISCREG_PRI_S_RD] :
212210037SARM gem5 Developers            miscRegInfo[reg][MISCREG_PRI_NS_RD];
212311574SCurtis.Dunham@arm.com      case EL2:
212411574SCurtis.Dunham@arm.com        return miscRegInfo[reg][MISCREG_HYP_RD];
212510037SARM gem5 Developers      case EL3:
212610037SARM gem5 Developers        return secure ? miscRegInfo[reg][MISCREG_MON_NS0_RD] :
212710037SARM gem5 Developers            miscRegInfo[reg][MISCREG_MON_NS1_RD];
212810037SARM gem5 Developers      default:
212910037SARM gem5 Developers        panic("Invalid exception level");
213010037SARM gem5 Developers    }
213110037SARM gem5 Developers}
213210037SARM gem5 Developers
213310037SARM gem5 Developersbool
213410037SARM gem5 DeveloperscanWriteAArch64SysReg(MiscRegIndex reg, SCR scr, CPSR cpsr, ThreadContext *tc)
213510037SARM gem5 Developers{
213610037SARM gem5 Developers    // Check for SP_EL0 access while SPSEL == 0
213710037SARM gem5 Developers    if ((reg == MISCREG_SP_EL0) && (tc->readMiscReg(MISCREG_SPSEL) == 0))
213810037SARM gem5 Developers        return false;
213910037SARM gem5 Developers    ExceptionLevel el = opModeToEL((OperatingMode) (uint8_t) cpsr.mode);
214010037SARM gem5 Developers    if (reg == MISCREG_DAIF) {
214110037SARM gem5 Developers        SCTLR sctlr = tc->readMiscReg(MISCREG_SCTLR_EL1);
214210037SARM gem5 Developers        if (el == EL0 && !sctlr.uma)
214310037SARM gem5 Developers            return false;
214410037SARM gem5 Developers    }
214510828SGiacomo.Gabrielli@arm.com    if (FullSystem && reg == MISCREG_DC_ZVA_Xt) {
214610828SGiacomo.Gabrielli@arm.com        // In syscall-emulation mode, this test is skipped and DCZVA is always
214710828SGiacomo.Gabrielli@arm.com        // allowed at EL0
214810037SARM gem5 Developers        SCTLR sctlr = tc->readMiscReg(MISCREG_SCTLR_EL1);
214910037SARM gem5 Developers        if (el == EL0 && !sctlr.dze)
215010037SARM gem5 Developers            return false;
215110037SARM gem5 Developers    }
215212240Snikos.nikoleris@arm.com    if (reg == MISCREG_DC_CVAC_Xt || reg == MISCREG_DC_CIVAC_Xt ||
215312240Snikos.nikoleris@arm.com        reg == MISCREG_DC_IVAC_Xt) {
215410037SARM gem5 Developers        SCTLR sctlr = tc->readMiscReg(MISCREG_SCTLR_EL1);
215510037SARM gem5 Developers        if (el == EL0 && !sctlr.uci)
215610037SARM gem5 Developers            return false;
215710037SARM gem5 Developers    }
215810037SARM gem5 Developers
215910037SARM gem5 Developers    bool secure = ArmSystem::haveSecurity(tc) && !scr.ns;
216010037SARM gem5 Developers
216110037SARM gem5 Developers    switch (el) {
216210037SARM gem5 Developers      case EL0:
216310037SARM gem5 Developers        return secure ? miscRegInfo[reg][MISCREG_USR_S_WR] :
216410037SARM gem5 Developers            miscRegInfo[reg][MISCREG_USR_NS_WR];
216510037SARM gem5 Developers      case EL1:
216610037SARM gem5 Developers        return secure ? miscRegInfo[reg][MISCREG_PRI_S_WR] :
216710037SARM gem5 Developers            miscRegInfo[reg][MISCREG_PRI_NS_WR];
216811574SCurtis.Dunham@arm.com      case EL2:
216911574SCurtis.Dunham@arm.com        return miscRegInfo[reg][MISCREG_HYP_WR];
217010037SARM gem5 Developers      case EL3:
217110037SARM gem5 Developers        return secure ? miscRegInfo[reg][MISCREG_MON_NS0_WR] :
217210037SARM gem5 Developers            miscRegInfo[reg][MISCREG_MON_NS1_WR];
217310037SARM gem5 Developers      default:
217410037SARM gem5 Developers        panic("Invalid exception level");
217510037SARM gem5 Developers    }
217610037SARM gem5 Developers}
217710037SARM gem5 Developers
217810037SARM gem5 DevelopersMiscRegIndex
217910037SARM gem5 DevelopersdecodeAArch64SysReg(unsigned op0, unsigned op1,
218010037SARM gem5 Developers                    unsigned crn, unsigned crm,
218110037SARM gem5 Developers                    unsigned op2)
218210037SARM gem5 Developers{
218310037SARM gem5 Developers    switch (op0) {
218410037SARM gem5 Developers      case 1:
218510037SARM gem5 Developers        switch (crn) {
218610037SARM gem5 Developers          case 7:
218710037SARM gem5 Developers            switch (op1) {
218810037SARM gem5 Developers              case 0:
218910037SARM gem5 Developers                switch (crm) {
219010037SARM gem5 Developers                  case 1:
219110037SARM gem5 Developers                    switch (op2) {
219210037SARM gem5 Developers                      case 0:
219310037SARM gem5 Developers                        return MISCREG_IC_IALLUIS;
219410037SARM gem5 Developers                    }
219510037SARM gem5 Developers                    break;
219610037SARM gem5 Developers                  case 5:
219710037SARM gem5 Developers                    switch (op2) {
219810037SARM gem5 Developers                      case 0:
219910037SARM gem5 Developers                        return MISCREG_IC_IALLU;
220010037SARM gem5 Developers                    }
220110037SARM gem5 Developers                    break;
220210037SARM gem5 Developers                  case 6:
220310037SARM gem5 Developers                    switch (op2) {
220410037SARM gem5 Developers                      case 1:
220510037SARM gem5 Developers                        return MISCREG_DC_IVAC_Xt;
220610037SARM gem5 Developers                      case 2:
220710037SARM gem5 Developers                        return MISCREG_DC_ISW_Xt;
220810037SARM gem5 Developers                    }
220910037SARM gem5 Developers                    break;
221010037SARM gem5 Developers                  case 8:
221110037SARM gem5 Developers                    switch (op2) {
221210037SARM gem5 Developers                      case 0:
221310037SARM gem5 Developers                        return MISCREG_AT_S1E1R_Xt;
221410037SARM gem5 Developers                      case 1:
221510037SARM gem5 Developers                        return MISCREG_AT_S1E1W_Xt;
221610037SARM gem5 Developers                      case 2:
221710037SARM gem5 Developers                        return MISCREG_AT_S1E0R_Xt;
221810037SARM gem5 Developers                      case 3:
221910037SARM gem5 Developers                        return MISCREG_AT_S1E0W_Xt;
222010037SARM gem5 Developers                    }
222110037SARM gem5 Developers                    break;
222210037SARM gem5 Developers                  case 10:
222310037SARM gem5 Developers                    switch (op2) {
222410037SARM gem5 Developers                      case 2:
222510037SARM gem5 Developers                        return MISCREG_DC_CSW_Xt;
222610037SARM gem5 Developers                    }
222710037SARM gem5 Developers                    break;
222810037SARM gem5 Developers                  case 14:
222910037SARM gem5 Developers                    switch (op2) {
223010037SARM gem5 Developers                      case 2:
223110037SARM gem5 Developers                        return MISCREG_DC_CISW_Xt;
223210037SARM gem5 Developers                    }
223310037SARM gem5 Developers                    break;
223410037SARM gem5 Developers                }
223510037SARM gem5 Developers                break;
223610037SARM gem5 Developers              case 3:
223710037SARM gem5 Developers                switch (crm) {
223810037SARM gem5 Developers                  case 4:
223910037SARM gem5 Developers                    switch (op2) {
224010037SARM gem5 Developers                      case 1:
224110037SARM gem5 Developers                        return MISCREG_DC_ZVA_Xt;
224210037SARM gem5 Developers                    }
224310037SARM gem5 Developers                    break;
224410037SARM gem5 Developers                  case 5:
224510037SARM gem5 Developers                    switch (op2) {
224610037SARM gem5 Developers                      case 1:
224710037SARM gem5 Developers                        return MISCREG_IC_IVAU_Xt;
224810037SARM gem5 Developers                    }
224910037SARM gem5 Developers                    break;
225010037SARM gem5 Developers                  case 10:
225110037SARM gem5 Developers                    switch (op2) {
225210037SARM gem5 Developers                      case 1:
225310037SARM gem5 Developers                        return MISCREG_DC_CVAC_Xt;
225410037SARM gem5 Developers                    }
225510037SARM gem5 Developers                    break;
225610037SARM gem5 Developers                  case 11:
225710037SARM gem5 Developers                    switch (op2) {
225810037SARM gem5 Developers                      case 1:
225910037SARM gem5 Developers                        return MISCREG_DC_CVAU_Xt;
226010037SARM gem5 Developers                    }
226110037SARM gem5 Developers                    break;
226210037SARM gem5 Developers                  case 14:
226310037SARM gem5 Developers                    switch (op2) {
226410037SARM gem5 Developers                      case 1:
226510037SARM gem5 Developers                        return MISCREG_DC_CIVAC_Xt;
226610037SARM gem5 Developers                    }
226710037SARM gem5 Developers                    break;
226810037SARM gem5 Developers                }
226910037SARM gem5 Developers                break;
227010037SARM gem5 Developers              case 4:
227110037SARM gem5 Developers                switch (crm) {
227210037SARM gem5 Developers                  case 8:
227310037SARM gem5 Developers                    switch (op2) {
227410037SARM gem5 Developers                      case 0:
227510037SARM gem5 Developers                        return MISCREG_AT_S1E2R_Xt;
227610037SARM gem5 Developers                      case 1:
227710037SARM gem5 Developers                        return MISCREG_AT_S1E2W_Xt;
227810037SARM gem5 Developers                      case 4:
227910037SARM gem5 Developers                        return MISCREG_AT_S12E1R_Xt;
228010037SARM gem5 Developers                      case 5:
228110037SARM gem5 Developers                        return MISCREG_AT_S12E1W_Xt;
228210037SARM gem5 Developers                      case 6:
228310037SARM gem5 Developers                        return MISCREG_AT_S12E0R_Xt;
228410037SARM gem5 Developers                      case 7:
228510037SARM gem5 Developers                        return MISCREG_AT_S12E0W_Xt;
228610037SARM gem5 Developers                    }
228710037SARM gem5 Developers                    break;
228810037SARM gem5 Developers                }
228910037SARM gem5 Developers                break;
229010037SARM gem5 Developers              case 6:
229110037SARM gem5 Developers                switch (crm) {
229210037SARM gem5 Developers                  case 8:
229310037SARM gem5 Developers                    switch (op2) {
229410037SARM gem5 Developers                      case 0:
229510037SARM gem5 Developers                        return MISCREG_AT_S1E3R_Xt;
229610037SARM gem5 Developers                      case 1:
229710037SARM gem5 Developers                        return MISCREG_AT_S1E3W_Xt;
229810037SARM gem5 Developers                    }
229910037SARM gem5 Developers                    break;
230010037SARM gem5 Developers                }
230110037SARM gem5 Developers                break;
230210037SARM gem5 Developers            }
230310037SARM gem5 Developers            break;
230410037SARM gem5 Developers          case 8:
230510037SARM gem5 Developers            switch (op1) {
230610037SARM gem5 Developers              case 0:
230710037SARM gem5 Developers                switch (crm) {
230810037SARM gem5 Developers                  case 3:
230910037SARM gem5 Developers                    switch (op2) {
231010037SARM gem5 Developers                      case 0:
231110037SARM gem5 Developers                        return MISCREG_TLBI_VMALLE1IS;
231210037SARM gem5 Developers                      case 1:
231310037SARM gem5 Developers                        return MISCREG_TLBI_VAE1IS_Xt;
231410037SARM gem5 Developers                      case 2:
231510037SARM gem5 Developers                        return MISCREG_TLBI_ASIDE1IS_Xt;
231610037SARM gem5 Developers                      case 3:
231710037SARM gem5 Developers                        return MISCREG_TLBI_VAAE1IS_Xt;
231810037SARM gem5 Developers                      case 5:
231910037SARM gem5 Developers                        return MISCREG_TLBI_VALE1IS_Xt;
232010037SARM gem5 Developers                      case 7:
232110037SARM gem5 Developers                        return MISCREG_TLBI_VAALE1IS_Xt;
232210037SARM gem5 Developers                    }
232310037SARM gem5 Developers                    break;
232410037SARM gem5 Developers                  case 7:
232510037SARM gem5 Developers                    switch (op2) {
232610037SARM gem5 Developers                      case 0:
232710037SARM gem5 Developers                        return MISCREG_TLBI_VMALLE1;
232810037SARM gem5 Developers                      case 1:
232910037SARM gem5 Developers                        return MISCREG_TLBI_VAE1_Xt;
233010037SARM gem5 Developers                      case 2:
233110037SARM gem5 Developers                        return MISCREG_TLBI_ASIDE1_Xt;
233210037SARM gem5 Developers                      case 3:
233310037SARM gem5 Developers                        return MISCREG_TLBI_VAAE1_Xt;
233410037SARM gem5 Developers                      case 5:
233510037SARM gem5 Developers                        return MISCREG_TLBI_VALE1_Xt;
233610037SARM gem5 Developers                      case 7:
233710037SARM gem5 Developers                        return MISCREG_TLBI_VAALE1_Xt;
233810037SARM gem5 Developers                    }
233910037SARM gem5 Developers                    break;
234010037SARM gem5 Developers                }
234110037SARM gem5 Developers                break;
234210037SARM gem5 Developers              case 4:
234310037SARM gem5 Developers                switch (crm) {
234410037SARM gem5 Developers                  case 0:
234510037SARM gem5 Developers                    switch (op2) {
234610037SARM gem5 Developers                      case 1:
234710037SARM gem5 Developers                        return MISCREG_TLBI_IPAS2E1IS_Xt;
234810037SARM gem5 Developers                      case 5:
234910037SARM gem5 Developers                        return MISCREG_TLBI_IPAS2LE1IS_Xt;
235010037SARM gem5 Developers                    }
235110037SARM gem5 Developers                    break;
235210037SARM gem5 Developers                  case 3:
235310037SARM gem5 Developers                    switch (op2) {
235410037SARM gem5 Developers                      case 0:
235510037SARM gem5 Developers                        return MISCREG_TLBI_ALLE2IS;
235610037SARM gem5 Developers                      case 1:
235710037SARM gem5 Developers                        return MISCREG_TLBI_VAE2IS_Xt;
235810037SARM gem5 Developers                      case 4:
235910037SARM gem5 Developers                        return MISCREG_TLBI_ALLE1IS;
236010037SARM gem5 Developers                      case 5:
236110037SARM gem5 Developers                        return MISCREG_TLBI_VALE2IS_Xt;
236210037SARM gem5 Developers                      case 6:
236310037SARM gem5 Developers                        return MISCREG_TLBI_VMALLS12E1IS;
236410037SARM gem5 Developers                    }
236510037SARM gem5 Developers                    break;
236610037SARM gem5 Developers                  case 4:
236710037SARM gem5 Developers                    switch (op2) {
236810037SARM gem5 Developers                      case 1:
236910037SARM gem5 Developers                        return MISCREG_TLBI_IPAS2E1_Xt;
237010037SARM gem5 Developers                      case 5:
237110037SARM gem5 Developers                        return MISCREG_TLBI_IPAS2LE1_Xt;
237210037SARM gem5 Developers                    }
237310037SARM gem5 Developers                    break;
237410037SARM gem5 Developers                  case 7:
237510037SARM gem5 Developers                    switch (op2) {
237610037SARM gem5 Developers                      case 0:
237710037SARM gem5 Developers                        return MISCREG_TLBI_ALLE2;
237810037SARM gem5 Developers                      case 1:
237910037SARM gem5 Developers                        return MISCREG_TLBI_VAE2_Xt;
238010037SARM gem5 Developers                      case 4:
238110037SARM gem5 Developers                        return MISCREG_TLBI_ALLE1;
238210037SARM gem5 Developers                      case 5:
238310037SARM gem5 Developers                        return MISCREG_TLBI_VALE2_Xt;
238410037SARM gem5 Developers                      case 6:
238510037SARM gem5 Developers                        return MISCREG_TLBI_VMALLS12E1;
238610037SARM gem5 Developers                    }
238710037SARM gem5 Developers                    break;
238810037SARM gem5 Developers                }
238910037SARM gem5 Developers                break;
239010037SARM gem5 Developers              case 6:
239110037SARM gem5 Developers                switch (crm) {
239210037SARM gem5 Developers                  case 3:
239310037SARM gem5 Developers                    switch (op2) {
239410037SARM gem5 Developers                      case 0:
239510037SARM gem5 Developers                        return MISCREG_TLBI_ALLE3IS;
239610037SARM gem5 Developers                      case 1:
239710037SARM gem5 Developers                        return MISCREG_TLBI_VAE3IS_Xt;
239810037SARM gem5 Developers                      case 5:
239910037SARM gem5 Developers                        return MISCREG_TLBI_VALE3IS_Xt;
240010037SARM gem5 Developers                    }
240110037SARM gem5 Developers                    break;
240210037SARM gem5 Developers                  case 7:
240310037SARM gem5 Developers                    switch (op2) {
240410037SARM gem5 Developers                      case 0:
240510037SARM gem5 Developers                        return MISCREG_TLBI_ALLE3;
240610037SARM gem5 Developers                      case 1:
240710037SARM gem5 Developers                        return MISCREG_TLBI_VAE3_Xt;
240810037SARM gem5 Developers                      case 5:
240910037SARM gem5 Developers                        return MISCREG_TLBI_VALE3_Xt;
241010037SARM gem5 Developers                    }
241110037SARM gem5 Developers                    break;
241210037SARM gem5 Developers                }
241310037SARM gem5 Developers                break;
241410037SARM gem5 Developers            }
241510037SARM gem5 Developers            break;
241610037SARM gem5 Developers        }
241710037SARM gem5 Developers        break;
241810037SARM gem5 Developers      case 2:
241910037SARM gem5 Developers        switch (crn) {
242010037SARM gem5 Developers          case 0:
242110037SARM gem5 Developers            switch (op1) {
242210037SARM gem5 Developers              case 0:
242310037SARM gem5 Developers                switch (crm) {
242410037SARM gem5 Developers                  case 0:
242510037SARM gem5 Developers                    switch (op2) {
242610037SARM gem5 Developers                      case 2:
242710037SARM gem5 Developers                        return MISCREG_OSDTRRX_EL1;
242810037SARM gem5 Developers                      case 4:
242910037SARM gem5 Developers                        return MISCREG_DBGBVR0_EL1;
243010037SARM gem5 Developers                      case 5:
243110037SARM gem5 Developers                        return MISCREG_DBGBCR0_EL1;
243210037SARM gem5 Developers                      case 6:
243310037SARM gem5 Developers                        return MISCREG_DBGWVR0_EL1;
243410037SARM gem5 Developers                      case 7:
243510037SARM gem5 Developers                        return MISCREG_DBGWCR0_EL1;
243610037SARM gem5 Developers                    }
243710037SARM gem5 Developers                    break;
243810037SARM gem5 Developers                  case 1:
243910037SARM gem5 Developers                    switch (op2) {
244010037SARM gem5 Developers                      case 4:
244110037SARM gem5 Developers                        return MISCREG_DBGBVR1_EL1;
244210037SARM gem5 Developers                      case 5:
244310037SARM gem5 Developers                        return MISCREG_DBGBCR1_EL1;
244410037SARM gem5 Developers                      case 6:
244510037SARM gem5 Developers                        return MISCREG_DBGWVR1_EL1;
244610037SARM gem5 Developers                      case 7:
244710037SARM gem5 Developers                        return MISCREG_DBGWCR1_EL1;
244810037SARM gem5 Developers                    }
244910037SARM gem5 Developers                    break;
245010037SARM gem5 Developers                  case 2:
245110037SARM gem5 Developers                    switch (op2) {
245210037SARM gem5 Developers                      case 0:
245310037SARM gem5 Developers                        return MISCREG_MDCCINT_EL1;
245410037SARM gem5 Developers                      case 2:
245510037SARM gem5 Developers                        return MISCREG_MDSCR_EL1;
245610037SARM gem5 Developers                      case 4:
245710037SARM gem5 Developers                        return MISCREG_DBGBVR2_EL1;
245810037SARM gem5 Developers                      case 5:
245910037SARM gem5 Developers                        return MISCREG_DBGBCR2_EL1;
246010037SARM gem5 Developers                      case 6:
246110037SARM gem5 Developers                        return MISCREG_DBGWVR2_EL1;
246210037SARM gem5 Developers                      case 7:
246310037SARM gem5 Developers                        return MISCREG_DBGWCR2_EL1;
246410037SARM gem5 Developers                    }
246510037SARM gem5 Developers                    break;
246610037SARM gem5 Developers                  case 3:
246710037SARM gem5 Developers                    switch (op2) {
246810037SARM gem5 Developers                      case 2:
246910037SARM gem5 Developers                        return MISCREG_OSDTRTX_EL1;
247010037SARM gem5 Developers                      case 4:
247110037SARM gem5 Developers                        return MISCREG_DBGBVR3_EL1;
247210037SARM gem5 Developers                      case 5:
247310037SARM gem5 Developers                        return MISCREG_DBGBCR3_EL1;
247410037SARM gem5 Developers                      case 6:
247510037SARM gem5 Developers                        return MISCREG_DBGWVR3_EL1;
247610037SARM gem5 Developers                      case 7:
247710037SARM gem5 Developers                        return MISCREG_DBGWCR3_EL1;
247810037SARM gem5 Developers                    }
247910037SARM gem5 Developers                    break;
248010037SARM gem5 Developers                  case 4:
248110037SARM gem5 Developers                    switch (op2) {
248210037SARM gem5 Developers                      case 4:
248310037SARM gem5 Developers                        return MISCREG_DBGBVR4_EL1;
248410037SARM gem5 Developers                      case 5:
248510037SARM gem5 Developers                        return MISCREG_DBGBCR4_EL1;
248610037SARM gem5 Developers                    }
248710037SARM gem5 Developers                    break;
248810037SARM gem5 Developers                  case 5:
248910037SARM gem5 Developers                    switch (op2) {
249010037SARM gem5 Developers                      case 4:
249110037SARM gem5 Developers                        return MISCREG_DBGBVR5_EL1;
249210037SARM gem5 Developers                      case 5:
249310037SARM gem5 Developers                        return MISCREG_DBGBCR5_EL1;
249410037SARM gem5 Developers                    }
249510037SARM gem5 Developers                    break;
249610037SARM gem5 Developers                  case 6:
249710037SARM gem5 Developers                    switch (op2) {
249810037SARM gem5 Developers                      case 2:
249910037SARM gem5 Developers                        return MISCREG_OSECCR_EL1;
250010037SARM gem5 Developers                    }
250110037SARM gem5 Developers                    break;
250210037SARM gem5 Developers                }
250310037SARM gem5 Developers                break;
250410037SARM gem5 Developers              case 2:
250510037SARM gem5 Developers                switch (crm) {
250610037SARM gem5 Developers                  case 0:
250710037SARM gem5 Developers                    switch (op2) {
250810037SARM gem5 Developers                      case 0:
250910037SARM gem5 Developers                        return MISCREG_TEECR32_EL1;
251010037SARM gem5 Developers                    }
251110037SARM gem5 Developers                    break;
251210037SARM gem5 Developers                }
251310037SARM gem5 Developers                break;
251410037SARM gem5 Developers              case 3:
251510037SARM gem5 Developers                switch (crm) {
251610037SARM gem5 Developers                  case 1:
251710037SARM gem5 Developers                    switch (op2) {
251810037SARM gem5 Developers                      case 0:
251910037SARM gem5 Developers                        return MISCREG_MDCCSR_EL0;
252010037SARM gem5 Developers                    }
252110037SARM gem5 Developers                    break;
252210037SARM gem5 Developers                  case 4:
252310037SARM gem5 Developers                    switch (op2) {
252410037SARM gem5 Developers                      case 0:
252510037SARM gem5 Developers                        return MISCREG_MDDTR_EL0;
252610037SARM gem5 Developers                    }
252710037SARM gem5 Developers                    break;
252810037SARM gem5 Developers                  case 5:
252910037SARM gem5 Developers                    switch (op2) {
253010037SARM gem5 Developers                      case 0:
253110037SARM gem5 Developers                        return MISCREG_MDDTRRX_EL0;
253210037SARM gem5 Developers                    }
253310037SARM gem5 Developers                    break;
253410037SARM gem5 Developers                }
253510037SARM gem5 Developers                break;
253610037SARM gem5 Developers              case 4:
253710037SARM gem5 Developers                switch (crm) {
253810037SARM gem5 Developers                  case 7:
253910037SARM gem5 Developers                    switch (op2) {
254010037SARM gem5 Developers                      case 0:
254110037SARM gem5 Developers                        return MISCREG_DBGVCR32_EL2;
254210037SARM gem5 Developers                    }
254310037SARM gem5 Developers                    break;
254410037SARM gem5 Developers                }
254510037SARM gem5 Developers                break;
254610037SARM gem5 Developers            }
254710037SARM gem5 Developers            break;
254810037SARM gem5 Developers          case 1:
254910037SARM gem5 Developers            switch (op1) {
255010037SARM gem5 Developers              case 0:
255110037SARM gem5 Developers                switch (crm) {
255210037SARM gem5 Developers                  case 0:
255310037SARM gem5 Developers                    switch (op2) {
255410037SARM gem5 Developers                      case 0:
255510037SARM gem5 Developers                        return MISCREG_MDRAR_EL1;
255610037SARM gem5 Developers                      case 4:
255710037SARM gem5 Developers                        return MISCREG_OSLAR_EL1;
255810037SARM gem5 Developers                    }
255910037SARM gem5 Developers                    break;
256010037SARM gem5 Developers                  case 1:
256110037SARM gem5 Developers                    switch (op2) {
256210037SARM gem5 Developers                      case 4:
256310037SARM gem5 Developers                        return MISCREG_OSLSR_EL1;
256410037SARM gem5 Developers                    }
256510037SARM gem5 Developers                    break;
256610037SARM gem5 Developers                  case 3:
256710037SARM gem5 Developers                    switch (op2) {
256810037SARM gem5 Developers                      case 4:
256910037SARM gem5 Developers                        return MISCREG_OSDLR_EL1;
257010037SARM gem5 Developers                    }
257110037SARM gem5 Developers                    break;
257210037SARM gem5 Developers                  case 4:
257310037SARM gem5 Developers                    switch (op2) {
257410037SARM gem5 Developers                      case 4:
257510037SARM gem5 Developers                        return MISCREG_DBGPRCR_EL1;
257610037SARM gem5 Developers                    }
257710037SARM gem5 Developers                    break;
257810037SARM gem5 Developers                }
257910037SARM gem5 Developers                break;
258010037SARM gem5 Developers              case 2:
258110037SARM gem5 Developers                switch (crm) {
258210037SARM gem5 Developers                  case 0:
258310037SARM gem5 Developers                    switch (op2) {
258410037SARM gem5 Developers                      case 0:
258510037SARM gem5 Developers                        return MISCREG_TEEHBR32_EL1;
258610037SARM gem5 Developers                    }
258710037SARM gem5 Developers                    break;
258810037SARM gem5 Developers                }
258910037SARM gem5 Developers                break;
259010037SARM gem5 Developers            }
259110037SARM gem5 Developers            break;
259210037SARM gem5 Developers          case 7:
259310037SARM gem5 Developers            switch (op1) {
259410037SARM gem5 Developers              case 0:
259510037SARM gem5 Developers                switch (crm) {
259610037SARM gem5 Developers                  case 8:
259710037SARM gem5 Developers                    switch (op2) {
259810037SARM gem5 Developers                      case 6:
259910037SARM gem5 Developers                        return MISCREG_DBGCLAIMSET_EL1;
260010037SARM gem5 Developers                    }
260110037SARM gem5 Developers                    break;
260210037SARM gem5 Developers                  case 9:
260310037SARM gem5 Developers                    switch (op2) {
260410037SARM gem5 Developers                      case 6:
260510037SARM gem5 Developers                        return MISCREG_DBGCLAIMCLR_EL1;
260610037SARM gem5 Developers                    }
260710037SARM gem5 Developers                    break;
260810037SARM gem5 Developers                  case 14:
260910037SARM gem5 Developers                    switch (op2) {
261010037SARM gem5 Developers                      case 6:
261110037SARM gem5 Developers                        return MISCREG_DBGAUTHSTATUS_EL1;
261210037SARM gem5 Developers                    }
261310037SARM gem5 Developers                    break;
261410037SARM gem5 Developers                }
261510037SARM gem5 Developers                break;
261610037SARM gem5 Developers            }
261710037SARM gem5 Developers            break;
261810037SARM gem5 Developers        }
261910037SARM gem5 Developers        break;
262010037SARM gem5 Developers      case 3:
262110037SARM gem5 Developers        switch (crn) {
262210037SARM gem5 Developers          case 0:
262310037SARM gem5 Developers            switch (op1) {
262410037SARM gem5 Developers              case 0:
262510037SARM gem5 Developers                switch (crm) {
262610037SARM gem5 Developers                  case 0:
262710037SARM gem5 Developers                    switch (op2) {
262810037SARM gem5 Developers                      case 0:
262910037SARM gem5 Developers                        return MISCREG_MIDR_EL1;
263010037SARM gem5 Developers                      case 5:
263110037SARM gem5 Developers                        return MISCREG_MPIDR_EL1;
263210037SARM gem5 Developers                      case 6:
263310037SARM gem5 Developers                        return MISCREG_REVIDR_EL1;
263410037SARM gem5 Developers                    }
263510037SARM gem5 Developers                    break;
263610037SARM gem5 Developers                  case 1:
263710037SARM gem5 Developers                    switch (op2) {
263810037SARM gem5 Developers                      case 0:
263910037SARM gem5 Developers                        return MISCREG_ID_PFR0_EL1;
264010037SARM gem5 Developers                      case 1:
264110037SARM gem5 Developers                        return MISCREG_ID_PFR1_EL1;
264210037SARM gem5 Developers                      case 2:
264310037SARM gem5 Developers                        return MISCREG_ID_DFR0_EL1;
264410037SARM gem5 Developers                      case 3:
264510037SARM gem5 Developers                        return MISCREG_ID_AFR0_EL1;
264610037SARM gem5 Developers                      case 4:
264710037SARM gem5 Developers                        return MISCREG_ID_MMFR0_EL1;
264810037SARM gem5 Developers                      case 5:
264910037SARM gem5 Developers                        return MISCREG_ID_MMFR1_EL1;
265010037SARM gem5 Developers                      case 6:
265110037SARM gem5 Developers                        return MISCREG_ID_MMFR2_EL1;
265210037SARM gem5 Developers                      case 7:
265310037SARM gem5 Developers                        return MISCREG_ID_MMFR3_EL1;
265410037SARM gem5 Developers                    }
265510037SARM gem5 Developers                    break;
265610037SARM gem5 Developers                  case 2:
265710037SARM gem5 Developers                    switch (op2) {
265810037SARM gem5 Developers                      case 0:
265910037SARM gem5 Developers                        return MISCREG_ID_ISAR0_EL1;
266010037SARM gem5 Developers                      case 1:
266110037SARM gem5 Developers                        return MISCREG_ID_ISAR1_EL1;
266210037SARM gem5 Developers                      case 2:
266310037SARM gem5 Developers                        return MISCREG_ID_ISAR2_EL1;
266410037SARM gem5 Developers                      case 3:
266510037SARM gem5 Developers                        return MISCREG_ID_ISAR3_EL1;
266610037SARM gem5 Developers                      case 4:
266710037SARM gem5 Developers                        return MISCREG_ID_ISAR4_EL1;
266810037SARM gem5 Developers                      case 5:
266910037SARM gem5 Developers                        return MISCREG_ID_ISAR5_EL1;
267010037SARM gem5 Developers                    }
267110037SARM gem5 Developers                    break;
267210037SARM gem5 Developers                  case 3:
267310037SARM gem5 Developers                    switch (op2) {
267410037SARM gem5 Developers                      case 0:
267510037SARM gem5 Developers                        return MISCREG_MVFR0_EL1;
267610037SARM gem5 Developers                      case 1:
267710037SARM gem5 Developers                        return MISCREG_MVFR1_EL1;
267810037SARM gem5 Developers                      case 2:
267910037SARM gem5 Developers                        return MISCREG_MVFR2_EL1;
268010037SARM gem5 Developers                      case 3 ... 7:
268110037SARM gem5 Developers                        return MISCREG_RAZ;
268210037SARM gem5 Developers                    }
268310037SARM gem5 Developers                    break;
268410037SARM gem5 Developers                  case 4:
268510037SARM gem5 Developers                    switch (op2) {
268610037SARM gem5 Developers                      case 0:
268710037SARM gem5 Developers                        return MISCREG_ID_AA64PFR0_EL1;
268810037SARM gem5 Developers                      case 1:
268910037SARM gem5 Developers                        return MISCREG_ID_AA64PFR1_EL1;
269010037SARM gem5 Developers                      case 2 ... 7:
269110037SARM gem5 Developers                        return MISCREG_RAZ;
269210037SARM gem5 Developers                    }
269310037SARM gem5 Developers                    break;
269410037SARM gem5 Developers                  case 5:
269510037SARM gem5 Developers                    switch (op2) {
269610037SARM gem5 Developers                      case 0:
269710037SARM gem5 Developers                        return MISCREG_ID_AA64DFR0_EL1;
269810037SARM gem5 Developers                      case 1:
269910037SARM gem5 Developers                        return MISCREG_ID_AA64DFR1_EL1;
270010037SARM gem5 Developers                      case 4:
270110037SARM gem5 Developers                        return MISCREG_ID_AA64AFR0_EL1;
270210037SARM gem5 Developers                      case 5:
270310037SARM gem5 Developers                        return MISCREG_ID_AA64AFR1_EL1;
270410037SARM gem5 Developers                      case 2:
270510037SARM gem5 Developers                      case 3:
270610037SARM gem5 Developers                      case 6:
270710037SARM gem5 Developers                      case 7:
270810037SARM gem5 Developers                        return MISCREG_RAZ;
270910037SARM gem5 Developers                    }
271010037SARM gem5 Developers                    break;
271110037SARM gem5 Developers                  case 6:
271210037SARM gem5 Developers                    switch (op2) {
271310037SARM gem5 Developers                      case 0:
271410037SARM gem5 Developers                        return MISCREG_ID_AA64ISAR0_EL1;
271510037SARM gem5 Developers                      case 1:
271610037SARM gem5 Developers                        return MISCREG_ID_AA64ISAR1_EL1;
271710037SARM gem5 Developers                      case 2 ... 7:
271810037SARM gem5 Developers                        return MISCREG_RAZ;
271910037SARM gem5 Developers                    }
272010037SARM gem5 Developers                    break;
272110037SARM gem5 Developers                  case 7:
272210037SARM gem5 Developers                    switch (op2) {
272310037SARM gem5 Developers                      case 0:
272410037SARM gem5 Developers                        return MISCREG_ID_AA64MMFR0_EL1;
272510037SARM gem5 Developers                      case 1:
272610037SARM gem5 Developers                        return MISCREG_ID_AA64MMFR1_EL1;
272710037SARM gem5 Developers                      case 2 ... 7:
272810037SARM gem5 Developers                        return MISCREG_RAZ;
272910037SARM gem5 Developers                    }
273010037SARM gem5 Developers                    break;
273110037SARM gem5 Developers                }
273210037SARM gem5 Developers                break;
273310037SARM gem5 Developers              case 1:
273410037SARM gem5 Developers                switch (crm) {
273510037SARM gem5 Developers                  case 0:
273610037SARM gem5 Developers                    switch (op2) {
273710037SARM gem5 Developers                      case 0:
273810037SARM gem5 Developers                        return MISCREG_CCSIDR_EL1;
273910037SARM gem5 Developers                      case 1:
274010037SARM gem5 Developers                        return MISCREG_CLIDR_EL1;
274110037SARM gem5 Developers                      case 7:
274210037SARM gem5 Developers                        return MISCREG_AIDR_EL1;
274310037SARM gem5 Developers                    }
274410037SARM gem5 Developers                    break;
274510037SARM gem5 Developers                }
274610037SARM gem5 Developers                break;
274710037SARM gem5 Developers              case 2:
274810037SARM gem5 Developers                switch (crm) {
274910037SARM gem5 Developers                  case 0:
275010037SARM gem5 Developers                    switch (op2) {
275110037SARM gem5 Developers                      case 0:
275210037SARM gem5 Developers                        return MISCREG_CSSELR_EL1;
275310037SARM gem5 Developers                    }
275410037SARM gem5 Developers                    break;
275510037SARM gem5 Developers                }
275610037SARM gem5 Developers                break;
275710037SARM gem5 Developers              case 3:
275810037SARM gem5 Developers                switch (crm) {
275910037SARM gem5 Developers                  case 0:
276010037SARM gem5 Developers                    switch (op2) {
276110037SARM gem5 Developers                      case 1:
276210037SARM gem5 Developers                        return MISCREG_CTR_EL0;
276310037SARM gem5 Developers                      case 7:
276410037SARM gem5 Developers                        return MISCREG_DCZID_EL0;
276510037SARM gem5 Developers                    }
276610037SARM gem5 Developers                    break;
276710037SARM gem5 Developers                }
276810037SARM gem5 Developers                break;
276910037SARM gem5 Developers              case 4:
277010037SARM gem5 Developers                switch (crm) {
277110037SARM gem5 Developers                  case 0:
277210037SARM gem5 Developers                    switch (op2) {
277310037SARM gem5 Developers                      case 0:
277410037SARM gem5 Developers                        return MISCREG_VPIDR_EL2;
277510037SARM gem5 Developers                      case 5:
277610037SARM gem5 Developers                        return MISCREG_VMPIDR_EL2;
277710037SARM gem5 Developers                    }
277810037SARM gem5 Developers                    break;
277910037SARM gem5 Developers                }
278010037SARM gem5 Developers                break;
278110037SARM gem5 Developers            }
278210037SARM gem5 Developers            break;
278310037SARM gem5 Developers          case 1:
278410037SARM gem5 Developers            switch (op1) {
278510037SARM gem5 Developers              case 0:
278610037SARM gem5 Developers                switch (crm) {
278710037SARM gem5 Developers                  case 0:
278810037SARM gem5 Developers                    switch (op2) {
278910037SARM gem5 Developers                      case 0:
279010037SARM gem5 Developers                        return MISCREG_SCTLR_EL1;
279110037SARM gem5 Developers                      case 1:
279210037SARM gem5 Developers                        return MISCREG_ACTLR_EL1;
279310037SARM gem5 Developers                      case 2:
279410037SARM gem5 Developers                        return MISCREG_CPACR_EL1;
279510037SARM gem5 Developers                    }
279610037SARM gem5 Developers                    break;
279710037SARM gem5 Developers                }
279810037SARM gem5 Developers                break;
279910037SARM gem5 Developers              case 4:
280010037SARM gem5 Developers                switch (crm) {
280110037SARM gem5 Developers                  case 0:
280210037SARM gem5 Developers                    switch (op2) {
280310037SARM gem5 Developers                      case 0:
280410037SARM gem5 Developers                        return MISCREG_SCTLR_EL2;
280510037SARM gem5 Developers                      case 1:
280610037SARM gem5 Developers                        return MISCREG_ACTLR_EL2;
280710037SARM gem5 Developers                    }
280810037SARM gem5 Developers                    break;
280910037SARM gem5 Developers                  case 1:
281010037SARM gem5 Developers                    switch (op2) {
281110037SARM gem5 Developers                      case 0:
281210037SARM gem5 Developers                        return MISCREG_HCR_EL2;
281310037SARM gem5 Developers                      case 1:
281410037SARM gem5 Developers                        return MISCREG_MDCR_EL2;
281510037SARM gem5 Developers                      case 2:
281610037SARM gem5 Developers                        return MISCREG_CPTR_EL2;
281710037SARM gem5 Developers                      case 3:
281810037SARM gem5 Developers                        return MISCREG_HSTR_EL2;
281910037SARM gem5 Developers                      case 7:
282010037SARM gem5 Developers                        return MISCREG_HACR_EL2;
282110037SARM gem5 Developers                    }
282210037SARM gem5 Developers                    break;
282310037SARM gem5 Developers                }
282410037SARM gem5 Developers                break;
282510037SARM gem5 Developers              case 6:
282610037SARM gem5 Developers                switch (crm) {
282710037SARM gem5 Developers                  case 0:
282810037SARM gem5 Developers                    switch (op2) {
282910037SARM gem5 Developers                      case 0:
283010037SARM gem5 Developers                        return MISCREG_SCTLR_EL3;
283110037SARM gem5 Developers                      case 1:
283210037SARM gem5 Developers                        return MISCREG_ACTLR_EL3;
283310037SARM gem5 Developers                    }
283410037SARM gem5 Developers                    break;
283510037SARM gem5 Developers                  case 1:
283610037SARM gem5 Developers                    switch (op2) {
283710037SARM gem5 Developers                      case 0:
283810037SARM gem5 Developers                        return MISCREG_SCR_EL3;
283910037SARM gem5 Developers                      case 1:
284010037SARM gem5 Developers                        return MISCREG_SDER32_EL3;
284110037SARM gem5 Developers                      case 2:
284210037SARM gem5 Developers                        return MISCREG_CPTR_EL3;
284310037SARM gem5 Developers                    }
284410037SARM gem5 Developers                    break;
284510037SARM gem5 Developers                  case 3:
284610037SARM gem5 Developers                    switch (op2) {
284710037SARM gem5 Developers                      case 1:
284810037SARM gem5 Developers                        return MISCREG_MDCR_EL3;
284910037SARM gem5 Developers                    }
285010037SARM gem5 Developers                    break;
285110037SARM gem5 Developers                }
285210037SARM gem5 Developers                break;
285310037SARM gem5 Developers            }
285410037SARM gem5 Developers            break;
285510037SARM gem5 Developers          case 2:
285610037SARM gem5 Developers            switch (op1) {
285710037SARM gem5 Developers              case 0:
285810037SARM gem5 Developers                switch (crm) {
285910037SARM gem5 Developers                  case 0:
286010037SARM gem5 Developers                    switch (op2) {
286110037SARM gem5 Developers                      case 0:
286210037SARM gem5 Developers                        return MISCREG_TTBR0_EL1;
286310037SARM gem5 Developers                      case 1:
286410037SARM gem5 Developers                        return MISCREG_TTBR1_EL1;
286510037SARM gem5 Developers                      case 2:
286610037SARM gem5 Developers                        return MISCREG_TCR_EL1;
286710037SARM gem5 Developers                    }
286810037SARM gem5 Developers                    break;
286910037SARM gem5 Developers                }
287010037SARM gem5 Developers                break;
287110037SARM gem5 Developers              case 4:
287210037SARM gem5 Developers                switch (crm) {
287310037SARM gem5 Developers                  case 0:
287410037SARM gem5 Developers                    switch (op2) {
287510037SARM gem5 Developers                      case 0:
287610037SARM gem5 Developers                        return MISCREG_TTBR0_EL2;
287710037SARM gem5 Developers                      case 2:
287810037SARM gem5 Developers                        return MISCREG_TCR_EL2;
287910037SARM gem5 Developers                    }
288010037SARM gem5 Developers                    break;
288110037SARM gem5 Developers                  case 1:
288210037SARM gem5 Developers                    switch (op2) {
288310037SARM gem5 Developers                      case 0:
288410037SARM gem5 Developers                        return MISCREG_VTTBR_EL2;
288510037SARM gem5 Developers                      case 2:
288610037SARM gem5 Developers                        return MISCREG_VTCR_EL2;
288710037SARM gem5 Developers                    }
288810037SARM gem5 Developers                    break;
288910037SARM gem5 Developers                }
289010037SARM gem5 Developers                break;
289110037SARM gem5 Developers              case 6:
289210037SARM gem5 Developers                switch (crm) {
289310037SARM gem5 Developers                  case 0:
289410037SARM gem5 Developers                    switch (op2) {
289510037SARM gem5 Developers                      case 0:
289610037SARM gem5 Developers                        return MISCREG_TTBR0_EL3;
289710037SARM gem5 Developers                      case 2:
289810037SARM gem5 Developers                        return MISCREG_TCR_EL3;
289910037SARM gem5 Developers                    }
290010037SARM gem5 Developers                    break;
290110037SARM gem5 Developers                }
290210037SARM gem5 Developers                break;
290310037SARM gem5 Developers            }
290410037SARM gem5 Developers            break;
290510037SARM gem5 Developers          case 3:
290610037SARM gem5 Developers            switch (op1) {
290710037SARM gem5 Developers              case 4:
290810037SARM gem5 Developers                switch (crm) {
290910037SARM gem5 Developers                  case 0:
291010037SARM gem5 Developers                    switch (op2) {
291110037SARM gem5 Developers                      case 0:
291210037SARM gem5 Developers                        return MISCREG_DACR32_EL2;
291310037SARM gem5 Developers                    }
291410037SARM gem5 Developers                    break;
291510037SARM gem5 Developers                }
291610037SARM gem5 Developers                break;
291710037SARM gem5 Developers            }
291810037SARM gem5 Developers            break;
291910037SARM gem5 Developers          case 4:
292010037SARM gem5 Developers            switch (op1) {
292110037SARM gem5 Developers              case 0:
292210037SARM gem5 Developers                switch (crm) {
292310037SARM gem5 Developers                  case 0:
292410037SARM gem5 Developers                    switch (op2) {
292510037SARM gem5 Developers                      case 0:
292610037SARM gem5 Developers                        return MISCREG_SPSR_EL1;
292710037SARM gem5 Developers                      case 1:
292810037SARM gem5 Developers                        return MISCREG_ELR_EL1;
292910037SARM gem5 Developers                    }
293010037SARM gem5 Developers                    break;
293110037SARM gem5 Developers                  case 1:
293210037SARM gem5 Developers                    switch (op2) {
293310037SARM gem5 Developers                      case 0:
293410037SARM gem5 Developers                        return MISCREG_SP_EL0;
293510037SARM gem5 Developers                    }
293610037SARM gem5 Developers                    break;
293710037SARM gem5 Developers                  case 2:
293810037SARM gem5 Developers                    switch (op2) {
293910037SARM gem5 Developers                      case 0:
294010037SARM gem5 Developers                        return MISCREG_SPSEL;
294110037SARM gem5 Developers                      case 2:
294210037SARM gem5 Developers                        return MISCREG_CURRENTEL;
294310037SARM gem5 Developers                    }
294410037SARM gem5 Developers                    break;
294510037SARM gem5 Developers                }
294610037SARM gem5 Developers                break;
294710037SARM gem5 Developers              case 3:
294810037SARM gem5 Developers                switch (crm) {
294910037SARM gem5 Developers                  case 2:
295010037SARM gem5 Developers                    switch (op2) {
295110037SARM gem5 Developers                      case 0:
295210037SARM gem5 Developers                        return MISCREG_NZCV;
295310037SARM gem5 Developers                      case 1:
295410037SARM gem5 Developers                        return MISCREG_DAIF;
295510037SARM gem5 Developers                    }
295610037SARM gem5 Developers                    break;
295710037SARM gem5 Developers                  case 4:
295810037SARM gem5 Developers                    switch (op2) {
295910037SARM gem5 Developers                      case 0:
296010037SARM gem5 Developers                        return MISCREG_FPCR;
296110037SARM gem5 Developers                      case 1:
296210037SARM gem5 Developers                        return MISCREG_FPSR;
296310037SARM gem5 Developers                    }
296410037SARM gem5 Developers                    break;
296510037SARM gem5 Developers                  case 5:
296610037SARM gem5 Developers                    switch (op2) {
296710037SARM gem5 Developers                      case 0:
296810037SARM gem5 Developers                        return MISCREG_DSPSR_EL0;
296910037SARM gem5 Developers                      case 1:
297010037SARM gem5 Developers                        return MISCREG_DLR_EL0;
297110037SARM gem5 Developers                    }
297210037SARM gem5 Developers                    break;
297310037SARM gem5 Developers                }
297410037SARM gem5 Developers                break;
297510037SARM gem5 Developers              case 4:
297610037SARM gem5 Developers                switch (crm) {
297710037SARM gem5 Developers                  case 0:
297810037SARM gem5 Developers                    switch (op2) {
297910037SARM gem5 Developers                      case 0:
298010037SARM gem5 Developers                        return MISCREG_SPSR_EL2;
298110037SARM gem5 Developers                      case 1:
298210037SARM gem5 Developers                        return MISCREG_ELR_EL2;
298310037SARM gem5 Developers                    }
298410037SARM gem5 Developers                    break;
298510037SARM gem5 Developers                  case 1:
298610037SARM gem5 Developers                    switch (op2) {
298710037SARM gem5 Developers                      case 0:
298810037SARM gem5 Developers                        return MISCREG_SP_EL1;
298910037SARM gem5 Developers                    }
299010037SARM gem5 Developers                    break;
299110037SARM gem5 Developers                  case 3:
299210037SARM gem5 Developers                    switch (op2) {
299310037SARM gem5 Developers                      case 0:
299410037SARM gem5 Developers                        return MISCREG_SPSR_IRQ_AA64;
299510037SARM gem5 Developers                      case 1:
299610037SARM gem5 Developers                        return MISCREG_SPSR_ABT_AA64;
299710037SARM gem5 Developers                      case 2:
299810037SARM gem5 Developers                        return MISCREG_SPSR_UND_AA64;
299910037SARM gem5 Developers                      case 3:
300010037SARM gem5 Developers                        return MISCREG_SPSR_FIQ_AA64;
300110037SARM gem5 Developers                    }
300210037SARM gem5 Developers                    break;
300310037SARM gem5 Developers                }
300410037SARM gem5 Developers                break;
300510037SARM gem5 Developers              case 6:
300610037SARM gem5 Developers                switch (crm) {
300710037SARM gem5 Developers                  case 0:
300810037SARM gem5 Developers                    switch (op2) {
300910037SARM gem5 Developers                      case 0:
301010037SARM gem5 Developers                        return MISCREG_SPSR_EL3;
301110037SARM gem5 Developers                      case 1:
301210037SARM gem5 Developers                        return MISCREG_ELR_EL3;
301310037SARM gem5 Developers                    }
301410037SARM gem5 Developers                    break;
301510037SARM gem5 Developers                  case 1:
301610037SARM gem5 Developers                    switch (op2) {
301710037SARM gem5 Developers                      case 0:
301810037SARM gem5 Developers                        return MISCREG_SP_EL2;
301910037SARM gem5 Developers                    }
302010037SARM gem5 Developers                    break;
302110037SARM gem5 Developers                }
302210037SARM gem5 Developers                break;
302310037SARM gem5 Developers            }
302410037SARM gem5 Developers            break;
302510037SARM gem5 Developers          case 5:
302610037SARM gem5 Developers            switch (op1) {
302710037SARM gem5 Developers              case 0:
302810037SARM gem5 Developers                switch (crm) {
302910037SARM gem5 Developers                  case 1:
303010037SARM gem5 Developers                    switch (op2) {
303110037SARM gem5 Developers                      case 0:
303210037SARM gem5 Developers                        return MISCREG_AFSR0_EL1;
303310037SARM gem5 Developers                      case 1:
303410037SARM gem5 Developers                        return MISCREG_AFSR1_EL1;
303510037SARM gem5 Developers                    }
303610037SARM gem5 Developers                    break;
303710037SARM gem5 Developers                  case 2:
303810037SARM gem5 Developers                    switch (op2) {
303910037SARM gem5 Developers                      case 0:
304010037SARM gem5 Developers                        return MISCREG_ESR_EL1;
304110037SARM gem5 Developers                    }
304210037SARM gem5 Developers                    break;
304310037SARM gem5 Developers                }
304410037SARM gem5 Developers                break;
304510037SARM gem5 Developers              case 4:
304610037SARM gem5 Developers                switch (crm) {
304710037SARM gem5 Developers                  case 0:
304810037SARM gem5 Developers                    switch (op2) {
304910037SARM gem5 Developers                      case 1:
305010037SARM gem5 Developers                        return MISCREG_IFSR32_EL2;
305110037SARM gem5 Developers                    }
305210037SARM gem5 Developers                    break;
305310037SARM gem5 Developers                  case 1:
305410037SARM gem5 Developers                    switch (op2) {
305510037SARM gem5 Developers                      case 0:
305610037SARM gem5 Developers                        return MISCREG_AFSR0_EL2;
305710037SARM gem5 Developers                      case 1:
305810037SARM gem5 Developers                        return MISCREG_AFSR1_EL2;
305910037SARM gem5 Developers                    }
306010037SARM gem5 Developers                    break;
306110037SARM gem5 Developers                  case 2:
306210037SARM gem5 Developers                    switch (op2) {
306310037SARM gem5 Developers                      case 0:
306410037SARM gem5 Developers                        return MISCREG_ESR_EL2;
306510037SARM gem5 Developers                    }
306610037SARM gem5 Developers                    break;
306710037SARM gem5 Developers                  case 3:
306810037SARM gem5 Developers                    switch (op2) {
306910037SARM gem5 Developers                      case 0:
307010037SARM gem5 Developers                        return MISCREG_FPEXC32_EL2;
307110037SARM gem5 Developers                    }
307210037SARM gem5 Developers                    break;
307310037SARM gem5 Developers                }
307410037SARM gem5 Developers                break;
307510037SARM gem5 Developers              case 6:
307610037SARM gem5 Developers                switch (crm) {
307710037SARM gem5 Developers                  case 1:
307810037SARM gem5 Developers                    switch (op2) {
307910037SARM gem5 Developers                      case 0:
308010037SARM gem5 Developers                        return MISCREG_AFSR0_EL3;
308110037SARM gem5 Developers                      case 1:
308210037SARM gem5 Developers                        return MISCREG_AFSR1_EL3;
308310037SARM gem5 Developers                    }
308410037SARM gem5 Developers                    break;
308510037SARM gem5 Developers                  case 2:
308610037SARM gem5 Developers                    switch (op2) {
308710037SARM gem5 Developers                      case 0:
308810037SARM gem5 Developers                        return MISCREG_ESR_EL3;
308910037SARM gem5 Developers                    }
309010037SARM gem5 Developers                    break;
309110037SARM gem5 Developers                }
309210037SARM gem5 Developers                break;
309310037SARM gem5 Developers            }
309410037SARM gem5 Developers            break;
309510037SARM gem5 Developers          case 6:
309610037SARM gem5 Developers            switch (op1) {
309710037SARM gem5 Developers              case 0:
309810037SARM gem5 Developers                switch (crm) {
309910037SARM gem5 Developers                  case 0:
310010037SARM gem5 Developers                    switch (op2) {
310110037SARM gem5 Developers                      case 0:
310210037SARM gem5 Developers                        return MISCREG_FAR_EL1;
310310037SARM gem5 Developers                    }
310410037SARM gem5 Developers                    break;
310510037SARM gem5 Developers                }
310610037SARM gem5 Developers                break;
310710037SARM gem5 Developers              case 4:
310810037SARM gem5 Developers                switch (crm) {
310910037SARM gem5 Developers                  case 0:
311010037SARM gem5 Developers                    switch (op2) {
311110037SARM gem5 Developers                      case 0:
311210037SARM gem5 Developers                        return MISCREG_FAR_EL2;
311310037SARM gem5 Developers                      case 4:
311410037SARM gem5 Developers                        return MISCREG_HPFAR_EL2;
311510037SARM gem5 Developers                    }
311610037SARM gem5 Developers                    break;
311710037SARM gem5 Developers                }
311810037SARM gem5 Developers                break;
311910037SARM gem5 Developers              case 6:
312010037SARM gem5 Developers                switch (crm) {
312110037SARM gem5 Developers                  case 0:
312210037SARM gem5 Developers                    switch (op2) {
312310037SARM gem5 Developers                      case 0:
312410037SARM gem5 Developers                        return MISCREG_FAR_EL3;
312510037SARM gem5 Developers                    }
312610037SARM gem5 Developers                    break;
312710037SARM gem5 Developers                }
312810037SARM gem5 Developers                break;
312910037SARM gem5 Developers            }
313010037SARM gem5 Developers            break;
313110037SARM gem5 Developers          case 7:
313210037SARM gem5 Developers            switch (op1) {
313310037SARM gem5 Developers              case 0:
313410037SARM gem5 Developers                switch (crm) {
313510037SARM gem5 Developers                  case 4:
313610037SARM gem5 Developers                    switch (op2) {
313710037SARM gem5 Developers                      case 0:
313810037SARM gem5 Developers                        return MISCREG_PAR_EL1;
313910037SARM gem5 Developers                    }
314010037SARM gem5 Developers                    break;
314110037SARM gem5 Developers                }
314210037SARM gem5 Developers                break;
314310037SARM gem5 Developers            }
314410037SARM gem5 Developers            break;
314510037SARM gem5 Developers          case 9:
314610037SARM gem5 Developers            switch (op1) {
314710037SARM gem5 Developers              case 0:
314810037SARM gem5 Developers                switch (crm) {
314910037SARM gem5 Developers                  case 14:
315010037SARM gem5 Developers                    switch (op2) {
315110037SARM gem5 Developers                      case 1:
315210037SARM gem5 Developers                        return MISCREG_PMINTENSET_EL1;
315310037SARM gem5 Developers                      case 2:
315410037SARM gem5 Developers                        return MISCREG_PMINTENCLR_EL1;
315510037SARM gem5 Developers                    }
315610037SARM gem5 Developers                    break;
315710037SARM gem5 Developers                }
315810037SARM gem5 Developers                break;
315910037SARM gem5 Developers              case 3:
316010037SARM gem5 Developers                switch (crm) {
316110037SARM gem5 Developers                  case 12:
316210037SARM gem5 Developers                    switch (op2) {
316310037SARM gem5 Developers                      case 0:
316410037SARM gem5 Developers                        return MISCREG_PMCR_EL0;
316510037SARM gem5 Developers                      case 1:
316610037SARM gem5 Developers                        return MISCREG_PMCNTENSET_EL0;
316710037SARM gem5 Developers                      case 2:
316810037SARM gem5 Developers                        return MISCREG_PMCNTENCLR_EL0;
316910037SARM gem5 Developers                      case 3:
317010037SARM gem5 Developers                        return MISCREG_PMOVSCLR_EL0;
317110037SARM gem5 Developers                      case 4:
317210037SARM gem5 Developers                        return MISCREG_PMSWINC_EL0;
317310037SARM gem5 Developers                      case 5:
317410037SARM gem5 Developers                        return MISCREG_PMSELR_EL0;
317510037SARM gem5 Developers                      case 6:
317610037SARM gem5 Developers                        return MISCREG_PMCEID0_EL0;
317710037SARM gem5 Developers                      case 7:
317810037SARM gem5 Developers                        return MISCREG_PMCEID1_EL0;
317910037SARM gem5 Developers                    }
318010037SARM gem5 Developers                    break;
318110037SARM gem5 Developers                  case 13:
318210037SARM gem5 Developers                    switch (op2) {
318310037SARM gem5 Developers                      case 0:
318410037SARM gem5 Developers                        return MISCREG_PMCCNTR_EL0;
318510037SARM gem5 Developers                      case 1:
318610604SAndreas.Sandberg@ARM.com                        return MISCREG_PMXEVTYPER_EL0;
318710037SARM gem5 Developers                      case 2:
318810037SARM gem5 Developers                        return MISCREG_PMXEVCNTR_EL0;
318910037SARM gem5 Developers                    }
319010037SARM gem5 Developers                    break;
319110037SARM gem5 Developers                  case 14:
319210037SARM gem5 Developers                    switch (op2) {
319310037SARM gem5 Developers                      case 0:
319410037SARM gem5 Developers                        return MISCREG_PMUSERENR_EL0;
319510037SARM gem5 Developers                      case 3:
319610037SARM gem5 Developers                        return MISCREG_PMOVSSET_EL0;
319710037SARM gem5 Developers                    }
319810037SARM gem5 Developers                    break;
319910037SARM gem5 Developers                }
320010037SARM gem5 Developers                break;
320110037SARM gem5 Developers            }
320210037SARM gem5 Developers            break;
320310037SARM gem5 Developers          case 10:
320410037SARM gem5 Developers            switch (op1) {
320510037SARM gem5 Developers              case 0:
320610037SARM gem5 Developers                switch (crm) {
320710037SARM gem5 Developers                  case 2:
320810037SARM gem5 Developers                    switch (op2) {
320910037SARM gem5 Developers                      case 0:
321010037SARM gem5 Developers                        return MISCREG_MAIR_EL1;
321110037SARM gem5 Developers                    }
321210037SARM gem5 Developers                    break;
321310037SARM gem5 Developers                  case 3:
321410037SARM gem5 Developers                    switch (op2) {
321510037SARM gem5 Developers                      case 0:
321610037SARM gem5 Developers                        return MISCREG_AMAIR_EL1;
321710037SARM gem5 Developers                    }
321810037SARM gem5 Developers                    break;
321910037SARM gem5 Developers                }
322010037SARM gem5 Developers                break;
322110037SARM gem5 Developers              case 4:
322210037SARM gem5 Developers                switch (crm) {
322310037SARM gem5 Developers                  case 2:
322410037SARM gem5 Developers                    switch (op2) {
322510037SARM gem5 Developers                      case 0:
322610037SARM gem5 Developers                        return MISCREG_MAIR_EL2;
322710037SARM gem5 Developers                    }
322810037SARM gem5 Developers                    break;
322910037SARM gem5 Developers                  case 3:
323010037SARM gem5 Developers                    switch (op2) {
323110037SARM gem5 Developers                      case 0:
323210037SARM gem5 Developers                        return MISCREG_AMAIR_EL2;
323310037SARM gem5 Developers                    }
323410037SARM gem5 Developers                    break;
323510037SARM gem5 Developers                }
323610037SARM gem5 Developers                break;
323710037SARM gem5 Developers              case 6:
323810037SARM gem5 Developers                switch (crm) {
323910037SARM gem5 Developers                  case 2:
324010037SARM gem5 Developers                    switch (op2) {
324110037SARM gem5 Developers                      case 0:
324210037SARM gem5 Developers                        return MISCREG_MAIR_EL3;
324310037SARM gem5 Developers                    }
324410037SARM gem5 Developers                    break;
324510037SARM gem5 Developers                  case 3:
324610037SARM gem5 Developers                    switch (op2) {
324710037SARM gem5 Developers                      case 0:
324810037SARM gem5 Developers                        return MISCREG_AMAIR_EL3;
324910037SARM gem5 Developers                    }
325010037SARM gem5 Developers                    break;
325110037SARM gem5 Developers                }
325210037SARM gem5 Developers                break;
325310037SARM gem5 Developers            }
325410037SARM gem5 Developers            break;
325510037SARM gem5 Developers          case 11:
325610037SARM gem5 Developers            switch (op1) {
325710037SARM gem5 Developers              case 1:
325810037SARM gem5 Developers                switch (crm) {
325910037SARM gem5 Developers                  case 0:
326010037SARM gem5 Developers                    switch (op2) {
326110037SARM gem5 Developers                      case 2:
326210037SARM gem5 Developers                        return MISCREG_L2CTLR_EL1;
326310037SARM gem5 Developers                      case 3:
326410037SARM gem5 Developers                        return MISCREG_L2ECTLR_EL1;
326510037SARM gem5 Developers                    }
326610037SARM gem5 Developers                    break;
326710037SARM gem5 Developers                }
326810037SARM gem5 Developers                break;
326910037SARM gem5 Developers            }
327010037SARM gem5 Developers            break;
327110037SARM gem5 Developers          case 12:
327210037SARM gem5 Developers            switch (op1) {
327310037SARM gem5 Developers              case 0:
327410037SARM gem5 Developers                switch (crm) {
327510037SARM gem5 Developers                  case 0:
327610037SARM gem5 Developers                    switch (op2) {
327710037SARM gem5 Developers                      case 0:
327810037SARM gem5 Developers                        return MISCREG_VBAR_EL1;
327910037SARM gem5 Developers                      case 1:
328010037SARM gem5 Developers                        return MISCREG_RVBAR_EL1;
328110037SARM gem5 Developers                    }
328210037SARM gem5 Developers                    break;
328310037SARM gem5 Developers                  case 1:
328410037SARM gem5 Developers                    switch (op2) {
328510037SARM gem5 Developers                      case 0:
328610037SARM gem5 Developers                        return MISCREG_ISR_EL1;
328710037SARM gem5 Developers                    }
328810037SARM gem5 Developers                    break;
328910037SARM gem5 Developers                }
329010037SARM gem5 Developers                break;
329110037SARM gem5 Developers              case 4:
329210037SARM gem5 Developers                switch (crm) {
329310037SARM gem5 Developers                  case 0:
329410037SARM gem5 Developers                    switch (op2) {
329510037SARM gem5 Developers                      case 0:
329610037SARM gem5 Developers                        return MISCREG_VBAR_EL2;
329710037SARM gem5 Developers                      case 1:
329810037SARM gem5 Developers                        return MISCREG_RVBAR_EL2;
329910037SARM gem5 Developers                    }
330010037SARM gem5 Developers                    break;
330110037SARM gem5 Developers                }
330210037SARM gem5 Developers                break;
330310037SARM gem5 Developers              case 6:
330410037SARM gem5 Developers                switch (crm) {
330510037SARM gem5 Developers                  case 0:
330610037SARM gem5 Developers                    switch (op2) {
330710037SARM gem5 Developers                      case 0:
330810037SARM gem5 Developers                        return MISCREG_VBAR_EL3;
330910037SARM gem5 Developers                      case 1:
331010037SARM gem5 Developers                        return MISCREG_RVBAR_EL3;
331110037SARM gem5 Developers                      case 2:
331210037SARM gem5 Developers                        return MISCREG_RMR_EL3;
331310037SARM gem5 Developers                    }
331410037SARM gem5 Developers                    break;
331510037SARM gem5 Developers                }
331610037SARM gem5 Developers                break;
331710037SARM gem5 Developers            }
331810037SARM gem5 Developers            break;
331910037SARM gem5 Developers          case 13:
332010037SARM gem5 Developers            switch (op1) {
332110037SARM gem5 Developers              case 0:
332210037SARM gem5 Developers                switch (crm) {
332310037SARM gem5 Developers                  case 0:
332410037SARM gem5 Developers                    switch (op2) {
332510037SARM gem5 Developers                      case 1:
332610037SARM gem5 Developers                        return MISCREG_CONTEXTIDR_EL1;
332710037SARM gem5 Developers                      case 4:
332810037SARM gem5 Developers                        return MISCREG_TPIDR_EL1;
332910037SARM gem5 Developers                    }
333010037SARM gem5 Developers                    break;
333110037SARM gem5 Developers                }
333210037SARM gem5 Developers                break;
333310037SARM gem5 Developers              case 3:
333410037SARM gem5 Developers                switch (crm) {
333510037SARM gem5 Developers                  case 0:
333610037SARM gem5 Developers                    switch (op2) {
333710037SARM gem5 Developers                      case 2:
333810037SARM gem5 Developers                        return MISCREG_TPIDR_EL0;
333910037SARM gem5 Developers                      case 3:
334010037SARM gem5 Developers                        return MISCREG_TPIDRRO_EL0;
334110037SARM gem5 Developers                    }
334210037SARM gem5 Developers                    break;
334310037SARM gem5 Developers                }
334410037SARM gem5 Developers                break;
334510037SARM gem5 Developers              case 4:
334610037SARM gem5 Developers                switch (crm) {
334710037SARM gem5 Developers                  case 0:
334810037SARM gem5 Developers                    switch (op2) {
334910856SCurtis.Dunham@arm.com                      case 1:
335010856SCurtis.Dunham@arm.com                        return MISCREG_CONTEXTIDR_EL2;
335110037SARM gem5 Developers                      case 2:
335210037SARM gem5 Developers                        return MISCREG_TPIDR_EL2;
335310037SARM gem5 Developers                    }
335410037SARM gem5 Developers                    break;
335510037SARM gem5 Developers                }
335610037SARM gem5 Developers                break;
335710037SARM gem5 Developers              case 6:
335810037SARM gem5 Developers                switch (crm) {
335910037SARM gem5 Developers                  case 0:
336010037SARM gem5 Developers                    switch (op2) {
336110037SARM gem5 Developers                      case 2:
336210037SARM gem5 Developers                        return MISCREG_TPIDR_EL3;
336310037SARM gem5 Developers                    }
336410037SARM gem5 Developers                    break;
336510037SARM gem5 Developers                }
336610037SARM gem5 Developers                break;
336710037SARM gem5 Developers            }
336810037SARM gem5 Developers            break;
336910037SARM gem5 Developers          case 14:
337010037SARM gem5 Developers            switch (op1) {
337110037SARM gem5 Developers              case 0:
337210037SARM gem5 Developers                switch (crm) {
337310037SARM gem5 Developers                  case 1:
337410037SARM gem5 Developers                    switch (op2) {
337510037SARM gem5 Developers                      case 0:
337610037SARM gem5 Developers                        return MISCREG_CNTKCTL_EL1;
337710037SARM gem5 Developers                    }
337810037SARM gem5 Developers                    break;
337910037SARM gem5 Developers                }
338010037SARM gem5 Developers                break;
338110037SARM gem5 Developers              case 3:
338210037SARM gem5 Developers                switch (crm) {
338310037SARM gem5 Developers                  case 0:
338410037SARM gem5 Developers                    switch (op2) {
338510037SARM gem5 Developers                      case 0:
338610037SARM gem5 Developers                        return MISCREG_CNTFRQ_EL0;
338710037SARM gem5 Developers                      case 1:
338810037SARM gem5 Developers                        return MISCREG_CNTPCT_EL0;
338910037SARM gem5 Developers                      case 2:
339010037SARM gem5 Developers                        return MISCREG_CNTVCT_EL0;
339110037SARM gem5 Developers                    }
339210037SARM gem5 Developers                    break;
339310037SARM gem5 Developers                  case 2:
339410037SARM gem5 Developers                    switch (op2) {
339510037SARM gem5 Developers                      case 0:
339610037SARM gem5 Developers                        return MISCREG_CNTP_TVAL_EL0;
339710037SARM gem5 Developers                      case 1:
339810037SARM gem5 Developers                        return MISCREG_CNTP_CTL_EL0;
339910037SARM gem5 Developers                      case 2:
340010037SARM gem5 Developers                        return MISCREG_CNTP_CVAL_EL0;
340110037SARM gem5 Developers                    }
340210037SARM gem5 Developers                    break;
340310037SARM gem5 Developers                  case 3:
340410037SARM gem5 Developers                    switch (op2) {
340510037SARM gem5 Developers                      case 0:
340610037SARM gem5 Developers                        return MISCREG_CNTV_TVAL_EL0;
340710037SARM gem5 Developers                      case 1:
340810037SARM gem5 Developers                        return MISCREG_CNTV_CTL_EL0;
340910037SARM gem5 Developers                      case 2:
341010037SARM gem5 Developers                        return MISCREG_CNTV_CVAL_EL0;
341110037SARM gem5 Developers                    }
341210037SARM gem5 Developers                    break;
341310037SARM gem5 Developers                  case 8:
341410037SARM gem5 Developers                    switch (op2) {
341510037SARM gem5 Developers                      case 0:
341610037SARM gem5 Developers                        return MISCREG_PMEVCNTR0_EL0;
341710037SARM gem5 Developers                      case 1:
341810037SARM gem5 Developers                        return MISCREG_PMEVCNTR1_EL0;
341910037SARM gem5 Developers                      case 2:
342010037SARM gem5 Developers                        return MISCREG_PMEVCNTR2_EL0;
342110037SARM gem5 Developers                      case 3:
342210037SARM gem5 Developers                        return MISCREG_PMEVCNTR3_EL0;
342310037SARM gem5 Developers                      case 4:
342410037SARM gem5 Developers                        return MISCREG_PMEVCNTR4_EL0;
342510037SARM gem5 Developers                      case 5:
342610037SARM gem5 Developers                        return MISCREG_PMEVCNTR5_EL0;
342710037SARM gem5 Developers                    }
342810037SARM gem5 Developers                    break;
342910037SARM gem5 Developers                  case 12:
343010037SARM gem5 Developers                    switch (op2) {
343110037SARM gem5 Developers                      case 0:
343210037SARM gem5 Developers                        return MISCREG_PMEVTYPER0_EL0;
343310037SARM gem5 Developers                      case 1:
343410037SARM gem5 Developers                        return MISCREG_PMEVTYPER1_EL0;
343510037SARM gem5 Developers                      case 2:
343610037SARM gem5 Developers                        return MISCREG_PMEVTYPER2_EL0;
343710037SARM gem5 Developers                      case 3:
343810037SARM gem5 Developers                        return MISCREG_PMEVTYPER3_EL0;
343910037SARM gem5 Developers                      case 4:
344010037SARM gem5 Developers                        return MISCREG_PMEVTYPER4_EL0;
344110037SARM gem5 Developers                      case 5:
344210037SARM gem5 Developers                        return MISCREG_PMEVTYPER5_EL0;
344310037SARM gem5 Developers                    }
344410037SARM gem5 Developers                    break;
344510604SAndreas.Sandberg@ARM.com                  case 15:
344610604SAndreas.Sandberg@ARM.com                    switch (op2) {
344710604SAndreas.Sandberg@ARM.com                      case 7:
344810604SAndreas.Sandberg@ARM.com                        return MISCREG_PMCCFILTR_EL0;
344910604SAndreas.Sandberg@ARM.com                    }
345010037SARM gem5 Developers                }
345110037SARM gem5 Developers                break;
345210037SARM gem5 Developers              case 4:
345310037SARM gem5 Developers                switch (crm) {
345410037SARM gem5 Developers                  case 0:
345510037SARM gem5 Developers                    switch (op2) {
345610037SARM gem5 Developers                      case 3:
345710037SARM gem5 Developers                        return MISCREG_CNTVOFF_EL2;
345810037SARM gem5 Developers                    }
345910037SARM gem5 Developers                    break;
346010037SARM gem5 Developers                  case 1:
346110037SARM gem5 Developers                    switch (op2) {
346210037SARM gem5 Developers                      case 0:
346310037SARM gem5 Developers                        return MISCREG_CNTHCTL_EL2;
346410037SARM gem5 Developers                    }
346510037SARM gem5 Developers                    break;
346610037SARM gem5 Developers                  case 2:
346710037SARM gem5 Developers                    switch (op2) {
346810037SARM gem5 Developers                      case 0:
346910037SARM gem5 Developers                        return MISCREG_CNTHP_TVAL_EL2;
347010037SARM gem5 Developers                      case 1:
347110037SARM gem5 Developers                        return MISCREG_CNTHP_CTL_EL2;
347210037SARM gem5 Developers                      case 2:
347310037SARM gem5 Developers                        return MISCREG_CNTHP_CVAL_EL2;
347410037SARM gem5 Developers                    }
347510037SARM gem5 Developers                    break;
347610037SARM gem5 Developers                }
347710037SARM gem5 Developers                break;
347810037SARM gem5 Developers              case 7:
347910037SARM gem5 Developers                switch (crm) {
348010037SARM gem5 Developers                  case 2:
348110037SARM gem5 Developers                    switch (op2) {
348210037SARM gem5 Developers                      case 0:
348310037SARM gem5 Developers                        return MISCREG_CNTPS_TVAL_EL1;
348410037SARM gem5 Developers                      case 1:
348510037SARM gem5 Developers                        return MISCREG_CNTPS_CTL_EL1;
348610037SARM gem5 Developers                      case 2:
348710037SARM gem5 Developers                        return MISCREG_CNTPS_CVAL_EL1;
348810037SARM gem5 Developers                    }
348910037SARM gem5 Developers                    break;
349010037SARM gem5 Developers                }
349110037SARM gem5 Developers                break;
349210037SARM gem5 Developers            }
349310037SARM gem5 Developers            break;
349410037SARM gem5 Developers          case 15:
349510037SARM gem5 Developers            switch (op1) {
349610037SARM gem5 Developers              case 0:
349710037SARM gem5 Developers                switch (crm) {
349810037SARM gem5 Developers                  case 0:
349910037SARM gem5 Developers                    switch (op2) {
350010037SARM gem5 Developers                      case 0:
350110037SARM gem5 Developers                        return MISCREG_IL1DATA0_EL1;
350210037SARM gem5 Developers                      case 1:
350310037SARM gem5 Developers                        return MISCREG_IL1DATA1_EL1;
350410037SARM gem5 Developers                      case 2:
350510037SARM gem5 Developers                        return MISCREG_IL1DATA2_EL1;
350610037SARM gem5 Developers                      case 3:
350710037SARM gem5 Developers                        return MISCREG_IL1DATA3_EL1;
350810037SARM gem5 Developers                    }
350910037SARM gem5 Developers                    break;
351010037SARM gem5 Developers                  case 1:
351110037SARM gem5 Developers                    switch (op2) {
351210037SARM gem5 Developers                      case 0:
351310037SARM gem5 Developers                        return MISCREG_DL1DATA0_EL1;
351410037SARM gem5 Developers                      case 1:
351510037SARM gem5 Developers                        return MISCREG_DL1DATA1_EL1;
351610037SARM gem5 Developers                      case 2:
351710037SARM gem5 Developers                        return MISCREG_DL1DATA2_EL1;
351810037SARM gem5 Developers                      case 3:
351910037SARM gem5 Developers                        return MISCREG_DL1DATA3_EL1;
352010037SARM gem5 Developers                      case 4:
352110037SARM gem5 Developers                        return MISCREG_DL1DATA4_EL1;
352210037SARM gem5 Developers                    }
352310037SARM gem5 Developers                    break;
352410037SARM gem5 Developers                }
352510037SARM gem5 Developers                break;
352610037SARM gem5 Developers              case 1:
352710037SARM gem5 Developers                switch (crm) {
352810037SARM gem5 Developers                  case 0:
352910037SARM gem5 Developers                    switch (op2) {
353010037SARM gem5 Developers                      case 0:
353110037SARM gem5 Developers                        return MISCREG_L2ACTLR_EL1;
353210037SARM gem5 Developers                    }
353310037SARM gem5 Developers                    break;
353410037SARM gem5 Developers                  case 2:
353510037SARM gem5 Developers                    switch (op2) {
353610037SARM gem5 Developers                      case 0:
353710037SARM gem5 Developers                        return MISCREG_CPUACTLR_EL1;
353810037SARM gem5 Developers                      case 1:
353910037SARM gem5 Developers                        return MISCREG_CPUECTLR_EL1;
354010037SARM gem5 Developers                      case 2:
354110037SARM gem5 Developers                        return MISCREG_CPUMERRSR_EL1;
354210037SARM gem5 Developers                      case 3:
354310037SARM gem5 Developers                        return MISCREG_L2MERRSR_EL1;
354410037SARM gem5 Developers                    }
354510037SARM gem5 Developers                    break;
354610037SARM gem5 Developers                  case 3:
354710037SARM gem5 Developers                    switch (op2) {
354810037SARM gem5 Developers                      case 0:
354910037SARM gem5 Developers                        return MISCREG_CBAR_EL1;
355010037SARM gem5 Developers
355110037SARM gem5 Developers                    }
355210037SARM gem5 Developers                    break;
355310037SARM gem5 Developers                }
355410037SARM gem5 Developers                break;
355510037SARM gem5 Developers            }
355610037SARM gem5 Developers            break;
355710037SARM gem5 Developers        }
355810037SARM gem5 Developers        break;
355910037SARM gem5 Developers    }
356010037SARM gem5 Developers
356110037SARM gem5 Developers    return MISCREG_UNKNOWN;
356210037SARM gem5 Developers}
356310037SARM gem5 Developers
356410037SARM gem5 Developers} // namespace ArmISA
3565