miscregs.hh revision 12499
16242Sgblack@eecs.umich.edu/*
211939Snikos.nikoleris@arm.com * Copyright (c) 2010-2017 ARM Limited
37093Sgblack@eecs.umich.edu * All rights reserved
47093Sgblack@eecs.umich.edu *
57093Sgblack@eecs.umich.edu * The license below extends only to copyright in the software and shall
67093Sgblack@eecs.umich.edu * not be construed as granting a license to any other intellectual
77093Sgblack@eecs.umich.edu * property including but not limited to intellectual property relating
87093Sgblack@eecs.umich.edu * to a hardware implementation of the functionality of the software
97093Sgblack@eecs.umich.edu * licensed hereunder.  You may use the software subject to the license
107093Sgblack@eecs.umich.edu * terms below provided that you ensure that this notice is replicated
117093Sgblack@eecs.umich.edu * unmodified and in its entirety in all distributions of the software,
127093Sgblack@eecs.umich.edu * modified or unmodified, in source code or in binary form.
137093Sgblack@eecs.umich.edu *
146242Sgblack@eecs.umich.edu * Copyright (c) 2009 The Regents of The University of Michigan
156242Sgblack@eecs.umich.edu * All rights reserved.
166242Sgblack@eecs.umich.edu *
176242Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without
186242Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are
196242Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright
206242Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer;
216242Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright
226242Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the
236242Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution;
246242Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its
256242Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from
266242Sgblack@eecs.umich.edu * this software without specific prior written permission.
276242Sgblack@eecs.umich.edu *
286242Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
296242Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
306242Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
316242Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
326242Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
336242Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
346242Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
356242Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
366242Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
376242Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
386242Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
396242Sgblack@eecs.umich.edu *
406242Sgblack@eecs.umich.edu * Authors: Gabe Black
4110037SARM gem5 Developers *          Giacomo Gabrielli
426242Sgblack@eecs.umich.edu */
436242Sgblack@eecs.umich.edu#ifndef __ARCH_ARM_MISCREGS_HH__
446242Sgblack@eecs.umich.edu#define __ARCH_ARM_MISCREGS_HH__
456242Sgblack@eecs.umich.edu
4610037SARM gem5 Developers#include <bitset>
4711939Snikos.nikoleris@arm.com#include <tuple>
4810037SARM gem5 Developers
496242Sgblack@eecs.umich.edu#include "base/bitunion.hh"
509256SAndreas.Sandberg@arm.com#include "base/compiler.hh"
516242Sgblack@eecs.umich.edu
5210037SARM gem5 Developersclass ThreadContext;
5310037SARM gem5 Developers
5410037SARM gem5 Developers
556242Sgblack@eecs.umich.edunamespace ArmISA
566242Sgblack@eecs.umich.edu{
576242Sgblack@eecs.umich.edu    enum MiscRegIndex {
5810037SARM gem5 Developers        MISCREG_CPSR = 0,               //   0
5910037SARM gem5 Developers        MISCREG_SPSR,                   //   1
6010037SARM gem5 Developers        MISCREG_SPSR_FIQ,               //   2
6110037SARM gem5 Developers        MISCREG_SPSR_IRQ,               //   3
6210037SARM gem5 Developers        MISCREG_SPSR_SVC,               //   4
6310037SARM gem5 Developers        MISCREG_SPSR_MON,               //   5
6410037SARM gem5 Developers        MISCREG_SPSR_ABT,               //   6
6510037SARM gem5 Developers        MISCREG_SPSR_HYP,               //   7
6610037SARM gem5 Developers        MISCREG_SPSR_UND,               //   8
6710037SARM gem5 Developers        MISCREG_ELR_HYP,                //   9
6810037SARM gem5 Developers        MISCREG_FPSID,                  //  10
6910037SARM gem5 Developers        MISCREG_FPSCR,                  //  11
7010037SARM gem5 Developers        MISCREG_MVFR1,                  //  12
7110037SARM gem5 Developers        MISCREG_MVFR0,                  //  13
7210037SARM gem5 Developers        MISCREG_FPEXC,                  //  14
737259Sgblack@eecs.umich.edu
7410037SARM gem5 Developers        // Helper registers
7510037SARM gem5 Developers        MISCREG_CPSR_MODE,              //  15
7610037SARM gem5 Developers        MISCREG_CPSR_Q,                 //  16
7710037SARM gem5 Developers        MISCREG_FPSCR_EXC,              //  17
7810037SARM gem5 Developers        MISCREG_FPSCR_QC,               //  18
7910037SARM gem5 Developers        MISCREG_LOCKADDR,               //  19
8010037SARM gem5 Developers        MISCREG_LOCKFLAG,               //  20
8110037SARM gem5 Developers        MISCREG_PRRR_MAIR0,             //  21
8210037SARM gem5 Developers        MISCREG_PRRR_MAIR0_NS,          //  22
8310037SARM gem5 Developers        MISCREG_PRRR_MAIR0_S,           //  23
8410037SARM gem5 Developers        MISCREG_NMRR_MAIR1,             //  24
8510037SARM gem5 Developers        MISCREG_NMRR_MAIR1_NS,          //  25
8610037SARM gem5 Developers        MISCREG_NMRR_MAIR1_S,           //  26
8710037SARM gem5 Developers        MISCREG_PMXEVTYPER_PMCCFILTR,   //  27
8810037SARM gem5 Developers        MISCREG_SCTLR_RST,              //  28
8910037SARM gem5 Developers        MISCREG_SEV_MAILBOX,            //  29
908868SMatt.Horsnell@arm.com
9110037SARM gem5 Developers        // AArch32 CP14 registers (debug/trace/ThumbEE/Jazelle control)
9210037SARM gem5 Developers        MISCREG_DBGDIDR,                //  30
9310037SARM gem5 Developers        MISCREG_DBGDSCRint,             //  31
9410037SARM gem5 Developers        MISCREG_DBGDCCINT,              //  32
9510037SARM gem5 Developers        MISCREG_DBGDTRTXint,            //  33
9610037SARM gem5 Developers        MISCREG_DBGDTRRXint,            //  34
9710037SARM gem5 Developers        MISCREG_DBGWFAR,                //  35
9810037SARM gem5 Developers        MISCREG_DBGVCR,                 //  36
9910037SARM gem5 Developers        MISCREG_DBGDTRRXext,            //  37
10010037SARM gem5 Developers        MISCREG_DBGDSCRext,             //  38
10110037SARM gem5 Developers        MISCREG_DBGDTRTXext,            //  39
10210037SARM gem5 Developers        MISCREG_DBGOSECCR,              //  40
10310037SARM gem5 Developers        MISCREG_DBGBVR0,                //  41
10410037SARM gem5 Developers        MISCREG_DBGBVR1,                //  42
10510037SARM gem5 Developers        MISCREG_DBGBVR2,                //  43
10610037SARM gem5 Developers        MISCREG_DBGBVR3,                //  44
10710037SARM gem5 Developers        MISCREG_DBGBVR4,                //  45
10810037SARM gem5 Developers        MISCREG_DBGBVR5,                //  46
10910037SARM gem5 Developers        MISCREG_DBGBCR0,                //  47
11010037SARM gem5 Developers        MISCREG_DBGBCR1,                //  48
11110037SARM gem5 Developers        MISCREG_DBGBCR2,                //  49
11210037SARM gem5 Developers        MISCREG_DBGBCR3,                //  50
11310037SARM gem5 Developers        MISCREG_DBGBCR4,                //  51
11410037SARM gem5 Developers        MISCREG_DBGBCR5,                //  52
11510037SARM gem5 Developers        MISCREG_DBGWVR0,                //  53
11610037SARM gem5 Developers        MISCREG_DBGWVR1,                //  54
11710037SARM gem5 Developers        MISCREG_DBGWVR2,                //  55
11810037SARM gem5 Developers        MISCREG_DBGWVR3,                //  56
11910037SARM gem5 Developers        MISCREG_DBGWCR0,                //  57
12010037SARM gem5 Developers        MISCREG_DBGWCR1,                //  58
12110037SARM gem5 Developers        MISCREG_DBGWCR2,                //  59
12210037SARM gem5 Developers        MISCREG_DBGWCR3,                //  60
12310037SARM gem5 Developers        MISCREG_DBGDRAR,                //  61
12410037SARM gem5 Developers        MISCREG_DBGBXVR4,               //  62
12510037SARM gem5 Developers        MISCREG_DBGBXVR5,               //  63
12610037SARM gem5 Developers        MISCREG_DBGOSLAR,               //  64
12710037SARM gem5 Developers        MISCREG_DBGOSLSR,               //  65
12810037SARM gem5 Developers        MISCREG_DBGOSDLR,               //  66
12910037SARM gem5 Developers        MISCREG_DBGPRCR,                //  67
13010037SARM gem5 Developers        MISCREG_DBGDSAR,                //  68
13110037SARM gem5 Developers        MISCREG_DBGCLAIMSET,            //  69
13210037SARM gem5 Developers        MISCREG_DBGCLAIMCLR,            //  70
13310037SARM gem5 Developers        MISCREG_DBGAUTHSTATUS,          //  71
13410037SARM gem5 Developers        MISCREG_DBGDEVID2,              //  72
13510037SARM gem5 Developers        MISCREG_DBGDEVID1,              //  73
13610037SARM gem5 Developers        MISCREG_DBGDEVID0,              //  74
13711768SCurtis.Dunham@arm.com        MISCREG_TEECR,                  //  75, not in ARM DDI 0487A.b+
13810037SARM gem5 Developers        MISCREG_JIDR,                   //  76
13911768SCurtis.Dunham@arm.com        MISCREG_TEEHBR,                 //  77, not in ARM DDI 0487A.b+
14010037SARM gem5 Developers        MISCREG_JOSCR,                  //  78
14110037SARM gem5 Developers        MISCREG_JMCR,                   //  79
1427351Sgblack@eecs.umich.edu
14310037SARM gem5 Developers        // AArch32 CP15 registers (system control)
14410037SARM gem5 Developers        MISCREG_MIDR,                   //  80
14510037SARM gem5 Developers        MISCREG_CTR,                    //  81
14610037SARM gem5 Developers        MISCREG_TCMTR,                  //  82
14710037SARM gem5 Developers        MISCREG_TLBTR,                  //  83
14810037SARM gem5 Developers        MISCREG_MPIDR,                  //  84
14910037SARM gem5 Developers        MISCREG_REVIDR,                 //  85
15010037SARM gem5 Developers        MISCREG_ID_PFR0,                //  86
15110037SARM gem5 Developers        MISCREG_ID_PFR1,                //  87
15210037SARM gem5 Developers        MISCREG_ID_DFR0,                //  88
15310037SARM gem5 Developers        MISCREG_ID_AFR0,                //  89
15410037SARM gem5 Developers        MISCREG_ID_MMFR0,               //  90
15510037SARM gem5 Developers        MISCREG_ID_MMFR1,               //  91
15610037SARM gem5 Developers        MISCREG_ID_MMFR2,               //  92
15710037SARM gem5 Developers        MISCREG_ID_MMFR3,               //  93
15810037SARM gem5 Developers        MISCREG_ID_ISAR0,               //  94
15910037SARM gem5 Developers        MISCREG_ID_ISAR1,               //  95
16010037SARM gem5 Developers        MISCREG_ID_ISAR2,               //  96
16110037SARM gem5 Developers        MISCREG_ID_ISAR3,               //  97
16210037SARM gem5 Developers        MISCREG_ID_ISAR4,               //  98
16310037SARM gem5 Developers        MISCREG_ID_ISAR5,               //  99
16410037SARM gem5 Developers        MISCREG_CCSIDR,                 // 100
16510037SARM gem5 Developers        MISCREG_CLIDR,                  // 101
16610037SARM gem5 Developers        MISCREG_AIDR,                   // 102
16710037SARM gem5 Developers        MISCREG_CSSELR,                 // 103
16810037SARM gem5 Developers        MISCREG_CSSELR_NS,              // 104
16910037SARM gem5 Developers        MISCREG_CSSELR_S,               // 105
17010037SARM gem5 Developers        MISCREG_VPIDR,                  // 106
17110037SARM gem5 Developers        MISCREG_VMPIDR,                 // 107
17210037SARM gem5 Developers        MISCREG_SCTLR,                  // 108
17310037SARM gem5 Developers        MISCREG_SCTLR_NS,               // 109
17410037SARM gem5 Developers        MISCREG_SCTLR_S,                // 110
17510037SARM gem5 Developers        MISCREG_ACTLR,                  // 111
17610037SARM gem5 Developers        MISCREG_ACTLR_NS,               // 112
17710037SARM gem5 Developers        MISCREG_ACTLR_S,                // 113
17810037SARM gem5 Developers        MISCREG_CPACR,                  // 114
17910037SARM gem5 Developers        MISCREG_SCR,                    // 115
18010037SARM gem5 Developers        MISCREG_SDER,                   // 116
18110037SARM gem5 Developers        MISCREG_NSACR,                  // 117
18210037SARM gem5 Developers        MISCREG_HSCTLR,                 // 118
18310037SARM gem5 Developers        MISCREG_HACTLR,                 // 119
18410037SARM gem5 Developers        MISCREG_HCR,                    // 120
18510037SARM gem5 Developers        MISCREG_HDCR,                   // 121
18610037SARM gem5 Developers        MISCREG_HCPTR,                  // 122
18710037SARM gem5 Developers        MISCREG_HSTR,                   // 123
18810037SARM gem5 Developers        MISCREG_HACR,                   // 124
18910037SARM gem5 Developers        MISCREG_TTBR0,                  // 125
19010037SARM gem5 Developers        MISCREG_TTBR0_NS,               // 126
19110037SARM gem5 Developers        MISCREG_TTBR0_S,                // 127
19210037SARM gem5 Developers        MISCREG_TTBR1,                  // 128
19310037SARM gem5 Developers        MISCREG_TTBR1_NS,               // 129
19410037SARM gem5 Developers        MISCREG_TTBR1_S,                // 130
19510037SARM gem5 Developers        MISCREG_TTBCR,                  // 131
19610037SARM gem5 Developers        MISCREG_TTBCR_NS,               // 132
19710037SARM gem5 Developers        MISCREG_TTBCR_S,                // 133
19810037SARM gem5 Developers        MISCREG_HTCR,                   // 134
19910037SARM gem5 Developers        MISCREG_VTCR,                   // 135
20010037SARM gem5 Developers        MISCREG_DACR,                   // 136
20110037SARM gem5 Developers        MISCREG_DACR_NS,                // 137
20210037SARM gem5 Developers        MISCREG_DACR_S,                 // 138
20310037SARM gem5 Developers        MISCREG_DFSR,                   // 139
20410037SARM gem5 Developers        MISCREG_DFSR_NS,                // 140
20510037SARM gem5 Developers        MISCREG_DFSR_S,                 // 141
20610037SARM gem5 Developers        MISCREG_IFSR,                   // 142
20710037SARM gem5 Developers        MISCREG_IFSR_NS,                // 143
20810037SARM gem5 Developers        MISCREG_IFSR_S,                 // 144
20910037SARM gem5 Developers        MISCREG_ADFSR,                  // 145
21010037SARM gem5 Developers        MISCREG_ADFSR_NS,               // 146
21110037SARM gem5 Developers        MISCREG_ADFSR_S,                // 147
21210037SARM gem5 Developers        MISCREG_AIFSR,                  // 148
21310037SARM gem5 Developers        MISCREG_AIFSR_NS,               // 149
21410037SARM gem5 Developers        MISCREG_AIFSR_S,                // 150
21510037SARM gem5 Developers        MISCREG_HADFSR,                 // 151
21610037SARM gem5 Developers        MISCREG_HAIFSR,                 // 152
21710037SARM gem5 Developers        MISCREG_HSR,                    // 153
21810037SARM gem5 Developers        MISCREG_DFAR,                   // 154
21910037SARM gem5 Developers        MISCREG_DFAR_NS,                // 155
22010037SARM gem5 Developers        MISCREG_DFAR_S,                 // 156
22110037SARM gem5 Developers        MISCREG_IFAR,                   // 157
22210037SARM gem5 Developers        MISCREG_IFAR_NS,                // 158
22310037SARM gem5 Developers        MISCREG_IFAR_S,                 // 159
22410037SARM gem5 Developers        MISCREG_HDFAR,                  // 160
22510037SARM gem5 Developers        MISCREG_HIFAR,                  // 161
22610037SARM gem5 Developers        MISCREG_HPFAR,                  // 162
22710037SARM gem5 Developers        MISCREG_ICIALLUIS,              // 163
22810037SARM gem5 Developers        MISCREG_BPIALLIS,               // 164
22910037SARM gem5 Developers        MISCREG_PAR,                    // 165
23010037SARM gem5 Developers        MISCREG_PAR_NS,                 // 166
23110037SARM gem5 Developers        MISCREG_PAR_S,                  // 167
23210037SARM gem5 Developers        MISCREG_ICIALLU,                // 168
23310037SARM gem5 Developers        MISCREG_ICIMVAU,                // 169
23410037SARM gem5 Developers        MISCREG_CP15ISB,                // 170
23510037SARM gem5 Developers        MISCREG_BPIALL,                 // 171
23610037SARM gem5 Developers        MISCREG_BPIMVA,                 // 172
23710037SARM gem5 Developers        MISCREG_DCIMVAC,                // 173
23810037SARM gem5 Developers        MISCREG_DCISW,                  // 174
23910037SARM gem5 Developers        MISCREG_ATS1CPR,                // 175
24010037SARM gem5 Developers        MISCREG_ATS1CPW,                // 176
24110037SARM gem5 Developers        MISCREG_ATS1CUR,                // 177
24210037SARM gem5 Developers        MISCREG_ATS1CUW,                // 178
24310037SARM gem5 Developers        MISCREG_ATS12NSOPR,             // 179
24410037SARM gem5 Developers        MISCREG_ATS12NSOPW,             // 180
24510037SARM gem5 Developers        MISCREG_ATS12NSOUR,             // 181
24610037SARM gem5 Developers        MISCREG_ATS12NSOUW,             // 182
24710037SARM gem5 Developers        MISCREG_DCCMVAC,                // 183
24810037SARM gem5 Developers        MISCREG_DCCSW,                  // 184
24910037SARM gem5 Developers        MISCREG_CP15DSB,                // 185
25010037SARM gem5 Developers        MISCREG_CP15DMB,                // 186
25110037SARM gem5 Developers        MISCREG_DCCMVAU,                // 187
25210037SARM gem5 Developers        MISCREG_DCCIMVAC,               // 188
25310037SARM gem5 Developers        MISCREG_DCCISW,                 // 189
25410037SARM gem5 Developers        MISCREG_ATS1HR,                 // 190
25510037SARM gem5 Developers        MISCREG_ATS1HW,                 // 191
25610037SARM gem5 Developers        MISCREG_TLBIALLIS,              // 192
25710037SARM gem5 Developers        MISCREG_TLBIMVAIS,              // 193
25810037SARM gem5 Developers        MISCREG_TLBIASIDIS,             // 194
25910037SARM gem5 Developers        MISCREG_TLBIMVAAIS,             // 195
26010037SARM gem5 Developers        MISCREG_TLBIMVALIS,             // 196
26110037SARM gem5 Developers        MISCREG_TLBIMVAALIS,            // 197
26210037SARM gem5 Developers        MISCREG_ITLBIALL,               // 198
26310037SARM gem5 Developers        MISCREG_ITLBIMVA,               // 199
26410037SARM gem5 Developers        MISCREG_ITLBIASID,              // 200
26510037SARM gem5 Developers        MISCREG_DTLBIALL,               // 201
26610037SARM gem5 Developers        MISCREG_DTLBIMVA,               // 202
26710037SARM gem5 Developers        MISCREG_DTLBIASID,              // 203
26810037SARM gem5 Developers        MISCREG_TLBIALL,                // 204
26910037SARM gem5 Developers        MISCREG_TLBIMVA,                // 205
27010037SARM gem5 Developers        MISCREG_TLBIASID,               // 206
27110037SARM gem5 Developers        MISCREG_TLBIMVAA,               // 207
27210037SARM gem5 Developers        MISCREG_TLBIMVAL,               // 208
27310037SARM gem5 Developers        MISCREG_TLBIMVAAL,              // 209
27410037SARM gem5 Developers        MISCREG_TLBIIPAS2IS,            // 210
27510037SARM gem5 Developers        MISCREG_TLBIIPAS2LIS,           // 211
27610037SARM gem5 Developers        MISCREG_TLBIALLHIS,             // 212
27710037SARM gem5 Developers        MISCREG_TLBIMVAHIS,             // 213
27810037SARM gem5 Developers        MISCREG_TLBIALLNSNHIS,          // 214
27910037SARM gem5 Developers        MISCREG_TLBIMVALHIS,            // 215
28010037SARM gem5 Developers        MISCREG_TLBIIPAS2,              // 216
28110037SARM gem5 Developers        MISCREG_TLBIIPAS2L,             // 217
28210037SARM gem5 Developers        MISCREG_TLBIALLH,               // 218
28310037SARM gem5 Developers        MISCREG_TLBIMVAH,               // 219
28410037SARM gem5 Developers        MISCREG_TLBIALLNSNH,            // 220
28510037SARM gem5 Developers        MISCREG_TLBIMVALH,              // 221
28610037SARM gem5 Developers        MISCREG_PMCR,                   // 222
28710037SARM gem5 Developers        MISCREG_PMCNTENSET,             // 223
28810037SARM gem5 Developers        MISCREG_PMCNTENCLR,             // 224
28910037SARM gem5 Developers        MISCREG_PMOVSR,                 // 225
29010037SARM gem5 Developers        MISCREG_PMSWINC,                // 226
29110037SARM gem5 Developers        MISCREG_PMSELR,                 // 227
29210037SARM gem5 Developers        MISCREG_PMCEID0,                // 228
29310037SARM gem5 Developers        MISCREG_PMCEID1,                // 229
29410037SARM gem5 Developers        MISCREG_PMCCNTR,                // 230
29510037SARM gem5 Developers        MISCREG_PMXEVTYPER,             // 231
29610037SARM gem5 Developers        MISCREG_PMCCFILTR,              // 232
29710037SARM gem5 Developers        MISCREG_PMXEVCNTR,              // 233
29810037SARM gem5 Developers        MISCREG_PMUSERENR,              // 234
29910037SARM gem5 Developers        MISCREG_PMINTENSET,             // 235
30010037SARM gem5 Developers        MISCREG_PMINTENCLR,             // 236
30110037SARM gem5 Developers        MISCREG_PMOVSSET,               // 237
30210037SARM gem5 Developers        MISCREG_L2CTLR,                 // 238
30310037SARM gem5 Developers        MISCREG_L2ECTLR,                // 239
30410037SARM gem5 Developers        MISCREG_PRRR,                   // 240
30510037SARM gem5 Developers        MISCREG_PRRR_NS,                // 241
30610037SARM gem5 Developers        MISCREG_PRRR_S,                 // 242
30710037SARM gem5 Developers        MISCREG_MAIR0,                  // 243
30810037SARM gem5 Developers        MISCREG_MAIR0_NS,               // 244
30910037SARM gem5 Developers        MISCREG_MAIR0_S,                // 245
31010037SARM gem5 Developers        MISCREG_NMRR,                   // 246
31110037SARM gem5 Developers        MISCREG_NMRR_NS,                // 247
31210037SARM gem5 Developers        MISCREG_NMRR_S,                 // 248
31310037SARM gem5 Developers        MISCREG_MAIR1,                  // 249
31410037SARM gem5 Developers        MISCREG_MAIR1_NS,               // 250
31510037SARM gem5 Developers        MISCREG_MAIR1_S,                // 251
31610037SARM gem5 Developers        MISCREG_AMAIR0,                 // 252
31710037SARM gem5 Developers        MISCREG_AMAIR0_NS,              // 253
31810037SARM gem5 Developers        MISCREG_AMAIR0_S,               // 254
31910037SARM gem5 Developers        MISCREG_AMAIR1,                 // 255
32010037SARM gem5 Developers        MISCREG_AMAIR1_NS,              // 256
32110037SARM gem5 Developers        MISCREG_AMAIR1_S,               // 257
32210037SARM gem5 Developers        MISCREG_HMAIR0,                 // 258
32310037SARM gem5 Developers        MISCREG_HMAIR1,                 // 259
32410037SARM gem5 Developers        MISCREG_HAMAIR0,                // 260
32510037SARM gem5 Developers        MISCREG_HAMAIR1,                // 261
32610037SARM gem5 Developers        MISCREG_VBAR,                   // 262
32710037SARM gem5 Developers        MISCREG_VBAR_NS,                // 263
32810037SARM gem5 Developers        MISCREG_VBAR_S,                 // 264
32910037SARM gem5 Developers        MISCREG_MVBAR,                  // 265
33010037SARM gem5 Developers        MISCREG_RMR,                    // 266
33110037SARM gem5 Developers        MISCREG_ISR,                    // 267
33210037SARM gem5 Developers        MISCREG_HVBAR,                  // 268
33310037SARM gem5 Developers        MISCREG_FCSEIDR,                // 269
33410037SARM gem5 Developers        MISCREG_CONTEXTIDR,             // 270
33510037SARM gem5 Developers        MISCREG_CONTEXTIDR_NS,          // 271
33610037SARM gem5 Developers        MISCREG_CONTEXTIDR_S,           // 272
33710037SARM gem5 Developers        MISCREG_TPIDRURW,               // 273
33810037SARM gem5 Developers        MISCREG_TPIDRURW_NS,            // 274
33910037SARM gem5 Developers        MISCREG_TPIDRURW_S,             // 275
34010037SARM gem5 Developers        MISCREG_TPIDRURO,               // 276
34110037SARM gem5 Developers        MISCREG_TPIDRURO_NS,            // 277
34210037SARM gem5 Developers        MISCREG_TPIDRURO_S,             // 278
34310037SARM gem5 Developers        MISCREG_TPIDRPRW,               // 279
34410037SARM gem5 Developers        MISCREG_TPIDRPRW_NS,            // 280
34510037SARM gem5 Developers        MISCREG_TPIDRPRW_S,             // 281
34610037SARM gem5 Developers        MISCREG_HTPIDR,                 // 282
34710037SARM gem5 Developers        MISCREG_CNTFRQ,                 // 283
34810037SARM gem5 Developers        MISCREG_CNTKCTL,                // 284
34910037SARM gem5 Developers        MISCREG_CNTP_TVAL,              // 285
35010037SARM gem5 Developers        MISCREG_CNTP_TVAL_NS,           // 286
35110037SARM gem5 Developers        MISCREG_CNTP_TVAL_S,            // 287
35210037SARM gem5 Developers        MISCREG_CNTP_CTL,               // 288
35310037SARM gem5 Developers        MISCREG_CNTP_CTL_NS,            // 289
35410037SARM gem5 Developers        MISCREG_CNTP_CTL_S,             // 290
35510037SARM gem5 Developers        MISCREG_CNTV_TVAL,              // 291
35610037SARM gem5 Developers        MISCREG_CNTV_CTL,               // 292
35710037SARM gem5 Developers        MISCREG_CNTHCTL,                // 293
35810037SARM gem5 Developers        MISCREG_CNTHP_TVAL,             // 294
35910037SARM gem5 Developers        MISCREG_CNTHP_CTL,              // 295
36010037SARM gem5 Developers        MISCREG_IL1DATA0,               // 296
36110037SARM gem5 Developers        MISCREG_IL1DATA1,               // 297
36210037SARM gem5 Developers        MISCREG_IL1DATA2,               // 298
36310037SARM gem5 Developers        MISCREG_IL1DATA3,               // 299
36410037SARM gem5 Developers        MISCREG_DL1DATA0,               // 300
36510037SARM gem5 Developers        MISCREG_DL1DATA1,               // 301
36610037SARM gem5 Developers        MISCREG_DL1DATA2,               // 302
36710037SARM gem5 Developers        MISCREG_DL1DATA3,               // 303
36810037SARM gem5 Developers        MISCREG_DL1DATA4,               // 304
36910037SARM gem5 Developers        MISCREG_RAMINDEX,               // 305
37010037SARM gem5 Developers        MISCREG_L2ACTLR,                // 306
37110037SARM gem5 Developers        MISCREG_CBAR,                   // 307
37210037SARM gem5 Developers        MISCREG_HTTBR,                  // 308
37310037SARM gem5 Developers        MISCREG_VTTBR,                  // 309
37410037SARM gem5 Developers        MISCREG_CNTPCT,                 // 310
37510037SARM gem5 Developers        MISCREG_CNTVCT,                 // 311
37610037SARM gem5 Developers        MISCREG_CNTP_CVAL,              // 312
37710037SARM gem5 Developers        MISCREG_CNTP_CVAL_NS,           // 313
37810037SARM gem5 Developers        MISCREG_CNTP_CVAL_S,            // 314
37910037SARM gem5 Developers        MISCREG_CNTV_CVAL,              // 315
38010037SARM gem5 Developers        MISCREG_CNTVOFF,                // 316
38110037SARM gem5 Developers        MISCREG_CNTHP_CVAL,             // 317
38210037SARM gem5 Developers        MISCREG_CPUMERRSR,              // 318
38310037SARM gem5 Developers        MISCREG_L2MERRSR,               // 319
3847259Sgblack@eecs.umich.edu
38510037SARM gem5 Developers        // AArch64 registers (Op0=2)
38610037SARM gem5 Developers        MISCREG_MDCCINT_EL1,            // 320
38710037SARM gem5 Developers        MISCREG_OSDTRRX_EL1,            // 321
38810037SARM gem5 Developers        MISCREG_MDSCR_EL1,              // 322
38910037SARM gem5 Developers        MISCREG_OSDTRTX_EL1,            // 323
39010037SARM gem5 Developers        MISCREG_OSECCR_EL1,             // 324
39110037SARM gem5 Developers        MISCREG_DBGBVR0_EL1,            // 325
39210037SARM gem5 Developers        MISCREG_DBGBVR1_EL1,            // 326
39310037SARM gem5 Developers        MISCREG_DBGBVR2_EL1,            // 327
39410037SARM gem5 Developers        MISCREG_DBGBVR3_EL1,            // 328
39510037SARM gem5 Developers        MISCREG_DBGBVR4_EL1,            // 329
39610037SARM gem5 Developers        MISCREG_DBGBVR5_EL1,            // 330
39710037SARM gem5 Developers        MISCREG_DBGBCR0_EL1,            // 331
39810037SARM gem5 Developers        MISCREG_DBGBCR1_EL1,            // 332
39910037SARM gem5 Developers        MISCREG_DBGBCR2_EL1,            // 333
40010037SARM gem5 Developers        MISCREG_DBGBCR3_EL1,            // 334
40110037SARM gem5 Developers        MISCREG_DBGBCR4_EL1,            // 335
40210037SARM gem5 Developers        MISCREG_DBGBCR5_EL1,            // 336
40310037SARM gem5 Developers        MISCREG_DBGWVR0_EL1,            // 337
40410037SARM gem5 Developers        MISCREG_DBGWVR1_EL1,            // 338
40510037SARM gem5 Developers        MISCREG_DBGWVR2_EL1,            // 339
40610037SARM gem5 Developers        MISCREG_DBGWVR3_EL1,            // 340
40710037SARM gem5 Developers        MISCREG_DBGWCR0_EL1,            // 341
40810037SARM gem5 Developers        MISCREG_DBGWCR1_EL1,            // 342
40910037SARM gem5 Developers        MISCREG_DBGWCR2_EL1,            // 343
41010037SARM gem5 Developers        MISCREG_DBGWCR3_EL1,            // 344
41110037SARM gem5 Developers        MISCREG_MDCCSR_EL0,             // 345
41210037SARM gem5 Developers        MISCREG_MDDTR_EL0,              // 346
41310037SARM gem5 Developers        MISCREG_MDDTRTX_EL0,            // 347
41410037SARM gem5 Developers        MISCREG_MDDTRRX_EL0,            // 348
41510037SARM gem5 Developers        MISCREG_DBGVCR32_EL2,           // 349
41610037SARM gem5 Developers        MISCREG_MDRAR_EL1,              // 350
41710037SARM gem5 Developers        MISCREG_OSLAR_EL1,              // 351
41810037SARM gem5 Developers        MISCREG_OSLSR_EL1,              // 352
41910037SARM gem5 Developers        MISCREG_OSDLR_EL1,              // 353
42010037SARM gem5 Developers        MISCREG_DBGPRCR_EL1,            // 354
42110037SARM gem5 Developers        MISCREG_DBGCLAIMSET_EL1,        // 355
42210037SARM gem5 Developers        MISCREG_DBGCLAIMCLR_EL1,        // 356
42310037SARM gem5 Developers        MISCREG_DBGAUTHSTATUS_EL1,      // 357
42411768SCurtis.Dunham@arm.com        MISCREG_TEECR32_EL1,            // 358, not in ARM DDI 0487A.b+
42511768SCurtis.Dunham@arm.com        MISCREG_TEEHBR32_EL1,           // 359, not in ARM DDI 0487A.b+
4267259Sgblack@eecs.umich.edu
42710037SARM gem5 Developers        // AArch64 registers (Op0=1,3)
42810037SARM gem5 Developers        MISCREG_MIDR_EL1,               // 360
42910037SARM gem5 Developers        MISCREG_MPIDR_EL1,              // 361
43010037SARM gem5 Developers        MISCREG_REVIDR_EL1,             // 362
43110037SARM gem5 Developers        MISCREG_ID_PFR0_EL1,            // 363
43210037SARM gem5 Developers        MISCREG_ID_PFR1_EL1,            // 364
43310037SARM gem5 Developers        MISCREG_ID_DFR0_EL1,            // 365
43410037SARM gem5 Developers        MISCREG_ID_AFR0_EL1,            // 366
43510037SARM gem5 Developers        MISCREG_ID_MMFR0_EL1,           // 367
43610037SARM gem5 Developers        MISCREG_ID_MMFR1_EL1,           // 368
43710037SARM gem5 Developers        MISCREG_ID_MMFR2_EL1,           // 369
43810037SARM gem5 Developers        MISCREG_ID_MMFR3_EL1,           // 370
43910037SARM gem5 Developers        MISCREG_ID_ISAR0_EL1,           // 371
44010037SARM gem5 Developers        MISCREG_ID_ISAR1_EL1,           // 372
44110037SARM gem5 Developers        MISCREG_ID_ISAR2_EL1,           // 373
44210037SARM gem5 Developers        MISCREG_ID_ISAR3_EL1,           // 374
44310037SARM gem5 Developers        MISCREG_ID_ISAR4_EL1,           // 375
44410037SARM gem5 Developers        MISCREG_ID_ISAR5_EL1,           // 376
44510037SARM gem5 Developers        MISCREG_MVFR0_EL1,              // 377
44610037SARM gem5 Developers        MISCREG_MVFR1_EL1,              // 378
44710037SARM gem5 Developers        MISCREG_MVFR2_EL1,              // 379
44810037SARM gem5 Developers        MISCREG_ID_AA64PFR0_EL1,        // 380
44910037SARM gem5 Developers        MISCREG_ID_AA64PFR1_EL1,        // 381
45010037SARM gem5 Developers        MISCREG_ID_AA64DFR0_EL1,        // 382
45110037SARM gem5 Developers        MISCREG_ID_AA64DFR1_EL1,        // 383
45210037SARM gem5 Developers        MISCREG_ID_AA64AFR0_EL1,        // 384
45310037SARM gem5 Developers        MISCREG_ID_AA64AFR1_EL1,        // 385
45410037SARM gem5 Developers        MISCREG_ID_AA64ISAR0_EL1,       // 386
45510037SARM gem5 Developers        MISCREG_ID_AA64ISAR1_EL1,       // 387
45610037SARM gem5 Developers        MISCREG_ID_AA64MMFR0_EL1,       // 388
45710037SARM gem5 Developers        MISCREG_ID_AA64MMFR1_EL1,       // 389
45810037SARM gem5 Developers        MISCREG_CCSIDR_EL1,             // 390
45910037SARM gem5 Developers        MISCREG_CLIDR_EL1,              // 391
46010037SARM gem5 Developers        MISCREG_AIDR_EL1,               // 392
46110037SARM gem5 Developers        MISCREG_CSSELR_EL1,             // 393
46210037SARM gem5 Developers        MISCREG_CTR_EL0,                // 394
46310037SARM gem5 Developers        MISCREG_DCZID_EL0,              // 395
46410037SARM gem5 Developers        MISCREG_VPIDR_EL2,              // 396
46510037SARM gem5 Developers        MISCREG_VMPIDR_EL2,             // 397
46610037SARM gem5 Developers        MISCREG_SCTLR_EL1,              // 398
46710037SARM gem5 Developers        MISCREG_ACTLR_EL1,              // 399
46810037SARM gem5 Developers        MISCREG_CPACR_EL1,              // 400
46910037SARM gem5 Developers        MISCREG_SCTLR_EL2,              // 401
47010037SARM gem5 Developers        MISCREG_ACTLR_EL2,              // 402
47110037SARM gem5 Developers        MISCREG_HCR_EL2,                // 403
47210037SARM gem5 Developers        MISCREG_MDCR_EL2,               // 404
47310037SARM gem5 Developers        MISCREG_CPTR_EL2,               // 405
47410037SARM gem5 Developers        MISCREG_HSTR_EL2,               // 406
47510037SARM gem5 Developers        MISCREG_HACR_EL2,               // 407
47610037SARM gem5 Developers        MISCREG_SCTLR_EL3,              // 408
47710037SARM gem5 Developers        MISCREG_ACTLR_EL3,              // 409
47810037SARM gem5 Developers        MISCREG_SCR_EL3,                // 410
47910037SARM gem5 Developers        MISCREG_SDER32_EL3,             // 411
48010037SARM gem5 Developers        MISCREG_CPTR_EL3,               // 412
48110037SARM gem5 Developers        MISCREG_MDCR_EL3,               // 413
48210037SARM gem5 Developers        MISCREG_TTBR0_EL1,              // 414
48310037SARM gem5 Developers        MISCREG_TTBR1_EL1,              // 415
48410037SARM gem5 Developers        MISCREG_TCR_EL1,                // 416
48510037SARM gem5 Developers        MISCREG_TTBR0_EL2,              // 417
48610037SARM gem5 Developers        MISCREG_TCR_EL2,                // 418
48710037SARM gem5 Developers        MISCREG_VTTBR_EL2,              // 419
48810037SARM gem5 Developers        MISCREG_VTCR_EL2,               // 420
48910037SARM gem5 Developers        MISCREG_TTBR0_EL3,              // 421
49010037SARM gem5 Developers        MISCREG_TCR_EL3,                // 422
49110037SARM gem5 Developers        MISCREG_DACR32_EL2,             // 423
49210037SARM gem5 Developers        MISCREG_SPSR_EL1,               // 424
49310037SARM gem5 Developers        MISCREG_ELR_EL1,                // 425
49410037SARM gem5 Developers        MISCREG_SP_EL0,                 // 426
49510037SARM gem5 Developers        MISCREG_SPSEL,                  // 427
49610037SARM gem5 Developers        MISCREG_CURRENTEL,              // 428
49710037SARM gem5 Developers        MISCREG_NZCV,                   // 429
49810037SARM gem5 Developers        MISCREG_DAIF,                   // 430
49910037SARM gem5 Developers        MISCREG_FPCR,                   // 431
50010037SARM gem5 Developers        MISCREG_FPSR,                   // 432
50110037SARM gem5 Developers        MISCREG_DSPSR_EL0,              // 433
50210037SARM gem5 Developers        MISCREG_DLR_EL0,                // 434
50310037SARM gem5 Developers        MISCREG_SPSR_EL2,               // 435
50410037SARM gem5 Developers        MISCREG_ELR_EL2,                // 436
50510037SARM gem5 Developers        MISCREG_SP_EL1,                 // 437
50610037SARM gem5 Developers        MISCREG_SPSR_IRQ_AA64,          // 438
50710037SARM gem5 Developers        MISCREG_SPSR_ABT_AA64,          // 439
50810037SARM gem5 Developers        MISCREG_SPSR_UND_AA64,          // 440
50910037SARM gem5 Developers        MISCREG_SPSR_FIQ_AA64,          // 441
51010037SARM gem5 Developers        MISCREG_SPSR_EL3,               // 442
51110037SARM gem5 Developers        MISCREG_ELR_EL3,                // 443
51210037SARM gem5 Developers        MISCREG_SP_EL2,                 // 444
51310037SARM gem5 Developers        MISCREG_AFSR0_EL1,              // 445
51410037SARM gem5 Developers        MISCREG_AFSR1_EL1,              // 446
51510037SARM gem5 Developers        MISCREG_ESR_EL1,                // 447
51610037SARM gem5 Developers        MISCREG_IFSR32_EL2,             // 448
51710037SARM gem5 Developers        MISCREG_AFSR0_EL2,              // 449
51810037SARM gem5 Developers        MISCREG_AFSR1_EL2,              // 450
51910037SARM gem5 Developers        MISCREG_ESR_EL2,                // 451
52010037SARM gem5 Developers        MISCREG_FPEXC32_EL2,            // 452
52110037SARM gem5 Developers        MISCREG_AFSR0_EL3,              // 453
52210037SARM gem5 Developers        MISCREG_AFSR1_EL3,              // 454
52310037SARM gem5 Developers        MISCREG_ESR_EL3,                // 455
52410037SARM gem5 Developers        MISCREG_FAR_EL1,                // 456
52510037SARM gem5 Developers        MISCREG_FAR_EL2,                // 457
52610037SARM gem5 Developers        MISCREG_HPFAR_EL2,              // 458
52710037SARM gem5 Developers        MISCREG_FAR_EL3,                // 459
52810037SARM gem5 Developers        MISCREG_IC_IALLUIS,             // 460
52910037SARM gem5 Developers        MISCREG_PAR_EL1,                // 461
53010037SARM gem5 Developers        MISCREG_IC_IALLU,               // 462
53110037SARM gem5 Developers        MISCREG_DC_IVAC_Xt,             // 463
53210037SARM gem5 Developers        MISCREG_DC_ISW_Xt,              // 464
53310037SARM gem5 Developers        MISCREG_AT_S1E1R_Xt,            // 465
53410037SARM gem5 Developers        MISCREG_AT_S1E1W_Xt,            // 466
53510037SARM gem5 Developers        MISCREG_AT_S1E0R_Xt,            // 467
53610037SARM gem5 Developers        MISCREG_AT_S1E0W_Xt,            // 468
53710037SARM gem5 Developers        MISCREG_DC_CSW_Xt,              // 469
53810037SARM gem5 Developers        MISCREG_DC_CISW_Xt,             // 470
53910037SARM gem5 Developers        MISCREG_DC_ZVA_Xt,              // 471
54010037SARM gem5 Developers        MISCREG_IC_IVAU_Xt,             // 472
54110037SARM gem5 Developers        MISCREG_DC_CVAC_Xt,             // 473
54210037SARM gem5 Developers        MISCREG_DC_CVAU_Xt,             // 474
54310037SARM gem5 Developers        MISCREG_DC_CIVAC_Xt,            // 475
54410037SARM gem5 Developers        MISCREG_AT_S1E2R_Xt,            // 476
54510037SARM gem5 Developers        MISCREG_AT_S1E2W_Xt,            // 477
54610037SARM gem5 Developers        MISCREG_AT_S12E1R_Xt,           // 478
54710037SARM gem5 Developers        MISCREG_AT_S12E1W_Xt,           // 479
54810037SARM gem5 Developers        MISCREG_AT_S12E0R_Xt,           // 480
54910037SARM gem5 Developers        MISCREG_AT_S12E0W_Xt,           // 481
55010037SARM gem5 Developers        MISCREG_AT_S1E3R_Xt,            // 482
55110037SARM gem5 Developers        MISCREG_AT_S1E3W_Xt,            // 483
55210037SARM gem5 Developers        MISCREG_TLBI_VMALLE1IS,         // 484
55310037SARM gem5 Developers        MISCREG_TLBI_VAE1IS_Xt,         // 485
55410037SARM gem5 Developers        MISCREG_TLBI_ASIDE1IS_Xt,       // 486
55510037SARM gem5 Developers        MISCREG_TLBI_VAAE1IS_Xt,        // 487
55610037SARM gem5 Developers        MISCREG_TLBI_VALE1IS_Xt,        // 488
55710037SARM gem5 Developers        MISCREG_TLBI_VAALE1IS_Xt,       // 489
55810037SARM gem5 Developers        MISCREG_TLBI_VMALLE1,           // 490
55910037SARM gem5 Developers        MISCREG_TLBI_VAE1_Xt,           // 491
56010037SARM gem5 Developers        MISCREG_TLBI_ASIDE1_Xt,         // 492
56110037SARM gem5 Developers        MISCREG_TLBI_VAAE1_Xt,          // 493
56210037SARM gem5 Developers        MISCREG_TLBI_VALE1_Xt,          // 494
56310037SARM gem5 Developers        MISCREG_TLBI_VAALE1_Xt,         // 495
56410037SARM gem5 Developers        MISCREG_TLBI_IPAS2E1IS_Xt,      // 496
56510037SARM gem5 Developers        MISCREG_TLBI_IPAS2LE1IS_Xt,     // 497
56610037SARM gem5 Developers        MISCREG_TLBI_ALLE2IS,           // 498
56710037SARM gem5 Developers        MISCREG_TLBI_VAE2IS_Xt,         // 499
56810037SARM gem5 Developers        MISCREG_TLBI_ALLE1IS,           // 500
56910037SARM gem5 Developers        MISCREG_TLBI_VALE2IS_Xt,        // 501
57010037SARM gem5 Developers        MISCREG_TLBI_VMALLS12E1IS,      // 502
57110037SARM gem5 Developers        MISCREG_TLBI_IPAS2E1_Xt,        // 503
57210037SARM gem5 Developers        MISCREG_TLBI_IPAS2LE1_Xt,       // 504
57310037SARM gem5 Developers        MISCREG_TLBI_ALLE2,             // 505
57410037SARM gem5 Developers        MISCREG_TLBI_VAE2_Xt,           // 506
57510037SARM gem5 Developers        MISCREG_TLBI_ALLE1,             // 507
57610037SARM gem5 Developers        MISCREG_TLBI_VALE2_Xt,          // 508
57710037SARM gem5 Developers        MISCREG_TLBI_VMALLS12E1,        // 509
57810037SARM gem5 Developers        MISCREG_TLBI_ALLE3IS,           // 510
57910037SARM gem5 Developers        MISCREG_TLBI_VAE3IS_Xt,         // 511
58010037SARM gem5 Developers        MISCREG_TLBI_VALE3IS_Xt,        // 512
58110037SARM gem5 Developers        MISCREG_TLBI_ALLE3,             // 513
58210037SARM gem5 Developers        MISCREG_TLBI_VAE3_Xt,           // 514
58310037SARM gem5 Developers        MISCREG_TLBI_VALE3_Xt,          // 515
58410037SARM gem5 Developers        MISCREG_PMINTENSET_EL1,         // 516
58510037SARM gem5 Developers        MISCREG_PMINTENCLR_EL1,         // 517
58610037SARM gem5 Developers        MISCREG_PMCR_EL0,               // 518
58710037SARM gem5 Developers        MISCREG_PMCNTENSET_EL0,         // 519
58810037SARM gem5 Developers        MISCREG_PMCNTENCLR_EL0,         // 520
58910037SARM gem5 Developers        MISCREG_PMOVSCLR_EL0,           // 521
59010037SARM gem5 Developers        MISCREG_PMSWINC_EL0,            // 522
59110037SARM gem5 Developers        MISCREG_PMSELR_EL0,             // 523
59210037SARM gem5 Developers        MISCREG_PMCEID0_EL0,            // 524
59310037SARM gem5 Developers        MISCREG_PMCEID1_EL0,            // 525
59410037SARM gem5 Developers        MISCREG_PMCCNTR_EL0,            // 526
59510037SARM gem5 Developers        MISCREG_PMXEVTYPER_EL0,         // 527
59610037SARM gem5 Developers        MISCREG_PMCCFILTR_EL0,          // 528
59710037SARM gem5 Developers        MISCREG_PMXEVCNTR_EL0,          // 529
59810037SARM gem5 Developers        MISCREG_PMUSERENR_EL0,          // 530
59910037SARM gem5 Developers        MISCREG_PMOVSSET_EL0,           // 531
60010037SARM gem5 Developers        MISCREG_MAIR_EL1,               // 532
60110037SARM gem5 Developers        MISCREG_AMAIR_EL1,              // 533
60210037SARM gem5 Developers        MISCREG_MAIR_EL2,               // 534
60310037SARM gem5 Developers        MISCREG_AMAIR_EL2,              // 535
60410037SARM gem5 Developers        MISCREG_MAIR_EL3,               // 536
60510037SARM gem5 Developers        MISCREG_AMAIR_EL3,              // 537
60610037SARM gem5 Developers        MISCREG_L2CTLR_EL1,             // 538
60710037SARM gem5 Developers        MISCREG_L2ECTLR_EL1,            // 539
60810037SARM gem5 Developers        MISCREG_VBAR_EL1,               // 540
60910037SARM gem5 Developers        MISCREG_RVBAR_EL1,              // 541
61010037SARM gem5 Developers        MISCREG_ISR_EL1,                // 542
61110037SARM gem5 Developers        MISCREG_VBAR_EL2,               // 543
61210037SARM gem5 Developers        MISCREG_RVBAR_EL2,              // 544
61310037SARM gem5 Developers        MISCREG_VBAR_EL3,               // 545
61410037SARM gem5 Developers        MISCREG_RVBAR_EL3,              // 546
61510037SARM gem5 Developers        MISCREG_RMR_EL3,                // 547
61610037SARM gem5 Developers        MISCREG_CONTEXTIDR_EL1,         // 548
61710037SARM gem5 Developers        MISCREG_TPIDR_EL1,              // 549
61810037SARM gem5 Developers        MISCREG_TPIDR_EL0,              // 550
61910037SARM gem5 Developers        MISCREG_TPIDRRO_EL0,            // 551
62010037SARM gem5 Developers        MISCREG_TPIDR_EL2,              // 552
62110037SARM gem5 Developers        MISCREG_TPIDR_EL3,              // 553
62210037SARM gem5 Developers        MISCREG_CNTKCTL_EL1,            // 554
62310037SARM gem5 Developers        MISCREG_CNTFRQ_EL0,             // 555
62410037SARM gem5 Developers        MISCREG_CNTPCT_EL0,             // 556
62510037SARM gem5 Developers        MISCREG_CNTVCT_EL0,             // 557
62610037SARM gem5 Developers        MISCREG_CNTP_TVAL_EL0,          // 558
62710037SARM gem5 Developers        MISCREG_CNTP_CTL_EL0,           // 559
62810037SARM gem5 Developers        MISCREG_CNTP_CVAL_EL0,          // 560
62910037SARM gem5 Developers        MISCREG_CNTV_TVAL_EL0,          // 561
63010037SARM gem5 Developers        MISCREG_CNTV_CTL_EL0,           // 562
63110037SARM gem5 Developers        MISCREG_CNTV_CVAL_EL0,          // 563
63210037SARM gem5 Developers        MISCREG_PMEVCNTR0_EL0,          // 564
63310037SARM gem5 Developers        MISCREG_PMEVCNTR1_EL0,          // 565
63410037SARM gem5 Developers        MISCREG_PMEVCNTR2_EL0,          // 566
63510037SARM gem5 Developers        MISCREG_PMEVCNTR3_EL0,          // 567
63610037SARM gem5 Developers        MISCREG_PMEVCNTR4_EL0,          // 568
63710037SARM gem5 Developers        MISCREG_PMEVCNTR5_EL0,          // 569
63810037SARM gem5 Developers        MISCREG_PMEVTYPER0_EL0,         // 570
63910037SARM gem5 Developers        MISCREG_PMEVTYPER1_EL0,         // 571
64010037SARM gem5 Developers        MISCREG_PMEVTYPER2_EL0,         // 572
64110037SARM gem5 Developers        MISCREG_PMEVTYPER3_EL0,         // 573
64210037SARM gem5 Developers        MISCREG_PMEVTYPER4_EL0,         // 574
64310037SARM gem5 Developers        MISCREG_PMEVTYPER5_EL0,         // 575
64410037SARM gem5 Developers        MISCREG_CNTVOFF_EL2,            // 576
64510037SARM gem5 Developers        MISCREG_CNTHCTL_EL2,            // 577
64610037SARM gem5 Developers        MISCREG_CNTHP_TVAL_EL2,         // 578
64710037SARM gem5 Developers        MISCREG_CNTHP_CTL_EL2,          // 579
64810037SARM gem5 Developers        MISCREG_CNTHP_CVAL_EL2,         // 580
64910037SARM gem5 Developers        MISCREG_CNTPS_TVAL_EL1,         // 581
65010037SARM gem5 Developers        MISCREG_CNTPS_CTL_EL1,          // 582
65110037SARM gem5 Developers        MISCREG_CNTPS_CVAL_EL1,         // 583
65210037SARM gem5 Developers        MISCREG_IL1DATA0_EL1,           // 584
65310037SARM gem5 Developers        MISCREG_IL1DATA1_EL1,           // 585
65410037SARM gem5 Developers        MISCREG_IL1DATA2_EL1,           // 586
65510037SARM gem5 Developers        MISCREG_IL1DATA3_EL1,           // 587
65610037SARM gem5 Developers        MISCREG_DL1DATA0_EL1,           // 588
65710037SARM gem5 Developers        MISCREG_DL1DATA1_EL1,           // 589
65810037SARM gem5 Developers        MISCREG_DL1DATA2_EL1,           // 590
65910037SARM gem5 Developers        MISCREG_DL1DATA3_EL1,           // 591
66010037SARM gem5 Developers        MISCREG_DL1DATA4_EL1,           // 592
66110037SARM gem5 Developers        MISCREG_L2ACTLR_EL1,            // 593
66210037SARM gem5 Developers        MISCREG_CPUACTLR_EL1,           // 594
66310037SARM gem5 Developers        MISCREG_CPUECTLR_EL1,           // 595
66410037SARM gem5 Developers        MISCREG_CPUMERRSR_EL1,          // 596
66510037SARM gem5 Developers        MISCREG_L2MERRSR_EL1,           // 597
66610037SARM gem5 Developers        MISCREG_CBAR_EL1,               // 598
66710856SCurtis.Dunham@arm.com        MISCREG_CONTEXTIDR_EL2,         // 599
6687259Sgblack@eecs.umich.edu
66910037SARM gem5 Developers        // Dummy registers
67010856SCurtis.Dunham@arm.com        MISCREG_NOP,                    // 600
67110856SCurtis.Dunham@arm.com        MISCREG_RAZ,                    // 601
67210856SCurtis.Dunham@arm.com        MISCREG_CP14_UNIMPL,            // 602
67310856SCurtis.Dunham@arm.com        MISCREG_CP15_UNIMPL,            // 603
67410856SCurtis.Dunham@arm.com        MISCREG_A64_UNIMPL,             // 604
67510856SCurtis.Dunham@arm.com        MISCREG_UNKNOWN,                // 605
67610037SARM gem5 Developers
67710856SCurtis.Dunham@arm.com        NUM_MISCREGS                    // 606
6786261Sgblack@eecs.umich.edu    };
6796261Sgblack@eecs.umich.edu
68010037SARM gem5 Developers    enum MiscRegInfo {
68110037SARM gem5 Developers        MISCREG_IMPLEMENTED,
68210506SAli.Saidi@ARM.com        MISCREG_UNVERIFIABLE,   // Does the value change on every read (e.g. a
68310506SAli.Saidi@ARM.com                                // arch generic counter)
68410037SARM gem5 Developers        MISCREG_WARN_NOT_FAIL,  // If MISCREG_IMPLEMENTED is deasserted, it
68510037SARM gem5 Developers                                // tells whether the instruction should raise a
68610037SARM gem5 Developers                                // warning or fail
68710037SARM gem5 Developers        MISCREG_MUTEX,  // True if the register corresponds to a pair of
68810037SARM gem5 Developers                        // mutually exclusive registers
68910037SARM gem5 Developers        MISCREG_BANKED,  // True if the register is banked between the two
69010037SARM gem5 Developers                         // security states, and this is the parent node of the
69110037SARM gem5 Developers                         // two banked registers
69210037SARM gem5 Developers        MISCREG_BANKED_CHILD, // The entry is one of the child registers that
69310037SARM gem5 Developers                              // forms a banked set of regs (along with the
69410037SARM gem5 Developers                              // other child regs)
69510037SARM gem5 Developers
69610037SARM gem5 Developers        // Access permissions
69710037SARM gem5 Developers        // User mode
69810037SARM gem5 Developers        MISCREG_USR_NS_RD,
69910037SARM gem5 Developers        MISCREG_USR_NS_WR,
70010037SARM gem5 Developers        MISCREG_USR_S_RD,
70110037SARM gem5 Developers        MISCREG_USR_S_WR,
70210037SARM gem5 Developers        // Privileged modes other than hypervisor or monitor
70310037SARM gem5 Developers        MISCREG_PRI_NS_RD,
70410037SARM gem5 Developers        MISCREG_PRI_NS_WR,
70510037SARM gem5 Developers        MISCREG_PRI_S_RD,
70610037SARM gem5 Developers        MISCREG_PRI_S_WR,
70710037SARM gem5 Developers        // Hypervisor mode
70810037SARM gem5 Developers        MISCREG_HYP_RD,
70910037SARM gem5 Developers        MISCREG_HYP_WR,
71010037SARM gem5 Developers        // Monitor mode, SCR.NS == 0
71110037SARM gem5 Developers        MISCREG_MON_NS0_RD,
71210037SARM gem5 Developers        MISCREG_MON_NS0_WR,
71310037SARM gem5 Developers        // Monitor mode, SCR.NS == 1
71410037SARM gem5 Developers        MISCREG_MON_NS1_RD,
71510037SARM gem5 Developers        MISCREG_MON_NS1_WR,
71610037SARM gem5 Developers
71710037SARM gem5 Developers        NUM_MISCREG_INFOS
71810037SARM gem5 Developers    };
71910037SARM gem5 Developers
72010037SARM gem5 Developers    extern std::bitset<NUM_MISCREG_INFOS> miscRegInfo[NUM_MISCREGS];
72110037SARM gem5 Developers
72210037SARM gem5 Developers    // Decodes 32-bit CP14 registers accessible through MCR/MRC instructions
7238868SMatt.Horsnell@arm.com    MiscRegIndex decodeCP14Reg(unsigned crn, unsigned opc1,
7248868SMatt.Horsnell@arm.com                               unsigned crm, unsigned opc2);
72510037SARM gem5 Developers    MiscRegIndex decodeAArch64SysReg(unsigned op0, unsigned op1,
72610037SARM gem5 Developers                                     unsigned crn, unsigned crm,
72710037SARM gem5 Developers                                     unsigned op2);
72810037SARM gem5 Developers    // Whether a particular AArch64 system register is -always- read only.
72910037SARM gem5 Developers    bool aarch64SysRegReadOnly(MiscRegIndex miscReg);
7308868SMatt.Horsnell@arm.com
73110037SARM gem5 Developers    // Decodes 32-bit CP15 registers accessible through MCR/MRC instructions
7327259Sgblack@eecs.umich.edu    MiscRegIndex decodeCP15Reg(unsigned crn, unsigned opc1,
7337259Sgblack@eecs.umich.edu                               unsigned crm, unsigned opc2);
7347259Sgblack@eecs.umich.edu
73510037SARM gem5 Developers    // Decodes 64-bit CP15 registers accessible through MCRR/MRRC instructions
73610037SARM gem5 Developers    MiscRegIndex decodeCP15Reg64(unsigned crm, unsigned opc1);
73710037SARM gem5 Developers
7388868SMatt.Horsnell@arm.com
7399256SAndreas.Sandberg@arm.com    const char * const miscRegName[] = {
74010037SARM gem5 Developers        "cpsr",
74110037SARM gem5 Developers        "spsr",
74210037SARM gem5 Developers        "spsr_fiq",
74310037SARM gem5 Developers        "spsr_irq",
74410037SARM gem5 Developers        "spsr_svc",
74510037SARM gem5 Developers        "spsr_mon",
74610037SARM gem5 Developers        "spsr_abt",
74710037SARM gem5 Developers        "spsr_hyp",
74810037SARM gem5 Developers        "spsr_und",
74910037SARM gem5 Developers        "elr_hyp",
75010037SARM gem5 Developers        "fpsid",
75110037SARM gem5 Developers        "fpscr",
75210037SARM gem5 Developers        "mvfr1",
75310037SARM gem5 Developers        "mvfr0",
75410037SARM gem5 Developers        "fpexc",
75510037SARM gem5 Developers
75610037SARM gem5 Developers        // Helper registers
75710037SARM gem5 Developers        "cpsr_mode",
75810037SARM gem5 Developers        "cpsr_q",
75910037SARM gem5 Developers        "fpscr_exc",
76010037SARM gem5 Developers        "fpscr_qc",
76110037SARM gem5 Developers        "lockaddr",
76210037SARM gem5 Developers        "lockflag",
76310037SARM gem5 Developers        "prrr_mair0",
76410037SARM gem5 Developers        "prrr_mair0_ns",
76510037SARM gem5 Developers        "prrr_mair0_s",
76610037SARM gem5 Developers        "nmrr_mair1",
76710037SARM gem5 Developers        "nmrr_mair1_ns",
76810037SARM gem5 Developers        "nmrr_mair1_s",
76910037SARM gem5 Developers        "pmxevtyper_pmccfiltr",
77010037SARM gem5 Developers        "sctlr_rst",
77110037SARM gem5 Developers        "sev_mailbox",
77210037SARM gem5 Developers
77310037SARM gem5 Developers        // AArch32 CP14 registers
77410037SARM gem5 Developers        "dbgdidr",
77510037SARM gem5 Developers        "dbgdscrint",
77610037SARM gem5 Developers        "dbgdccint",
77710037SARM gem5 Developers        "dbgdtrtxint",
77810037SARM gem5 Developers        "dbgdtrrxint",
77910037SARM gem5 Developers        "dbgwfar",
78010037SARM gem5 Developers        "dbgvcr",
78110037SARM gem5 Developers        "dbgdtrrxext",
78210037SARM gem5 Developers        "dbgdscrext",
78310037SARM gem5 Developers        "dbgdtrtxext",
78410037SARM gem5 Developers        "dbgoseccr",
78510037SARM gem5 Developers        "dbgbvr0",
78610037SARM gem5 Developers        "dbgbvr1",
78710037SARM gem5 Developers        "dbgbvr2",
78810037SARM gem5 Developers        "dbgbvr3",
78910037SARM gem5 Developers        "dbgbvr4",
79010037SARM gem5 Developers        "dbgbvr5",
79110037SARM gem5 Developers        "dbgbcr0",
79210037SARM gem5 Developers        "dbgbcr1",
79310037SARM gem5 Developers        "dbgbcr2",
79410037SARM gem5 Developers        "dbgbcr3",
79510037SARM gem5 Developers        "dbgbcr4",
79610037SARM gem5 Developers        "dbgbcr5",
79710037SARM gem5 Developers        "dbgwvr0",
79810037SARM gem5 Developers        "dbgwvr1",
79910037SARM gem5 Developers        "dbgwvr2",
80010037SARM gem5 Developers        "dbgwvr3",
80110037SARM gem5 Developers        "dbgwcr0",
80210037SARM gem5 Developers        "dbgwcr1",
80310037SARM gem5 Developers        "dbgwcr2",
80410037SARM gem5 Developers        "dbgwcr3",
80510037SARM gem5 Developers        "dbgdrar",
80610037SARM gem5 Developers        "dbgbxvr4",
80710037SARM gem5 Developers        "dbgbxvr5",
80810037SARM gem5 Developers        "dbgoslar",
80910037SARM gem5 Developers        "dbgoslsr",
81010037SARM gem5 Developers        "dbgosdlr",
81110037SARM gem5 Developers        "dbgprcr",
81210037SARM gem5 Developers        "dbgdsar",
81310037SARM gem5 Developers        "dbgclaimset",
81410037SARM gem5 Developers        "dbgclaimclr",
81510037SARM gem5 Developers        "dbgauthstatus",
81610037SARM gem5 Developers        "dbgdevid2",
81710037SARM gem5 Developers        "dbgdevid1",
81810037SARM gem5 Developers        "dbgdevid0",
81910037SARM gem5 Developers        "teecr",
82010037SARM gem5 Developers        "jidr",
82110037SARM gem5 Developers        "teehbr",
82210037SARM gem5 Developers        "joscr",
82310037SARM gem5 Developers        "jmcr",
82410037SARM gem5 Developers
82510037SARM gem5 Developers        // AArch32 CP15 registers
82610037SARM gem5 Developers        "midr",
82710037SARM gem5 Developers        "ctr",
82810037SARM gem5 Developers        "tcmtr",
82910037SARM gem5 Developers        "tlbtr",
83010037SARM gem5 Developers        "mpidr",
83110037SARM gem5 Developers        "revidr",
83210037SARM gem5 Developers        "id_pfr0",
83310037SARM gem5 Developers        "id_pfr1",
83410037SARM gem5 Developers        "id_dfr0",
83510037SARM gem5 Developers        "id_afr0",
83610037SARM gem5 Developers        "id_mmfr0",
83710037SARM gem5 Developers        "id_mmfr1",
83810037SARM gem5 Developers        "id_mmfr2",
83910037SARM gem5 Developers        "id_mmfr3",
84010037SARM gem5 Developers        "id_isar0",
84110037SARM gem5 Developers        "id_isar1",
84210037SARM gem5 Developers        "id_isar2",
84310037SARM gem5 Developers        "id_isar3",
84410037SARM gem5 Developers        "id_isar4",
84510037SARM gem5 Developers        "id_isar5",
84610037SARM gem5 Developers        "ccsidr",
84710037SARM gem5 Developers        "clidr",
84810037SARM gem5 Developers        "aidr",
84910037SARM gem5 Developers        "csselr",
85010037SARM gem5 Developers        "csselr_ns",
85110037SARM gem5 Developers        "csselr_s",
85210037SARM gem5 Developers        "vpidr",
85310037SARM gem5 Developers        "vmpidr",
85410037SARM gem5 Developers        "sctlr",
85510037SARM gem5 Developers        "sctlr_ns",
85610037SARM gem5 Developers        "sctlr_s",
85710037SARM gem5 Developers        "actlr",
85810037SARM gem5 Developers        "actlr_ns",
85910037SARM gem5 Developers        "actlr_s",
86010037SARM gem5 Developers        "cpacr",
86110037SARM gem5 Developers        "scr",
86210037SARM gem5 Developers        "sder",
86310037SARM gem5 Developers        "nsacr",
86410037SARM gem5 Developers        "hsctlr",
86510037SARM gem5 Developers        "hactlr",
86610037SARM gem5 Developers        "hcr",
86710037SARM gem5 Developers        "hdcr",
86810037SARM gem5 Developers        "hcptr",
86910037SARM gem5 Developers        "hstr",
87010037SARM gem5 Developers        "hacr",
87110037SARM gem5 Developers        "ttbr0",
87210037SARM gem5 Developers        "ttbr0_ns",
87310037SARM gem5 Developers        "ttbr0_s",
87410037SARM gem5 Developers        "ttbr1",
87510037SARM gem5 Developers        "ttbr1_ns",
87610037SARM gem5 Developers        "ttbr1_s",
87710037SARM gem5 Developers        "ttbcr",
87810037SARM gem5 Developers        "ttbcr_ns",
87910037SARM gem5 Developers        "ttbcr_s",
88010037SARM gem5 Developers        "htcr",
88110037SARM gem5 Developers        "vtcr",
88210037SARM gem5 Developers        "dacr",
88310037SARM gem5 Developers        "dacr_ns",
88410037SARM gem5 Developers        "dacr_s",
88510037SARM gem5 Developers        "dfsr",
88610037SARM gem5 Developers        "dfsr_ns",
88710037SARM gem5 Developers        "dfsr_s",
88810037SARM gem5 Developers        "ifsr",
88910037SARM gem5 Developers        "ifsr_ns",
89010037SARM gem5 Developers        "ifsr_s",
89110037SARM gem5 Developers        "adfsr",
89210037SARM gem5 Developers        "adfsr_ns",
89310037SARM gem5 Developers        "adfsr_s",
89410037SARM gem5 Developers        "aifsr",
89510037SARM gem5 Developers        "aifsr_ns",
89610037SARM gem5 Developers        "aifsr_s",
89710037SARM gem5 Developers        "hadfsr",
89810037SARM gem5 Developers        "haifsr",
89910037SARM gem5 Developers        "hsr",
90010037SARM gem5 Developers        "dfar",
90110037SARM gem5 Developers        "dfar_ns",
90210037SARM gem5 Developers        "dfar_s",
90310037SARM gem5 Developers        "ifar",
90410037SARM gem5 Developers        "ifar_ns",
90510037SARM gem5 Developers        "ifar_s",
90610037SARM gem5 Developers        "hdfar",
90710037SARM gem5 Developers        "hifar",
90810037SARM gem5 Developers        "hpfar",
90910037SARM gem5 Developers        "icialluis",
91010037SARM gem5 Developers        "bpiallis",
91110037SARM gem5 Developers        "par",
91210037SARM gem5 Developers        "par_ns",
91310037SARM gem5 Developers        "par_s",
91410037SARM gem5 Developers        "iciallu",
91510037SARM gem5 Developers        "icimvau",
91610037SARM gem5 Developers        "cp15isb",
91710037SARM gem5 Developers        "bpiall",
91810037SARM gem5 Developers        "bpimva",
91910037SARM gem5 Developers        "dcimvac",
92010037SARM gem5 Developers        "dcisw",
92110037SARM gem5 Developers        "ats1cpr",
92210037SARM gem5 Developers        "ats1cpw",
92310037SARM gem5 Developers        "ats1cur",
92410037SARM gem5 Developers        "ats1cuw",
92510037SARM gem5 Developers        "ats12nsopr",
92610037SARM gem5 Developers        "ats12nsopw",
92710037SARM gem5 Developers        "ats12nsour",
92810037SARM gem5 Developers        "ats12nsouw",
92910037SARM gem5 Developers        "dccmvac",
93010037SARM gem5 Developers        "dccsw",
93110037SARM gem5 Developers        "cp15dsb",
93210037SARM gem5 Developers        "cp15dmb",
93310037SARM gem5 Developers        "dccmvau",
93410037SARM gem5 Developers        "dccimvac",
93510037SARM gem5 Developers        "dccisw",
93610037SARM gem5 Developers        "ats1hr",
93710037SARM gem5 Developers        "ats1hw",
93810037SARM gem5 Developers        "tlbiallis",
93910037SARM gem5 Developers        "tlbimvais",
94010037SARM gem5 Developers        "tlbiasidis",
94110037SARM gem5 Developers        "tlbimvaais",
94210037SARM gem5 Developers        "tlbimvalis",
94310037SARM gem5 Developers        "tlbimvaalis",
94410037SARM gem5 Developers        "itlbiall",
94510037SARM gem5 Developers        "itlbimva",
94610037SARM gem5 Developers        "itlbiasid",
94710037SARM gem5 Developers        "dtlbiall",
94810037SARM gem5 Developers        "dtlbimva",
94910037SARM gem5 Developers        "dtlbiasid",
95010037SARM gem5 Developers        "tlbiall",
95110037SARM gem5 Developers        "tlbimva",
95210037SARM gem5 Developers        "tlbiasid",
95310037SARM gem5 Developers        "tlbimvaa",
95410037SARM gem5 Developers        "tlbimval",
95510037SARM gem5 Developers        "tlbimvaal",
95610037SARM gem5 Developers        "tlbiipas2is",
95710037SARM gem5 Developers        "tlbiipas2lis",
95810037SARM gem5 Developers        "tlbiallhis",
95910037SARM gem5 Developers        "tlbimvahis",
96010037SARM gem5 Developers        "tlbiallnsnhis",
96110037SARM gem5 Developers        "tlbimvalhis",
96210037SARM gem5 Developers        "tlbiipas2",
96310037SARM gem5 Developers        "tlbiipas2l",
96410037SARM gem5 Developers        "tlbiallh",
96510037SARM gem5 Developers        "tlbimvah",
96610037SARM gem5 Developers        "tlbiallnsnh",
96710037SARM gem5 Developers        "tlbimvalh",
96810037SARM gem5 Developers        "pmcr",
96910037SARM gem5 Developers        "pmcntenset",
97010037SARM gem5 Developers        "pmcntenclr",
97110037SARM gem5 Developers        "pmovsr",
97210037SARM gem5 Developers        "pmswinc",
97310037SARM gem5 Developers        "pmselr",
97410037SARM gem5 Developers        "pmceid0",
97510037SARM gem5 Developers        "pmceid1",
97610037SARM gem5 Developers        "pmccntr",
97710037SARM gem5 Developers        "pmxevtyper",
97810037SARM gem5 Developers        "pmccfiltr",
97910037SARM gem5 Developers        "pmxevcntr",
98010037SARM gem5 Developers        "pmuserenr",
98110037SARM gem5 Developers        "pmintenset",
98210037SARM gem5 Developers        "pmintenclr",
98310037SARM gem5 Developers        "pmovsset",
9848549Sdaniel.johnson@arm.com        "l2ctlr",
98510037SARM gem5 Developers        "l2ectlr",
98610037SARM gem5 Developers        "prrr",
98710037SARM gem5 Developers        "prrr_ns",
98810037SARM gem5 Developers        "prrr_s",
98910037SARM gem5 Developers        "mair0",
99010037SARM gem5 Developers        "mair0_ns",
99110037SARM gem5 Developers        "mair0_s",
99210037SARM gem5 Developers        "nmrr",
99310037SARM gem5 Developers        "nmrr_ns",
99410037SARM gem5 Developers        "nmrr_s",
99510037SARM gem5 Developers        "mair1",
99610037SARM gem5 Developers        "mair1_ns",
99710037SARM gem5 Developers        "mair1_s",
99810037SARM gem5 Developers        "amair0",
99910037SARM gem5 Developers        "amair0_ns",
100010037SARM gem5 Developers        "amair0_s",
100110037SARM gem5 Developers        "amair1",
100210037SARM gem5 Developers        "amair1_ns",
100310037SARM gem5 Developers        "amair1_s",
100410037SARM gem5 Developers        "hmair0",
100510037SARM gem5 Developers        "hmair1",
100610037SARM gem5 Developers        "hamair0",
100710037SARM gem5 Developers        "hamair1",
100810037SARM gem5 Developers        "vbar",
100910037SARM gem5 Developers        "vbar_ns",
101010037SARM gem5 Developers        "vbar_s",
101110037SARM gem5 Developers        "mvbar",
101210037SARM gem5 Developers        "rmr",
101310037SARM gem5 Developers        "isr",
101410037SARM gem5 Developers        "hvbar",
101510037SARM gem5 Developers        "fcseidr",
101610037SARM gem5 Developers        "contextidr",
101710037SARM gem5 Developers        "contextidr_ns",
101810037SARM gem5 Developers        "contextidr_s",
101910037SARM gem5 Developers        "tpidrurw",
102010037SARM gem5 Developers        "tpidrurw_ns",
102110037SARM gem5 Developers        "tpidrurw_s",
102210037SARM gem5 Developers        "tpidruro",
102310037SARM gem5 Developers        "tpidruro_ns",
102410037SARM gem5 Developers        "tpidruro_s",
102510037SARM gem5 Developers        "tpidrprw",
102610037SARM gem5 Developers        "tpidrprw_ns",
102710037SARM gem5 Developers        "tpidrprw_s",
102810037SARM gem5 Developers        "htpidr",
102910037SARM gem5 Developers        "cntfrq",
103010037SARM gem5 Developers        "cntkctl",
103110037SARM gem5 Developers        "cntp_tval",
103210037SARM gem5 Developers        "cntp_tval_ns",
103310037SARM gem5 Developers        "cntp_tval_s",
103410037SARM gem5 Developers        "cntp_ctl",
103510037SARM gem5 Developers        "cntp_ctl_ns",
103610037SARM gem5 Developers        "cntp_ctl_s",
103710037SARM gem5 Developers        "cntv_tval",
103810037SARM gem5 Developers        "cntv_ctl",
103910037SARM gem5 Developers        "cnthctl",
104010037SARM gem5 Developers        "cnthp_tval",
104110037SARM gem5 Developers        "cnthp_ctl",
104210037SARM gem5 Developers        "il1data0",
104310037SARM gem5 Developers        "il1data1",
104410037SARM gem5 Developers        "il1data2",
104510037SARM gem5 Developers        "il1data3",
104610037SARM gem5 Developers        "dl1data0",
104710037SARM gem5 Developers        "dl1data1",
104810037SARM gem5 Developers        "dl1data2",
104910037SARM gem5 Developers        "dl1data3",
105010037SARM gem5 Developers        "dl1data4",
105110037SARM gem5 Developers        "ramindex",
105210037SARM gem5 Developers        "l2actlr",
105310037SARM gem5 Developers        "cbar",
105410037SARM gem5 Developers        "httbr",
105510037SARM gem5 Developers        "vttbr",
105610037SARM gem5 Developers        "cntpct",
105710037SARM gem5 Developers        "cntvct",
105810037SARM gem5 Developers        "cntp_cval",
105910037SARM gem5 Developers        "cntp_cval_ns",
106010037SARM gem5 Developers        "cntp_cval_s",
106110037SARM gem5 Developers        "cntv_cval",
106210037SARM gem5 Developers        "cntvoff",
106310037SARM gem5 Developers        "cnthp_cval",
106410037SARM gem5 Developers        "cpumerrsr",
106510037SARM gem5 Developers        "l2merrsr",
106610037SARM gem5 Developers
106710037SARM gem5 Developers        // AArch64 registers (Op0=2)
106810037SARM gem5 Developers        "mdccint_el1",
106910037SARM gem5 Developers        "osdtrrx_el1",
107010037SARM gem5 Developers        "mdscr_el1",
107110037SARM gem5 Developers        "osdtrtx_el1",
107210037SARM gem5 Developers        "oseccr_el1",
107310037SARM gem5 Developers        "dbgbvr0_el1",
107410037SARM gem5 Developers        "dbgbvr1_el1",
107510037SARM gem5 Developers        "dbgbvr2_el1",
107610037SARM gem5 Developers        "dbgbvr3_el1",
107710037SARM gem5 Developers        "dbgbvr4_el1",
107810037SARM gem5 Developers        "dbgbvr5_el1",
107910037SARM gem5 Developers        "dbgbcr0_el1",
108010037SARM gem5 Developers        "dbgbcr1_el1",
108110037SARM gem5 Developers        "dbgbcr2_el1",
108210037SARM gem5 Developers        "dbgbcr3_el1",
108310037SARM gem5 Developers        "dbgbcr4_el1",
108410037SARM gem5 Developers        "dbgbcr5_el1",
108510037SARM gem5 Developers        "dbgwvr0_el1",
108610037SARM gem5 Developers        "dbgwvr1_el1",
108710037SARM gem5 Developers        "dbgwvr2_el1",
108810037SARM gem5 Developers        "dbgwvr3_el1",
108910037SARM gem5 Developers        "dbgwcr0_el1",
109010037SARM gem5 Developers        "dbgwcr1_el1",
109110037SARM gem5 Developers        "dbgwcr2_el1",
109210037SARM gem5 Developers        "dbgwcr3_el1",
109310037SARM gem5 Developers        "mdccsr_el0",
109410037SARM gem5 Developers        "mddtr_el0",
109510037SARM gem5 Developers        "mddtrtx_el0",
109610037SARM gem5 Developers        "mddtrrx_el0",
109710037SARM gem5 Developers        "dbgvcr32_el2",
109810037SARM gem5 Developers        "mdrar_el1",
109910037SARM gem5 Developers        "oslar_el1",
110010037SARM gem5 Developers        "oslsr_el1",
110110037SARM gem5 Developers        "osdlr_el1",
110210037SARM gem5 Developers        "dbgprcr_el1",
110310037SARM gem5 Developers        "dbgclaimset_el1",
110410037SARM gem5 Developers        "dbgclaimclr_el1",
110510037SARM gem5 Developers        "dbgauthstatus_el1",
110610037SARM gem5 Developers        "teecr32_el1",
110710037SARM gem5 Developers        "teehbr32_el1",
110810037SARM gem5 Developers
110910037SARM gem5 Developers        // AArch64 registers (Op0=1,3)
111010037SARM gem5 Developers        "midr_el1",
111110037SARM gem5 Developers        "mpidr_el1",
111210037SARM gem5 Developers        "revidr_el1",
111310037SARM gem5 Developers        "id_pfr0_el1",
111410037SARM gem5 Developers        "id_pfr1_el1",
111510037SARM gem5 Developers        "id_dfr0_el1",
111610037SARM gem5 Developers        "id_afr0_el1",
111710037SARM gem5 Developers        "id_mmfr0_el1",
111810037SARM gem5 Developers        "id_mmfr1_el1",
111910037SARM gem5 Developers        "id_mmfr2_el1",
112010037SARM gem5 Developers        "id_mmfr3_el1",
112110037SARM gem5 Developers        "id_isar0_el1",
112210037SARM gem5 Developers        "id_isar1_el1",
112310037SARM gem5 Developers        "id_isar2_el1",
112410037SARM gem5 Developers        "id_isar3_el1",
112510037SARM gem5 Developers        "id_isar4_el1",
112610037SARM gem5 Developers        "id_isar5_el1",
112710037SARM gem5 Developers        "mvfr0_el1",
112810037SARM gem5 Developers        "mvfr1_el1",
112910037SARM gem5 Developers        "mvfr2_el1",
113010037SARM gem5 Developers        "id_aa64pfr0_el1",
113110037SARM gem5 Developers        "id_aa64pfr1_el1",
113210037SARM gem5 Developers        "id_aa64dfr0_el1",
113310037SARM gem5 Developers        "id_aa64dfr1_el1",
113410037SARM gem5 Developers        "id_aa64afr0_el1",
113510037SARM gem5 Developers        "id_aa64afr1_el1",
113610037SARM gem5 Developers        "id_aa64isar0_el1",
113710037SARM gem5 Developers        "id_aa64isar1_el1",
113810037SARM gem5 Developers        "id_aa64mmfr0_el1",
113910037SARM gem5 Developers        "id_aa64mmfr1_el1",
114010037SARM gem5 Developers        "ccsidr_el1",
114110037SARM gem5 Developers        "clidr_el1",
114210037SARM gem5 Developers        "aidr_el1",
114310037SARM gem5 Developers        "csselr_el1",
114410037SARM gem5 Developers        "ctr_el0",
114510037SARM gem5 Developers        "dczid_el0",
114610037SARM gem5 Developers        "vpidr_el2",
114710037SARM gem5 Developers        "vmpidr_el2",
114810037SARM gem5 Developers        "sctlr_el1",
114910037SARM gem5 Developers        "actlr_el1",
115010037SARM gem5 Developers        "cpacr_el1",
115110037SARM gem5 Developers        "sctlr_el2",
115210037SARM gem5 Developers        "actlr_el2",
115310037SARM gem5 Developers        "hcr_el2",
115410037SARM gem5 Developers        "mdcr_el2",
115510037SARM gem5 Developers        "cptr_el2",
115610037SARM gem5 Developers        "hstr_el2",
115710037SARM gem5 Developers        "hacr_el2",
115810037SARM gem5 Developers        "sctlr_el3",
115910037SARM gem5 Developers        "actlr_el3",
116010037SARM gem5 Developers        "scr_el3",
116110037SARM gem5 Developers        "sder32_el3",
116210037SARM gem5 Developers        "cptr_el3",
116310037SARM gem5 Developers        "mdcr_el3",
116410037SARM gem5 Developers        "ttbr0_el1",
116510037SARM gem5 Developers        "ttbr1_el1",
116610037SARM gem5 Developers        "tcr_el1",
116710037SARM gem5 Developers        "ttbr0_el2",
116810037SARM gem5 Developers        "tcr_el2",
116910037SARM gem5 Developers        "vttbr_el2",
117010037SARM gem5 Developers        "vtcr_el2",
117110037SARM gem5 Developers        "ttbr0_el3",
117210037SARM gem5 Developers        "tcr_el3",
117310037SARM gem5 Developers        "dacr32_el2",
117410037SARM gem5 Developers        "spsr_el1",
117510037SARM gem5 Developers        "elr_el1",
117610037SARM gem5 Developers        "sp_el0",
117710037SARM gem5 Developers        "spsel",
117810037SARM gem5 Developers        "currentel",
117910037SARM gem5 Developers        "nzcv",
118010037SARM gem5 Developers        "daif",
118110037SARM gem5 Developers        "fpcr",
118210037SARM gem5 Developers        "fpsr",
118310037SARM gem5 Developers        "dspsr_el0",
118410037SARM gem5 Developers        "dlr_el0",
118510037SARM gem5 Developers        "spsr_el2",
118610037SARM gem5 Developers        "elr_el2",
118710037SARM gem5 Developers        "sp_el1",
118810037SARM gem5 Developers        "spsr_irq_aa64",
118910037SARM gem5 Developers        "spsr_abt_aa64",
119010037SARM gem5 Developers        "spsr_und_aa64",
119110037SARM gem5 Developers        "spsr_fiq_aa64",
119210037SARM gem5 Developers        "spsr_el3",
119310037SARM gem5 Developers        "elr_el3",
119410037SARM gem5 Developers        "sp_el2",
119510037SARM gem5 Developers        "afsr0_el1",
119610037SARM gem5 Developers        "afsr1_el1",
119710037SARM gem5 Developers        "esr_el1",
119810037SARM gem5 Developers        "ifsr32_el2",
119910037SARM gem5 Developers        "afsr0_el2",
120010037SARM gem5 Developers        "afsr1_el2",
120110037SARM gem5 Developers        "esr_el2",
120210037SARM gem5 Developers        "fpexc32_el2",
120310037SARM gem5 Developers        "afsr0_el3",
120410037SARM gem5 Developers        "afsr1_el3",
120510037SARM gem5 Developers        "esr_el3",
120610037SARM gem5 Developers        "far_el1",
120710037SARM gem5 Developers        "far_el2",
120810037SARM gem5 Developers        "hpfar_el2",
120910037SARM gem5 Developers        "far_el3",
121010037SARM gem5 Developers        "ic_ialluis",
121110037SARM gem5 Developers        "par_el1",
121210037SARM gem5 Developers        "ic_iallu",
121310037SARM gem5 Developers        "dc_ivac_xt",
121410037SARM gem5 Developers        "dc_isw_xt",
121510037SARM gem5 Developers        "at_s1e1r_xt",
121610037SARM gem5 Developers        "at_s1e1w_xt",
121710037SARM gem5 Developers        "at_s1e0r_xt",
121810037SARM gem5 Developers        "at_s1e0w_xt",
121910037SARM gem5 Developers        "dc_csw_xt",
122010037SARM gem5 Developers        "dc_cisw_xt",
122110037SARM gem5 Developers        "dc_zva_xt",
122210037SARM gem5 Developers        "ic_ivau_xt",
122310037SARM gem5 Developers        "dc_cvac_xt",
122410037SARM gem5 Developers        "dc_cvau_xt",
122510037SARM gem5 Developers        "dc_civac_xt",
122610037SARM gem5 Developers        "at_s1e2r_xt",
122710037SARM gem5 Developers        "at_s1e2w_xt",
122810037SARM gem5 Developers        "at_s12e1r_xt",
122910037SARM gem5 Developers        "at_s12e1w_xt",
123010037SARM gem5 Developers        "at_s12e0r_xt",
123110037SARM gem5 Developers        "at_s12e0w_xt",
123210037SARM gem5 Developers        "at_s1e3r_xt",
123310037SARM gem5 Developers        "at_s1e3w_xt",
123410037SARM gem5 Developers        "tlbi_vmalle1is",
123510037SARM gem5 Developers        "tlbi_vae1is_xt",
123610037SARM gem5 Developers        "tlbi_aside1is_xt",
123710037SARM gem5 Developers        "tlbi_vaae1is_xt",
123810037SARM gem5 Developers        "tlbi_vale1is_xt",
123910037SARM gem5 Developers        "tlbi_vaale1is_xt",
124010037SARM gem5 Developers        "tlbi_vmalle1",
124110037SARM gem5 Developers        "tlbi_vae1_xt",
124210037SARM gem5 Developers        "tlbi_aside1_xt",
124310037SARM gem5 Developers        "tlbi_vaae1_xt",
124410037SARM gem5 Developers        "tlbi_vale1_xt",
124510037SARM gem5 Developers        "tlbi_vaale1_xt",
124610037SARM gem5 Developers        "tlbi_ipas2e1is_xt",
124710037SARM gem5 Developers        "tlbi_ipas2le1is_xt",
124810037SARM gem5 Developers        "tlbi_alle2is",
124910037SARM gem5 Developers        "tlbi_vae2is_xt",
125010037SARM gem5 Developers        "tlbi_alle1is",
125110037SARM gem5 Developers        "tlbi_vale2is_xt",
125210037SARM gem5 Developers        "tlbi_vmalls12e1is",
125310037SARM gem5 Developers        "tlbi_ipas2e1_xt",
125410037SARM gem5 Developers        "tlbi_ipas2le1_xt",
125510037SARM gem5 Developers        "tlbi_alle2",
125610037SARM gem5 Developers        "tlbi_vae2_xt",
125710037SARM gem5 Developers        "tlbi_alle1",
125810037SARM gem5 Developers        "tlbi_vale2_xt",
125910037SARM gem5 Developers        "tlbi_vmalls12e1",
126010037SARM gem5 Developers        "tlbi_alle3is",
126110037SARM gem5 Developers        "tlbi_vae3is_xt",
126210037SARM gem5 Developers        "tlbi_vale3is_xt",
126310037SARM gem5 Developers        "tlbi_alle3",
126410037SARM gem5 Developers        "tlbi_vae3_xt",
126510037SARM gem5 Developers        "tlbi_vale3_xt",
126610037SARM gem5 Developers        "pmintenset_el1",
126710037SARM gem5 Developers        "pmintenclr_el1",
126810037SARM gem5 Developers        "pmcr_el0",
126910037SARM gem5 Developers        "pmcntenset_el0",
127010037SARM gem5 Developers        "pmcntenclr_el0",
127110037SARM gem5 Developers        "pmovsclr_el0",
127210037SARM gem5 Developers        "pmswinc_el0",
127310037SARM gem5 Developers        "pmselr_el0",
127410037SARM gem5 Developers        "pmceid0_el0",
127510037SARM gem5 Developers        "pmceid1_el0",
127610037SARM gem5 Developers        "pmccntr_el0",
127710037SARM gem5 Developers        "pmxevtyper_el0",
127810037SARM gem5 Developers        "pmccfiltr_el0",
127910037SARM gem5 Developers        "pmxevcntr_el0",
128010037SARM gem5 Developers        "pmuserenr_el0",
128110037SARM gem5 Developers        "pmovsset_el0",
128210037SARM gem5 Developers        "mair_el1",
128310037SARM gem5 Developers        "amair_el1",
128410037SARM gem5 Developers        "mair_el2",
128510037SARM gem5 Developers        "amair_el2",
128610037SARM gem5 Developers        "mair_el3",
128710037SARM gem5 Developers        "amair_el3",
128810037SARM gem5 Developers        "l2ctlr_el1",
128910037SARM gem5 Developers        "l2ectlr_el1",
129010037SARM gem5 Developers        "vbar_el1",
129110037SARM gem5 Developers        "rvbar_el1",
129210037SARM gem5 Developers        "isr_el1",
129310037SARM gem5 Developers        "vbar_el2",
129410037SARM gem5 Developers        "rvbar_el2",
129510037SARM gem5 Developers        "vbar_el3",
129610037SARM gem5 Developers        "rvbar_el3",
129710037SARM gem5 Developers        "rmr_el3",
129810037SARM gem5 Developers        "contextidr_el1",
129910037SARM gem5 Developers        "tpidr_el1",
130010037SARM gem5 Developers        "tpidr_el0",
130110037SARM gem5 Developers        "tpidrro_el0",
130210037SARM gem5 Developers        "tpidr_el2",
130310037SARM gem5 Developers        "tpidr_el3",
130410037SARM gem5 Developers        "cntkctl_el1",
130510037SARM gem5 Developers        "cntfrq_el0",
130610037SARM gem5 Developers        "cntpct_el0",
130710037SARM gem5 Developers        "cntvct_el0",
130810037SARM gem5 Developers        "cntp_tval_el0",
130910037SARM gem5 Developers        "cntp_ctl_el0",
131010037SARM gem5 Developers        "cntp_cval_el0",
131110037SARM gem5 Developers        "cntv_tval_el0",
131210037SARM gem5 Developers        "cntv_ctl_el0",
131310037SARM gem5 Developers        "cntv_cval_el0",
131410037SARM gem5 Developers        "pmevcntr0_el0",
131510037SARM gem5 Developers        "pmevcntr1_el0",
131610037SARM gem5 Developers        "pmevcntr2_el0",
131710037SARM gem5 Developers        "pmevcntr3_el0",
131810037SARM gem5 Developers        "pmevcntr4_el0",
131910037SARM gem5 Developers        "pmevcntr5_el0",
132010037SARM gem5 Developers        "pmevtyper0_el0",
132110037SARM gem5 Developers        "pmevtyper1_el0",
132210037SARM gem5 Developers        "pmevtyper2_el0",
132310037SARM gem5 Developers        "pmevtyper3_el0",
132410037SARM gem5 Developers        "pmevtyper4_el0",
132510037SARM gem5 Developers        "pmevtyper5_el0",
132610037SARM gem5 Developers        "cntvoff_el2",
132710037SARM gem5 Developers        "cnthctl_el2",
132810037SARM gem5 Developers        "cnthp_tval_el2",
132910037SARM gem5 Developers        "cnthp_ctl_el2",
133010037SARM gem5 Developers        "cnthp_cval_el2",
133110037SARM gem5 Developers        "cntps_tval_el1",
133210037SARM gem5 Developers        "cntps_ctl_el1",
133310037SARM gem5 Developers        "cntps_cval_el1",
133410037SARM gem5 Developers        "il1data0_el1",
133510037SARM gem5 Developers        "il1data1_el1",
133610037SARM gem5 Developers        "il1data2_el1",
133710037SARM gem5 Developers        "il1data3_el1",
133810037SARM gem5 Developers        "dl1data0_el1",
133910037SARM gem5 Developers        "dl1data1_el1",
134010037SARM gem5 Developers        "dl1data2_el1",
134110037SARM gem5 Developers        "dl1data3_el1",
134210037SARM gem5 Developers        "dl1data4_el1",
134310037SARM gem5 Developers        "l2actlr_el1",
134410037SARM gem5 Developers        "cpuactlr_el1",
134510037SARM gem5 Developers        "cpuectlr_el1",
134610037SARM gem5 Developers        "cpumerrsr_el1",
134710037SARM gem5 Developers        "l2merrsr_el1",
134810037SARM gem5 Developers        "cbar_el1",
134910856SCurtis.Dunham@arm.com        "contextidr_el2",
135010037SARM gem5 Developers
135110037SARM gem5 Developers        // Dummy registers
135210037SARM gem5 Developers        "nop",
135310037SARM gem5 Developers        "raz",
135410037SARM gem5 Developers        "cp14_unimpl",
135510037SARM gem5 Developers        "cp15_unimpl",
135610037SARM gem5 Developers        "a64_unimpl",
135710037SARM gem5 Developers        "unknown"
13586242Sgblack@eecs.umich.edu    };
13596242Sgblack@eecs.umich.edu
13609256SAndreas.Sandberg@arm.com    static_assert(sizeof(miscRegName) / sizeof(*miscRegName) == NUM_MISCREGS,
13619256SAndreas.Sandberg@arm.com                  "The miscRegName array and NUM_MISCREGS are inconsistent.");
13629256SAndreas.Sandberg@arm.com
13636242Sgblack@eecs.umich.edu    BitUnion32(CPSR)
136410037SARM gem5 Developers        Bitfield<31, 30> nz;
13656242Sgblack@eecs.umich.edu        Bitfield<29> c;
13666242Sgblack@eecs.umich.edu        Bitfield<28> v;
13676242Sgblack@eecs.umich.edu        Bitfield<27> q;
136810037SARM gem5 Developers        Bitfield<26, 25> it1;
13696242Sgblack@eecs.umich.edu        Bitfield<24> j;
137010037SARM gem5 Developers        Bitfield<23, 22> res0_23_22;
137110037SARM gem5 Developers        Bitfield<21> ss;        // AArch64
137210037SARM gem5 Developers        Bitfield<20> il;        // AArch64
13736242Sgblack@eecs.umich.edu        Bitfield<19, 16> ge;
137410037SARM gem5 Developers        Bitfield<15, 10> it2;
137510037SARM gem5 Developers        Bitfield<9> d;          // AArch64
13766242Sgblack@eecs.umich.edu        Bitfield<9> e;
13776242Sgblack@eecs.umich.edu        Bitfield<8> a;
13786242Sgblack@eecs.umich.edu        Bitfield<7> i;
13796242Sgblack@eecs.umich.edu        Bitfield<6> f;
138011514Sandreas.sandberg@arm.com        Bitfield<8, 6> aif;
138110037SARM gem5 Developers        Bitfield<9, 6> daif;    // AArch64
13826242Sgblack@eecs.umich.edu        Bitfield<5> t;
138310037SARM gem5 Developers        Bitfield<4> width;      // AArch64
138410037SARM gem5 Developers        Bitfield<3, 2> el;      // AArch64
13856242Sgblack@eecs.umich.edu        Bitfield<4, 0> mode;
138610037SARM gem5 Developers        Bitfield<0> sp;         // AArch64
13876242Sgblack@eecs.umich.edu    EndBitUnion(CPSR)
13886735Sgblack@eecs.umich.edu
13896750Sgblack@eecs.umich.edu    // This mask selects bits of the CPSR that actually go in the CondCodes
13906750Sgblack@eecs.umich.edu    // integer register to allow renaming.
13918302SAli.Saidi@ARM.com    static const uint32_t CondCodesMask   = 0xF00F0000;
13928302SAli.Saidi@ARM.com    static const uint32_t CpsrMaskQ       = 0x08000000;
13936750Sgblack@eecs.umich.edu
139410037SARM gem5 Developers    BitUnion32(HDCR)
139510037SARM gem5 Developers        Bitfield<11>   tdra;
139610037SARM gem5 Developers        Bitfield<10>   tdosa;
139710037SARM gem5 Developers        Bitfield<9>    tda;
139810037SARM gem5 Developers        Bitfield<8>    tde;
139910037SARM gem5 Developers        Bitfield<7>    hpme;
140010037SARM gem5 Developers        Bitfield<6>    tpm;
140110037SARM gem5 Developers        Bitfield<5>    tpmcr;
140210037SARM gem5 Developers        Bitfield<4, 0> hpmn;
140310037SARM gem5 Developers    EndBitUnion(HDCR)
140410037SARM gem5 Developers
140510037SARM gem5 Developers    BitUnion32(HCPTR)
140610037SARM gem5 Developers        Bitfield<31> tcpac;
140710037SARM gem5 Developers        Bitfield<20> tta;
140810037SARM gem5 Developers        Bitfield<15> tase;
140910037SARM gem5 Developers        Bitfield<13> tcp13;
141010037SARM gem5 Developers        Bitfield<12> tcp12;
141110037SARM gem5 Developers        Bitfield<11> tcp11;
141210037SARM gem5 Developers        Bitfield<10> tcp10;
141310037SARM gem5 Developers        Bitfield<10> tfp;  // AArch64
141410037SARM gem5 Developers        Bitfield<9>  tcp9;
141510037SARM gem5 Developers        Bitfield<8>  tcp8;
141610037SARM gem5 Developers        Bitfield<7>  tcp7;
141710037SARM gem5 Developers        Bitfield<6>  tcp6;
141810037SARM gem5 Developers        Bitfield<5>  tcp5;
141910037SARM gem5 Developers        Bitfield<4>  tcp4;
142010037SARM gem5 Developers        Bitfield<3>  tcp3;
142110037SARM gem5 Developers        Bitfield<2>  tcp2;
142210037SARM gem5 Developers        Bitfield<1>  tcp1;
142310037SARM gem5 Developers        Bitfield<0>  tcp0;
142410037SARM gem5 Developers    EndBitUnion(HCPTR)
142510037SARM gem5 Developers
142610037SARM gem5 Developers    BitUnion32(HSTR)
142710037SARM gem5 Developers        Bitfield<17> tjdbx;
142810037SARM gem5 Developers        Bitfield<16> ttee;
142910037SARM gem5 Developers        Bitfield<15> t15;
143010037SARM gem5 Developers        Bitfield<13> t13;
143110037SARM gem5 Developers        Bitfield<12> t12;
143210037SARM gem5 Developers        Bitfield<11> t11;
143310037SARM gem5 Developers        Bitfield<10> t10;
143410037SARM gem5 Developers        Bitfield<9>  t9;
143510037SARM gem5 Developers        Bitfield<8>  t8;
143610037SARM gem5 Developers        Bitfield<7>  t7;
143710037SARM gem5 Developers        Bitfield<6>  t6;
143810037SARM gem5 Developers        Bitfield<5>  t5;
143910037SARM gem5 Developers        Bitfield<4>  t4;
144010037SARM gem5 Developers        Bitfield<3>  t3;
144110037SARM gem5 Developers        Bitfield<2>  t2;
144210037SARM gem5 Developers        Bitfield<1>  t1;
144310037SARM gem5 Developers        Bitfield<0>  t0;
144410037SARM gem5 Developers    EndBitUnion(HSTR)
144510037SARM gem5 Developers
144610037SARM gem5 Developers    BitUnion64(HCR)
144710037SARM gem5 Developers        Bitfield<33>     id;    // AArch64
144810037SARM gem5 Developers        Bitfield<32>     cd;    // AArch64
144910037SARM gem5 Developers        Bitfield<31>     rw;    // AArch64
145010037SARM gem5 Developers        Bitfield<30>     trvm;  // AArch64
145110037SARM gem5 Developers        Bitfield<29>     hcd;   // AArch64
145210037SARM gem5 Developers        Bitfield<28>     tdz;   // AArch64
145310037SARM gem5 Developers
145410037SARM gem5 Developers        Bitfield<27>     tge;
145510037SARM gem5 Developers        Bitfield<26>     tvm;
145610037SARM gem5 Developers        Bitfield<25>     ttlb;
145710037SARM gem5 Developers        Bitfield<24>     tpu;
145810037SARM gem5 Developers        Bitfield<23>     tpc;
145910037SARM gem5 Developers        Bitfield<22>     tsw;
146010037SARM gem5 Developers        Bitfield<21>     tac;
146110037SARM gem5 Developers        Bitfield<21>     tacr;  // AArch64
146210037SARM gem5 Developers        Bitfield<20>     tidcp;
146310037SARM gem5 Developers        Bitfield<19>     tsc;
146410037SARM gem5 Developers        Bitfield<18>     tid3;
146510037SARM gem5 Developers        Bitfield<17>     tid2;
146610037SARM gem5 Developers        Bitfield<16>     tid1;
146710037SARM gem5 Developers        Bitfield<15>     tid0;
146810037SARM gem5 Developers        Bitfield<14>     twe;
146910037SARM gem5 Developers        Bitfield<13>     twi;
147010037SARM gem5 Developers        Bitfield<12>     dc;
147110037SARM gem5 Developers        Bitfield<11, 10> bsu;
147210037SARM gem5 Developers        Bitfield<9>      fb;
147310037SARM gem5 Developers        Bitfield<8>      va;
147410037SARM gem5 Developers        Bitfield<8>      vse;   // AArch64
147510037SARM gem5 Developers        Bitfield<7>      vi;
147610037SARM gem5 Developers        Bitfield<6>      vf;
147710037SARM gem5 Developers        Bitfield<5>      amo;
147810037SARM gem5 Developers        Bitfield<4>      imo;
147910037SARM gem5 Developers        Bitfield<3>      fmo;
148010037SARM gem5 Developers        Bitfield<2>      ptw;
148110037SARM gem5 Developers        Bitfield<1>      swio;
148210037SARM gem5 Developers        Bitfield<0>      vm;
148310037SARM gem5 Developers    EndBitUnion(HCR)
148410037SARM gem5 Developers
148510037SARM gem5 Developers    BitUnion32(NSACR)
148610037SARM gem5 Developers        Bitfield<20> nstrcdis;
148710037SARM gem5 Developers        Bitfield<19> rfr;
148810037SARM gem5 Developers        Bitfield<15> nsasedis;
148910037SARM gem5 Developers        Bitfield<14> nsd32dis;
149010037SARM gem5 Developers        Bitfield<13> cp13;
149110037SARM gem5 Developers        Bitfield<12> cp12;
149210037SARM gem5 Developers        Bitfield<11> cp11;
149310037SARM gem5 Developers        Bitfield<10> cp10;
149410037SARM gem5 Developers        Bitfield<9>  cp9;
149510037SARM gem5 Developers        Bitfield<8>  cp8;
149610037SARM gem5 Developers        Bitfield<7>  cp7;
149710037SARM gem5 Developers        Bitfield<6>  cp6;
149810037SARM gem5 Developers        Bitfield<5>  cp5;
149910037SARM gem5 Developers        Bitfield<4>  cp4;
150010037SARM gem5 Developers        Bitfield<3>  cp3;
150110037SARM gem5 Developers        Bitfield<2>  cp2;
150210037SARM gem5 Developers        Bitfield<1>  cp1;
150310037SARM gem5 Developers        Bitfield<0>  cp0;
150410037SARM gem5 Developers    EndBitUnion(NSACR)
150510037SARM gem5 Developers
150610037SARM gem5 Developers    BitUnion32(SCR)
150710037SARM gem5 Developers        Bitfield<13> twe;
150810037SARM gem5 Developers        Bitfield<12> twi;
150910037SARM gem5 Developers        Bitfield<11> st;  // AArch64
151010037SARM gem5 Developers        Bitfield<10> rw;  // AArch64
151110037SARM gem5 Developers        Bitfield<9> sif;
151210037SARM gem5 Developers        Bitfield<8> hce;
151310037SARM gem5 Developers        Bitfield<7> scd;
151410037SARM gem5 Developers        Bitfield<7> smd;  // AArch64
151510037SARM gem5 Developers        Bitfield<6> nEt;
151610037SARM gem5 Developers        Bitfield<5> aw;
151710037SARM gem5 Developers        Bitfield<4> fw;
151810037SARM gem5 Developers        Bitfield<3> ea;
151910037SARM gem5 Developers        Bitfield<2> fiq;
152010037SARM gem5 Developers        Bitfield<1> irq;
152110037SARM gem5 Developers        Bitfield<0> ns;
152210037SARM gem5 Developers    EndBitUnion(SCR)
152310037SARM gem5 Developers
15246735Sgblack@eecs.umich.edu    BitUnion32(SCTLR)
152510037SARM gem5 Developers        Bitfield<30>   te;      // Thumb Exception Enable (AArch32 only)
152610037SARM gem5 Developers        Bitfield<29>   afe;     // Access flag enable (AArch32 only)
152710037SARM gem5 Developers        Bitfield<28>   tre;     // TEX remap enable (AArch32 only)
152810037SARM gem5 Developers        Bitfield<27>   nmfi;    // Non-maskable FIQ support (ARMv7 only)
152910037SARM gem5 Developers        Bitfield<26>   uci;     // Enable EL0 access to DC CVAU, DC CIVAC,
153010037SARM gem5 Developers                                // DC CVAC and IC IVAU instructions
153110037SARM gem5 Developers                                // (AArch64 SCTLR_EL1 only)
153210037SARM gem5 Developers        Bitfield<25>   ee;      // Exception Endianness
153310037SARM gem5 Developers        Bitfield<24>   ve;      // Interrupt Vectors Enable (ARMv7 only)
153410037SARM gem5 Developers        Bitfield<24>   e0e;     // Endianness of explicit data accesses at EL0
153510037SARM gem5 Developers                                // (AArch64 SCTLR_EL1 only)
153610037SARM gem5 Developers        Bitfield<23>   xp;      // Extended page table enable (dropped in ARMv7)
153710037SARM gem5 Developers        Bitfield<22>   u;       // Alignment (dropped in ARMv7)
153810037SARM gem5 Developers        Bitfield<21>   fi;      // Fast interrupts configuration enable
153910037SARM gem5 Developers                                // (ARMv7 only)
154010037SARM gem5 Developers        Bitfield<20>   uwxn;    // Unprivileged write permission implies EL1 XN
154110037SARM gem5 Developers                                // (AArch32 only)
154210037SARM gem5 Developers        Bitfield<19>   dz;      // Divide by Zero fault enable
154310037SARM gem5 Developers                                // (dropped in ARMv7)
154410037SARM gem5 Developers        Bitfield<19>   wxn;     // Write permission implies XN
154510037SARM gem5 Developers        Bitfield<18>   ntwe;    // Not trap WFE
154610037SARM gem5 Developers                                // (ARMv8 AArch32 and AArch64 SCTLR_EL1 only)
154710037SARM gem5 Developers        Bitfield<18>   rao2;    // Read as one
154810037SARM gem5 Developers        Bitfield<16>   ntwi;    // Not trap WFI
154910037SARM gem5 Developers                                // (ARMv8 AArch32 and AArch64 SCTLR_EL1 only)
155010037SARM gem5 Developers        Bitfield<16>   rao3;    // Read as one
155110037SARM gem5 Developers        Bitfield<15>   uct;     // Enable EL0 access to CTR_EL0
155210037SARM gem5 Developers                                // (AArch64 SCTLR_EL1 only)
155310037SARM gem5 Developers        Bitfield<14>   rr;      // Round Robin select (ARMv7 only)
155410037SARM gem5 Developers        Bitfield<14>   dze;     // Enable EL0 access to DC ZVA
155510037SARM gem5 Developers                                // (AArch64 SCTLR_EL1 only)
155610037SARM gem5 Developers        Bitfield<13>   v;       // Vectors bit (AArch32 only)
155710037SARM gem5 Developers        Bitfield<12>   i;       // Instruction cache enable
155810037SARM gem5 Developers        Bitfield<11>   z;       // Branch prediction enable (ARMv7 only)
155910037SARM gem5 Developers        Bitfield<10>   sw;      // SWP/SWPB enable (ARMv7 only)
156010037SARM gem5 Developers        Bitfield<9, 8> rs;      // Deprecated protection bits (dropped in ARMv7)
156110037SARM gem5 Developers        Bitfield<9>    uma;     // User mask access (AArch64 SCTLR_EL1 only)
156210037SARM gem5 Developers        Bitfield<8>    sed;     // SETEND disable
156310037SARM gem5 Developers                                // (ARMv8 AArch32 and AArch64 SCTLR_EL1 only)
156410037SARM gem5 Developers        Bitfield<7>    b;       // Endianness support (dropped in ARMv7)
156510037SARM gem5 Developers        Bitfield<7>    itd;     // IT disable
156610037SARM gem5 Developers                                // (ARMv8 AArch32 and AArch64 SCTLR_EL1 only)
156710037SARM gem5 Developers        Bitfield<6, 3> rao4;    // Read as one
156810037SARM gem5 Developers        Bitfield<6>    thee;    // ThumbEE enable
156910037SARM gem5 Developers                                // (ARMv8 AArch32 and AArch64 SCTLR_EL1 only)
157010037SARM gem5 Developers        Bitfield<5>    cp15ben; // CP15 barrier enable
157110037SARM gem5 Developers                                // (AArch32 and AArch64 SCTLR_EL1 only)
157210037SARM gem5 Developers        Bitfield<4>    sa0;     // Stack Alignment Check Enable for EL0
157310037SARM gem5 Developers                                // (AArch64 SCTLR_EL1 only)
157410037SARM gem5 Developers        Bitfield<3>    sa;      // Stack Alignment Check Enable (AArch64 only)
157510037SARM gem5 Developers        Bitfield<2>    c;       // Cache enable
157610037SARM gem5 Developers        Bitfield<1>    a;       // Alignment check enable
157710037SARM gem5 Developers        Bitfield<0>    m;       // MMU enable
15786735Sgblack@eecs.umich.edu    EndBitUnion(SCTLR)
15797320Sgblack@eecs.umich.edu
15807320Sgblack@eecs.umich.edu    BitUnion32(CPACR)
15817320Sgblack@eecs.umich.edu        Bitfield<1, 0> cp0;
15827320Sgblack@eecs.umich.edu        Bitfield<3, 2> cp1;
15837320Sgblack@eecs.umich.edu        Bitfield<5, 4> cp2;
15847320Sgblack@eecs.umich.edu        Bitfield<7, 6> cp3;
15857320Sgblack@eecs.umich.edu        Bitfield<9, 8> cp4;
15867320Sgblack@eecs.umich.edu        Bitfield<11, 10> cp5;
15877320Sgblack@eecs.umich.edu        Bitfield<13, 12> cp6;
15887320Sgblack@eecs.umich.edu        Bitfield<15, 14> cp7;
15897320Sgblack@eecs.umich.edu        Bitfield<17, 16> cp8;
15907320Sgblack@eecs.umich.edu        Bitfield<19, 18> cp9;
15917320Sgblack@eecs.umich.edu        Bitfield<21, 20> cp10;
159210037SARM gem5 Developers        Bitfield<21, 20> fpen;  // AArch64
15937320Sgblack@eecs.umich.edu        Bitfield<23, 22> cp11;
15947320Sgblack@eecs.umich.edu        Bitfield<25, 24> cp12;
15957320Sgblack@eecs.umich.edu        Bitfield<27, 26> cp13;
15968206SWilliam.Wang@arm.com        Bitfield<29, 28> rsvd;
159710037SARM gem5 Developers        Bitfield<28> tta;  // AArch64
15987320Sgblack@eecs.umich.edu        Bitfield<30> d32dis;
15997320Sgblack@eecs.umich.edu        Bitfield<31> asedis;
16007320Sgblack@eecs.umich.edu    EndBitUnion(CPACR)
16017362Sgblack@eecs.umich.edu
16027362Sgblack@eecs.umich.edu    BitUnion32(FSR)
16037362Sgblack@eecs.umich.edu        Bitfield<3, 0> fsLow;
160410037SARM gem5 Developers        Bitfield<5, 0> status;  // LPAE
16057362Sgblack@eecs.umich.edu        Bitfield<7, 4> domain;
160610037SARM gem5 Developers        Bitfield<9> lpae;
16077362Sgblack@eecs.umich.edu        Bitfield<10> fsHigh;
16087362Sgblack@eecs.umich.edu        Bitfield<11> wnr;
16097362Sgblack@eecs.umich.edu        Bitfield<12> ext;
161010037SARM gem5 Developers        Bitfield<13> cm;  // LPAE
16117362Sgblack@eecs.umich.edu    EndBitUnion(FSR)
16127376Sgblack@eecs.umich.edu
16137376Sgblack@eecs.umich.edu    BitUnion32(FPSCR)
16147376Sgblack@eecs.umich.edu        Bitfield<0> ioc;
16157376Sgblack@eecs.umich.edu        Bitfield<1> dzc;
16167376Sgblack@eecs.umich.edu        Bitfield<2> ofc;
16177376Sgblack@eecs.umich.edu        Bitfield<3> ufc;
16187376Sgblack@eecs.umich.edu        Bitfield<4> ixc;
16197376Sgblack@eecs.umich.edu        Bitfield<7> idc;
16207376Sgblack@eecs.umich.edu        Bitfield<8> ioe;
16217376Sgblack@eecs.umich.edu        Bitfield<9> dze;
16227376Sgblack@eecs.umich.edu        Bitfield<10> ofe;
16237376Sgblack@eecs.umich.edu        Bitfield<11> ufe;
16247376Sgblack@eecs.umich.edu        Bitfield<12> ixe;
16257376Sgblack@eecs.umich.edu        Bitfield<15> ide;
16267376Sgblack@eecs.umich.edu        Bitfield<18, 16> len;
16277376Sgblack@eecs.umich.edu        Bitfield<21, 20> stride;
16287376Sgblack@eecs.umich.edu        Bitfield<23, 22> rMode;
16297376Sgblack@eecs.umich.edu        Bitfield<24> fz;
16307376Sgblack@eecs.umich.edu        Bitfield<25> dn;
16317376Sgblack@eecs.umich.edu        Bitfield<26> ahp;
16327376Sgblack@eecs.umich.edu        Bitfield<27> qc;
16337376Sgblack@eecs.umich.edu        Bitfield<28> v;
16347376Sgblack@eecs.umich.edu        Bitfield<29> c;
16357376Sgblack@eecs.umich.edu        Bitfield<30> z;
16367376Sgblack@eecs.umich.edu        Bitfield<31> n;
16377376Sgblack@eecs.umich.edu    EndBitUnion(FPSCR)
16387383Sgblack@eecs.umich.edu
16397643Sgblack@eecs.umich.edu    // This mask selects bits of the FPSCR that actually go in the FpCondCodes
16407643Sgblack@eecs.umich.edu    // integer register to allow renaming.
16417783SGiacomo.Gabrielli@arm.com    static const uint32_t FpCondCodesMask = 0xF0000000;
16427783SGiacomo.Gabrielli@arm.com    // This mask selects the cumulative FP exception flags of the FPSCR.
16437783SGiacomo.Gabrielli@arm.com    static const uint32_t FpscrExcMask = 0x0000009F;
16447783SGiacomo.Gabrielli@arm.com    // This mask selects the cumulative saturation flag of the FPSCR.
16457783SGiacomo.Gabrielli@arm.com    static const uint32_t FpscrQcMask = 0x08000000;
16467643Sgblack@eecs.umich.edu
16477640Sgblack@eecs.umich.edu    BitUnion32(FPEXC)
16487640Sgblack@eecs.umich.edu        Bitfield<31> ex;
16497640Sgblack@eecs.umich.edu        Bitfield<30> en;
16507640Sgblack@eecs.umich.edu        Bitfield<29, 0> subArchDefined;
16517640Sgblack@eecs.umich.edu    EndBitUnion(FPEXC)
16527640Sgblack@eecs.umich.edu
16537383Sgblack@eecs.umich.edu    BitUnion32(MVFR0)
16547383Sgblack@eecs.umich.edu        Bitfield<3, 0> advSimdRegisters;
16557383Sgblack@eecs.umich.edu        Bitfield<7, 4> singlePrecision;
16567383Sgblack@eecs.umich.edu        Bitfield<11, 8> doublePrecision;
16577383Sgblack@eecs.umich.edu        Bitfield<15, 12> vfpExceptionTrapping;
16587383Sgblack@eecs.umich.edu        Bitfield<19, 16> divide;
16597383Sgblack@eecs.umich.edu        Bitfield<23, 20> squareRoot;
16607383Sgblack@eecs.umich.edu        Bitfield<27, 24> shortVectors;
16617383Sgblack@eecs.umich.edu        Bitfield<31, 28> roundingModes;
16627383Sgblack@eecs.umich.edu    EndBitUnion(MVFR0)
16637383Sgblack@eecs.umich.edu
16647383Sgblack@eecs.umich.edu    BitUnion32(MVFR1)
16657383Sgblack@eecs.umich.edu        Bitfield<3, 0> flushToZero;
16667383Sgblack@eecs.umich.edu        Bitfield<7, 4> defaultNaN;
16677383Sgblack@eecs.umich.edu        Bitfield<11, 8> advSimdLoadStore;
16687383Sgblack@eecs.umich.edu        Bitfield<15, 12> advSimdInteger;
16697383Sgblack@eecs.umich.edu        Bitfield<19, 16> advSimdSinglePrecision;
16707383Sgblack@eecs.umich.edu        Bitfield<23, 20> advSimdHalfPrecision;
16717383Sgblack@eecs.umich.edu        Bitfield<27, 24> vfpHalfPrecision;
16727383Sgblack@eecs.umich.edu        Bitfield<31, 28> raz;
16737383Sgblack@eecs.umich.edu    EndBitUnion(MVFR1)
16747404SAli.Saidi@ARM.com
167510037SARM gem5 Developers    BitUnion64(TTBCR)
167610037SARM gem5 Developers        // Short-descriptor translation table format
167710037SARM gem5 Developers        Bitfield<2, 0> n;
167810037SARM gem5 Developers        Bitfield<4> pd0;
167910037SARM gem5 Developers        Bitfield<5> pd1;
168010037SARM gem5 Developers        // Long-descriptor translation table format
168110037SARM gem5 Developers        Bitfield<5, 0> t0sz;
168210037SARM gem5 Developers        Bitfield<7> epd0;
168310037SARM gem5 Developers        Bitfield<9, 8> irgn0;
168410037SARM gem5 Developers        Bitfield<11, 10> orgn0;
168510037SARM gem5 Developers        Bitfield<13, 12> sh0;
168610037SARM gem5 Developers        Bitfield<14> tg0;
168710037SARM gem5 Developers        Bitfield<21, 16> t1sz;
168810037SARM gem5 Developers        Bitfield<22> a1;
168910037SARM gem5 Developers        Bitfield<23> epd1;
169010037SARM gem5 Developers        Bitfield<25, 24> irgn1;
169110037SARM gem5 Developers        Bitfield<27, 26> orgn1;
169210037SARM gem5 Developers        Bitfield<29, 28> sh1;
169310037SARM gem5 Developers        Bitfield<30> tg1;
169410037SARM gem5 Developers        Bitfield<34, 32> ips;
169510037SARM gem5 Developers        Bitfield<36> as;
169610037SARM gem5 Developers        Bitfield<37> tbi0;
169710037SARM gem5 Developers        Bitfield<38> tbi1;
169810037SARM gem5 Developers        // Common
169910037SARM gem5 Developers        Bitfield<31> eae;
170010037SARM gem5 Developers        // TCR_EL2/3 (AArch64)
170110037SARM gem5 Developers        Bitfield<18, 16> ps;
170210037SARM gem5 Developers        Bitfield<20> tbi;
170310037SARM gem5 Developers    EndBitUnion(TTBCR)
170410037SARM gem5 Developers
170510324SCurtis.Dunham@arm.com    // Fields of TCR_EL{1,2,3} (mostly overlapping)
170610324SCurtis.Dunham@arm.com    // TCR_EL1 is natively 64 bits, the others are 32 bits
170710324SCurtis.Dunham@arm.com    BitUnion64(TCR)
170810324SCurtis.Dunham@arm.com        Bitfield<5, 0> t0sz;
170910324SCurtis.Dunham@arm.com        Bitfield<7> epd0; // EL1
171010324SCurtis.Dunham@arm.com        Bitfield<9, 8> irgn0;
171110324SCurtis.Dunham@arm.com        Bitfield<11, 10> orgn0;
171210324SCurtis.Dunham@arm.com        Bitfield<13, 12> sh0;
171310324SCurtis.Dunham@arm.com        Bitfield<15, 14> tg0;
171410324SCurtis.Dunham@arm.com        Bitfield<18, 16> ps;
171510324SCurtis.Dunham@arm.com        Bitfield<20> tbi; // EL2/EL3
171610324SCurtis.Dunham@arm.com        Bitfield<21, 16> t1sz; // EL1
171710324SCurtis.Dunham@arm.com        Bitfield<22> a1; // EL1
171810324SCurtis.Dunham@arm.com        Bitfield<23> epd1; // EL1
171910324SCurtis.Dunham@arm.com        Bitfield<25, 24> irgn1; // EL1
172010324SCurtis.Dunham@arm.com        Bitfield<27, 26> orgn1; // EL1
172110324SCurtis.Dunham@arm.com        Bitfield<29, 28> sh1; // EL1
172210324SCurtis.Dunham@arm.com        Bitfield<31, 30> tg1; // EL1
172310324SCurtis.Dunham@arm.com        Bitfield<34, 32> ips; // EL1
172410324SCurtis.Dunham@arm.com        Bitfield<36> as; // EL1
172510324SCurtis.Dunham@arm.com        Bitfield<37> tbi0; // EL1
172610324SCurtis.Dunham@arm.com        Bitfield<38> tbi1; // EL1
172710324SCurtis.Dunham@arm.com    EndBitUnion(TCR)
172810324SCurtis.Dunham@arm.com
172910037SARM gem5 Developers    BitUnion32(HTCR)
173010037SARM gem5 Developers        Bitfield<2, 0> t0sz;
173110037SARM gem5 Developers        Bitfield<9, 8> irgn0;
173210037SARM gem5 Developers        Bitfield<11, 10> orgn0;
173310037SARM gem5 Developers        Bitfield<13, 12> sh0;
173410037SARM gem5 Developers    EndBitUnion(HTCR)
173510037SARM gem5 Developers
173610037SARM gem5 Developers    BitUnion32(VTCR_t)
173710037SARM gem5 Developers        Bitfield<3, 0> t0sz;
173810037SARM gem5 Developers        Bitfield<4> s;
173911575SDylan.Johnson@ARM.com        Bitfield<5, 0> t0sz64;
174010037SARM gem5 Developers        Bitfield<7, 6> sl0;
174110037SARM gem5 Developers        Bitfield<9, 8> irgn0;
174210037SARM gem5 Developers        Bitfield<11, 10> orgn0;
174310037SARM gem5 Developers        Bitfield<13, 12> sh0;
174411575SDylan.Johnson@ARM.com        Bitfield<15, 14> tg0;
174510037SARM gem5 Developers    EndBitUnion(VTCR_t)
174610037SARM gem5 Developers
17477404SAli.Saidi@ARM.com    BitUnion32(PRRR)
17487404SAli.Saidi@ARM.com       Bitfield<1,0> tr0;
17497404SAli.Saidi@ARM.com       Bitfield<3,2> tr1;
17507404SAli.Saidi@ARM.com       Bitfield<5,4> tr2;
17517404SAli.Saidi@ARM.com       Bitfield<7,6> tr3;
17527404SAli.Saidi@ARM.com       Bitfield<9,8> tr4;
17537404SAli.Saidi@ARM.com       Bitfield<11,10> tr5;
17547404SAli.Saidi@ARM.com       Bitfield<13,12> tr6;
17557404SAli.Saidi@ARM.com       Bitfield<15,14> tr7;
17567404SAli.Saidi@ARM.com       Bitfield<16> ds0;
17577404SAli.Saidi@ARM.com       Bitfield<17> ds1;
17587404SAli.Saidi@ARM.com       Bitfield<18> ns0;
17597404SAli.Saidi@ARM.com       Bitfield<19> ns1;
17607404SAli.Saidi@ARM.com       Bitfield<24> nos0;
17617404SAli.Saidi@ARM.com       Bitfield<25> nos1;
17627404SAli.Saidi@ARM.com       Bitfield<26> nos2;
17637404SAli.Saidi@ARM.com       Bitfield<27> nos3;
17647404SAli.Saidi@ARM.com       Bitfield<28> nos4;
17657404SAli.Saidi@ARM.com       Bitfield<29> nos5;
17667404SAli.Saidi@ARM.com       Bitfield<30> nos6;
17677404SAli.Saidi@ARM.com       Bitfield<31> nos7;
17687404SAli.Saidi@ARM.com   EndBitUnion(PRRR)
17697404SAli.Saidi@ARM.com
17707404SAli.Saidi@ARM.com   BitUnion32(NMRR)
17717404SAli.Saidi@ARM.com       Bitfield<1,0> ir0;
17727404SAli.Saidi@ARM.com       Bitfield<3,2> ir1;
17737404SAli.Saidi@ARM.com       Bitfield<5,4> ir2;
17747404SAli.Saidi@ARM.com       Bitfield<7,6> ir3;
17757404SAli.Saidi@ARM.com       Bitfield<9,8> ir4;
17767404SAli.Saidi@ARM.com       Bitfield<11,10> ir5;
17777404SAli.Saidi@ARM.com       Bitfield<13,12> ir6;
17787404SAli.Saidi@ARM.com       Bitfield<15,14> ir7;
17797404SAli.Saidi@ARM.com       Bitfield<17,16> or0;
17807404SAli.Saidi@ARM.com       Bitfield<19,18> or1;
17817404SAli.Saidi@ARM.com       Bitfield<21,20> or2;
17827404SAli.Saidi@ARM.com       Bitfield<23,22> or3;
17837404SAli.Saidi@ARM.com       Bitfield<25,24> or4;
17847404SAli.Saidi@ARM.com       Bitfield<27,26> or5;
17857404SAli.Saidi@ARM.com       Bitfield<29,28> or6;
17867404SAli.Saidi@ARM.com       Bitfield<31,30> or7;
17877404SAli.Saidi@ARM.com   EndBitUnion(NMRR)
17887404SAli.Saidi@ARM.com
17898552Sdaniel.johnson@arm.com   BitUnion32(CONTEXTIDR)
17908552Sdaniel.johnson@arm.com      Bitfield<7,0>  asid;
17918552Sdaniel.johnson@arm.com      Bitfield<31,8> procid;
17928552Sdaniel.johnson@arm.com   EndBitUnion(CONTEXTIDR)
17938552Sdaniel.johnson@arm.com
17948549Sdaniel.johnson@arm.com   BitUnion32(L2CTLR)
17958549Sdaniel.johnson@arm.com      Bitfield<2,0>   sataRAMLatency;
17968549Sdaniel.johnson@arm.com      Bitfield<4,3>   reserved_4_3;
17978549Sdaniel.johnson@arm.com      Bitfield<5>     dataRAMSetup;
17988549Sdaniel.johnson@arm.com      Bitfield<8,6>   tagRAMLatency;
17998549Sdaniel.johnson@arm.com      Bitfield<9>     tagRAMSetup;
18008549Sdaniel.johnson@arm.com      Bitfield<11,10> dataRAMSlice;
18018549Sdaniel.johnson@arm.com      Bitfield<12>    tagRAMSlice;
18028549Sdaniel.johnson@arm.com      Bitfield<20,13> reserved_20_13;
18038549Sdaniel.johnson@arm.com      Bitfield<21>    eccandParityEnable;
18048549Sdaniel.johnson@arm.com      Bitfield<22>    reserved_22;
18058549Sdaniel.johnson@arm.com      Bitfield<23>    interptCtrlPresent;
18068549Sdaniel.johnson@arm.com      Bitfield<25,24> numCPUs;
18078549Sdaniel.johnson@arm.com      Bitfield<30,26> reserved_30_26;
18088549Sdaniel.johnson@arm.com      Bitfield<31>    l2rstDISABLE_monitor;
18098549Sdaniel.johnson@arm.com   EndBitUnion(L2CTLR)
18108549Sdaniel.johnson@arm.com
18119130Satgutier@umich.edu   BitUnion32(CTR)
18129130Satgutier@umich.edu      Bitfield<3,0>   iCacheLineSize;
18139130Satgutier@umich.edu      Bitfield<13,4>  raz_13_4;
18149130Satgutier@umich.edu      Bitfield<15,14> l1IndexPolicy;
18159130Satgutier@umich.edu      Bitfield<19,16> dCacheLineSize;
18169130Satgutier@umich.edu      Bitfield<23,20> erg;
18179130Satgutier@umich.edu      Bitfield<27,24> cwg;
18189130Satgutier@umich.edu      Bitfield<28>    raz_28;
18199130Satgutier@umich.edu      Bitfield<31,29> format;
18209130Satgutier@umich.edu   EndBitUnion(CTR)
182110037SARM gem5 Developers
182210037SARM gem5 Developers   BitUnion32(PMSELR)
182310037SARM gem5 Developers      Bitfield<4, 0> sel;
182410037SARM gem5 Developers   EndBitUnion(PMSELR)
182510037SARM gem5 Developers
182610037SARM gem5 Developers    BitUnion64(PAR)
182710037SARM gem5 Developers        // 64-bit format
182810037SARM gem5 Developers        Bitfield<63, 56> attr;
182910037SARM gem5 Developers        Bitfield<39, 12> pa;
183010037SARM gem5 Developers        Bitfield<11>     lpae;
183110037SARM gem5 Developers        Bitfield<9>      ns;
183210037SARM gem5 Developers        Bitfield<8, 7>   sh;
183310037SARM gem5 Developers        Bitfield<0>      f;
183410037SARM gem5 Developers   EndBitUnion(PAR)
183510037SARM gem5 Developers
183610037SARM gem5 Developers   BitUnion32(ESR)
183710037SARM gem5 Developers        Bitfield<31, 26> ec;
183810037SARM gem5 Developers        Bitfield<25> il;
183910037SARM gem5 Developers        Bitfield<15, 0> imm16;
184010037SARM gem5 Developers   EndBitUnion(ESR)
184110037SARM gem5 Developers
184210037SARM gem5 Developers   BitUnion32(CPTR)
184310037SARM gem5 Developers        Bitfield<31> tcpac;
184410037SARM gem5 Developers        Bitfield<20> tta;
184510037SARM gem5 Developers        Bitfield<13, 12> res1_13_12_el2;
184610037SARM gem5 Developers        Bitfield<10> tfp;
184710037SARM gem5 Developers        Bitfield<9, 0> res1_9_0_el2;
184810037SARM gem5 Developers   EndBitUnion(CPTR)
184910037SARM gem5 Developers
185010037SARM gem5 Developers
185111939Snikos.nikoleris@arm.com    /**
185211939Snikos.nikoleris@arm.com     * Check for permission to read coprocessor registers.
185311939Snikos.nikoleris@arm.com     *
185411939Snikos.nikoleris@arm.com     * Checks whether an instruction at the current program mode has
185511939Snikos.nikoleris@arm.com     * permissions to read the coprocessor registers. This function
185611939Snikos.nikoleris@arm.com     * returns whether the check is undefined and if not whether the
185711939Snikos.nikoleris@arm.com     * read access is permitted.
185811939Snikos.nikoleris@arm.com     *
185911939Snikos.nikoleris@arm.com     * @param the misc reg indicating the coprocessor
186011939Snikos.nikoleris@arm.com     * @param the SCR
186111939Snikos.nikoleris@arm.com     * @param the CPSR
186211939Snikos.nikoleris@arm.com     * @return a tuple of booleans: can_read, undefined
186311939Snikos.nikoleris@arm.com     */
186411939Snikos.nikoleris@arm.com    std::tuple<bool, bool> canReadCoprocReg(MiscRegIndex reg, SCR scr,
186511939Snikos.nikoleris@arm.com                                           CPSR cpsr);
186610037SARM gem5 Developers
186711939Snikos.nikoleris@arm.com    /**
186811939Snikos.nikoleris@arm.com     * Check for permission to write coprocessor registers.
186911939Snikos.nikoleris@arm.com     *
187011939Snikos.nikoleris@arm.com     * Checks whether an instruction at the current program mode has
187111939Snikos.nikoleris@arm.com     * permissions to write the coprocessor registers. This function
187211939Snikos.nikoleris@arm.com     * returns whether the check is undefined and if not whether the
187311939Snikos.nikoleris@arm.com     * write access is permitted.
187411939Snikos.nikoleris@arm.com     *
187511939Snikos.nikoleris@arm.com     * @param the misc reg indicating the coprocessor
187611939Snikos.nikoleris@arm.com     * @param the SCR
187711939Snikos.nikoleris@arm.com     * @param the CPSR
187811939Snikos.nikoleris@arm.com     * @return a tuple of booleans: can_write, undefined
187911939Snikos.nikoleris@arm.com     */
188011939Snikos.nikoleris@arm.com    std::tuple<bool, bool> canWriteCoprocReg(MiscRegIndex reg, SCR scr,
188111939Snikos.nikoleris@arm.com                                             CPSR cpsr);
188210037SARM gem5 Developers
188310037SARM gem5 Developers    // Checks read access permissions to AArch64 system registers
188410037SARM gem5 Developers    bool canReadAArch64SysReg(MiscRegIndex reg, SCR scr, CPSR cpsr,
188510037SARM gem5 Developers                              ThreadContext *tc);
188610037SARM gem5 Developers
188710037SARM gem5 Developers    // Checks write access permissions to AArch64 system registers
188810037SARM gem5 Developers    bool canWriteAArch64SysReg(MiscRegIndex reg, SCR scr, CPSR cpsr,
188910037SARM gem5 Developers                               ThreadContext *tc);
189010037SARM gem5 Developers
189110037SARM gem5 Developers    // Uses just the scr.ns bit to pre flatten the misc regs. This is useful
189210037SARM gem5 Developers    // for MCR/MRC instructions
189310037SARM gem5 Developers    int
189412499Sgiacomo.travaglini@arm.com    snsBankedIndex(MiscRegIndex reg, ThreadContext *tc);
189510037SARM gem5 Developers
189610037SARM gem5 Developers    // Flattens a misc reg index using the specified security state. This is
189710037SARM gem5 Developers    // used for opperations (eg address translations) where the security
189810037SARM gem5 Developers    // state of the register access may differ from the current state of the
189910037SARM gem5 Developers    // processor
190010037SARM gem5 Developers    int
190112499Sgiacomo.travaglini@arm.com    snsBankedIndex(MiscRegIndex reg, ThreadContext *tc, bool ns);
190210037SARM gem5 Developers
190310037SARM gem5 Developers    // Takes a misc reg index and returns the root reg if its one of a set of
190410037SARM gem5 Developers    // banked registers
190510037SARM gem5 Developers    void
190610037SARM gem5 Developers    preUnflattenMiscReg();
190710037SARM gem5 Developers
190810037SARM gem5 Developers    int
190910037SARM gem5 Developers    unflattenMiscReg(int reg);
191010037SARM gem5 Developers
19118902Sandreas.hansson@arm.com}
19126242Sgblack@eecs.umich.edu
19136242Sgblack@eecs.umich.edu#endif // __ARCH_ARM_MISCREGS_HH__
1914