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