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