miscregs.cc (12373:6fdbcd214a3d) miscregs.cc (12479:c686e4a1fe8f)
1/*
2 * Copyright (c) 2010-2013, 2015-2017 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 114 unchanged lines hidden (view full) ---

123 // If we get here then it must be a register that we haven't implemented
124 warn("CP14 unimplemented crn[%d], opc1[%d], crm[%d], opc2[%d]",
125 crn, opc1, crm, opc2);
126 return MISCREG_CP14_UNIMPL;
127}
128
129using namespace std;
130
1/*
2 * Copyright (c) 2010-2013, 2015-2017 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 114 unchanged lines hidden (view full) ---

123 // If we get here then it must be a register that we haven't implemented
124 warn("CP14 unimplemented crn[%d], opc1[%d], crm[%d], opc2[%d]",
125 crn, opc1, crm, opc2);
126 return MISCREG_CP14_UNIMPL;
127}
128
129using namespace std;
130
131bitset<NUM_MISCREG_INFOS> miscRegInfo[NUM_MISCREGS] = {
132 // MISCREG_CPSR
133 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
134 // MISCREG_SPSR
135 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
136 // MISCREG_SPSR_FIQ
137 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
138 // MISCREG_SPSR_IRQ
139 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
140 // MISCREG_SPSR_SVC
141 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
142 // MISCREG_SPSR_MON
143 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
144 // MISCREG_SPSR_ABT
145 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
146 // MISCREG_SPSR_HYP
147 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
148 // MISCREG_SPSR_UND
149 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
150 // MISCREG_ELR_HYP
151 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
152 // MISCREG_FPSID
153 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
154 // MISCREG_FPSCR
155 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
156 // MISCREG_MVFR1
157 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
158 // MISCREG_MVFR0
159 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
160 // MISCREG_FPEXC
161 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
162
163 // Helper registers
164 // MISCREG_CPSR_MODE
165 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
166 // MISCREG_CPSR_Q
167 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
168 // MISCREG_FPSCR_Q
169 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
170 // MISCREG_FPSCR_EXC
171 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
172 // MISCREG_LOCKADDR
173 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
174 // MISCREG_LOCKFLAG
175 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
176 // MISCREG_PRRR_MAIR0
177 bitset<NUM_MISCREG_INFOS>(string("00000000000000011001")),
178 // MISCREG_PRRR_MAIR0_NS
179 bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
180 // MISCREG_PRRR_MAIR0_S
181 bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
182 // MISCREG_NMRR_MAIR1
183 bitset<NUM_MISCREG_INFOS>(string("00000000000000011001")),
184 // MISCREG_NMRR_MAIR1_NS
185 bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
186 // MISCREG_NMRR_MAIR1_S
187 bitset<NUM_MISCREG_INFOS>(string("00000000000000101001")),
188 // MISCREG_PMXEVTYPER_PMCCFILTR
189 bitset<NUM_MISCREG_INFOS>(string("00000000000000001001")),
190 // MISCREG_SCTLR_RST
191 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
192 // MISCREG_SEV_MAILBOX
193 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
194
195 // AArch32 CP14 registers
196 // MISCREG_DBGDIDR
197 bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
198 // MISCREG_DBGDSCRint
199 bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
200 // MISCREG_DBGDCCINT
201 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
202 // MISCREG_DBGDTRTXint
203 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
204 // MISCREG_DBGDTRRXint
205 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
206 // MISCREG_DBGWFAR
207 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
208 // MISCREG_DBGVCR
209 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
210 // MISCREG_DBGDTRRXext
211 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
212 // MISCREG_DBGDSCRext
213 bitset<NUM_MISCREG_INFOS>(string("11111111111111000100")),
214 // MISCREG_DBGDTRTXext
215 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
216 // MISCREG_DBGOSECCR
217 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
218 // MISCREG_DBGBVR0
219 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
220 // MISCREG_DBGBVR1
221 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
222 // MISCREG_DBGBVR2
223 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
224 // MISCREG_DBGBVR3
225 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
226 // MISCREG_DBGBVR4
227 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
228 // MISCREG_DBGBVR5
229 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
230 // MISCREG_DBGBCR0
231 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
232 // MISCREG_DBGBCR1
233 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
234 // MISCREG_DBGBCR2
235 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
236 // MISCREG_DBGBCR3
237 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
238 // MISCREG_DBGBCR4
239 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
240 // MISCREG_DBGBCR5
241 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
242 // MISCREG_DBGWVR0
243 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
244 // MISCREG_DBGWVR1
245 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
246 // MISCREG_DBGWVR2
247 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
248 // MISCREG_DBGWVR3
249 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
250 // MISCREG_DBGWCR0
251 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
252 // MISCREG_DBGWCR1
253 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
254 // MISCREG_DBGWCR2
255 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
256 // MISCREG_DBGWCR3
257 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
258 // MISCREG_DBGDRAR
259 bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
260 // MISCREG_DBGBXVR4
261 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
262 // MISCREG_DBGBXVR5
263 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
264 // MISCREG_DBGOSLAR
265 bitset<NUM_MISCREG_INFOS>(string("10101111111111000000")),
266 // MISCREG_DBGOSLSR
267 bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
268 // MISCREG_DBGOSDLR
269 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
270 // MISCREG_DBGPRCR
271 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
272 // MISCREG_DBGDSAR
273 bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
274 // MISCREG_DBGCLAIMSET
275 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
276 // MISCREG_DBGCLAIMCLR
277 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
278 // MISCREG_DBGAUTHSTATUS
279 bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
280 // MISCREG_DBGDEVID2
281 bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
282 // MISCREG_DBGDEVID1
283 bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
284 // MISCREG_DBGDEVID0
285 bitset<NUM_MISCREG_INFOS>(string("01011111111111000000")),
286 // MISCREG_TEECR
287 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
288 // MISCREG_JIDR
289 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
290 // MISCREG_TEEHBR
291 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
292 // MISCREG_JOSCR
293 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
294 // MISCREG_JMCR
295 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
296
297 // AArch32 CP15 registers
298 // MISCREG_MIDR
299 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
300 // MISCREG_CTR
301 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
302 // MISCREG_TCMTR
303 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
304 // MISCREG_TLBTR
305 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
306 // MISCREG_MPIDR
307 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
308 // MISCREG_REVIDR
309 bitset<NUM_MISCREG_INFOS>(string("01010101010000000100")),
310 // MISCREG_ID_PFR0
311 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
312 // MISCREG_ID_PFR1
313 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
314 // MISCREG_ID_DFR0
315 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
316 // MISCREG_ID_AFR0
317 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
318 // MISCREG_ID_MMFR0
319 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
320 // MISCREG_ID_MMFR1
321 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
322 // MISCREG_ID_MMFR2
323 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
324 // MISCREG_ID_MMFR3
325 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
326 // MISCREG_ID_ISAR0
327 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
328 // MISCREG_ID_ISAR1
329 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
330 // MISCREG_ID_ISAR2
331 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
332 // MISCREG_ID_ISAR3
333 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
334 // MISCREG_ID_ISAR4
335 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
336 // MISCREG_ID_ISAR5
337 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
338 // MISCREG_CCSIDR
339 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
340 // MISCREG_CLIDR
341 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
342 // MISCREG_AIDR
343 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
344 // MISCREG_CSSELR
345 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
346 // MISCREG_CSSELR_NS
347 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
348 // MISCREG_CSSELR_S
349 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
350 // MISCREG_VPIDR
351 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
352 // MISCREG_VMPIDR
353 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
354 // MISCREG_SCTLR
355 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
356 // MISCREG_SCTLR_NS
357 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
358 // MISCREG_SCTLR_S
359 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
360 // MISCREG_ACTLR
361 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
362 // MISCREG_ACTLR_NS
363 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
364 // MISCREG_ACTLR_S
365 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
366 // MISCREG_CPACR
367 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
368 // MISCREG_SCR
369 bitset<NUM_MISCREG_INFOS>(string("11110011000000000001")),
370 // MISCREG_SDER
371 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
372 // MISCREG_NSACR
373 bitset<NUM_MISCREG_INFOS>(string("11110111010000000001")),
374 // MISCREG_HSCTLR
375 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
376 // MISCREG_HACTLR
377 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
378 // MISCREG_HCR
379 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
380 // MISCREG_HDCR
381 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
382 // MISCREG_HCPTR
383 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
384 // MISCREG_HSTR
385 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
386 // MISCREG_HACR
387 bitset<NUM_MISCREG_INFOS>(string("11001100000000000100")),
388 // MISCREG_TTBR0
389 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
390 // MISCREG_TTBR0_NS
391 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
392 // MISCREG_TTBR0_S
393 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
394 // MISCREG_TTBR1
395 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
396 // MISCREG_TTBR1_NS
397 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
398 // MISCREG_TTBR1_S
399 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
400 // MISCREG_TTBCR
401 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
402 // MISCREG_TTBCR_NS
403 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
404 // MISCREG_TTBCR_S
405 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
406 // MISCREG_HTCR
407 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
408 // MISCREG_VTCR
409 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
410 // MISCREG_DACR
411 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
412 // MISCREG_DACR_NS
413 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
414 // MISCREG_DACR_S
415 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
416 // MISCREG_DFSR
417 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
418 // MISCREG_DFSR_NS
419 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
420 // MISCREG_DFSR_S
421 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
422 // MISCREG_IFSR
423 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
424 // MISCREG_IFSR_NS
425 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
426 // MISCREG_IFSR_S
427 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
428 // MISCREG_ADFSR
429 bitset<NUM_MISCREG_INFOS>(string("00000000000000010100")),
430 // MISCREG_ADFSR_NS
431 bitset<NUM_MISCREG_INFOS>(string("11001111110000100100")),
432 // MISCREG_ADFSR_S
433 bitset<NUM_MISCREG_INFOS>(string("00110011000000100100")),
434 // MISCREG_AIFSR
435 bitset<NUM_MISCREG_INFOS>(string("00000000000000010100")),
436 // MISCREG_AIFSR_NS
437 bitset<NUM_MISCREG_INFOS>(string("11001111110000100100")),
438 // MISCREG_AIFSR_S
439 bitset<NUM_MISCREG_INFOS>(string("00110011000000100100")),
440 // MISCREG_HADFSR
441 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
442 // MISCREG_HAIFSR
443 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
444 // MISCREG_HSR
445 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
446 // MISCREG_DFAR
447 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
448 // MISCREG_DFAR_NS
449 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
450 // MISCREG_DFAR_S
451 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
452 // MISCREG_IFAR
453 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
454 // MISCREG_IFAR_NS
455 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
456 // MISCREG_IFAR_S
457 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
458 // MISCREG_HDFAR
459 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
460 // MISCREG_HIFAR
461 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
462 // MISCREG_HPFAR
463 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
464 // MISCREG_ICIALLUIS
465 bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
466 // MISCREG_BPIALLIS
467 bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
468 // MISCREG_PAR
469 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
470 // MISCREG_PAR_NS
471 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
472 // MISCREG_PAR_S
473 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
474 // MISCREG_ICIALLU
475 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
476 // MISCREG_ICIMVAU
477 bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
478 // MISCREG_CP15ISB
479 bitset<NUM_MISCREG_INFOS>(string("10101010101010000001")),
480 // MISCREG_BPIALL
481 bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
482 // MISCREG_BPIMVA
483 bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
484 // MISCREG_DCIMVAC
485 bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
486 // MISCREG_DCISW
487 bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
488 // MISCREG_ATS1CPR
489 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
490 // MISCREG_ATS1CPW
491 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
492 // MISCREG_ATS1CUR
493 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
494 // MISCREG_ATS1CUW
495 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
496 // MISCREG_ATS12NSOPR
497 bitset<NUM_MISCREG_INFOS>(string("10101010000000000001")),
498 // MISCREG_ATS12NSOPW
499 bitset<NUM_MISCREG_INFOS>(string("10101010000000000001")),
500 // MISCREG_ATS12NSOUR
501 bitset<NUM_MISCREG_INFOS>(string("10101010000000000001")),
502 // MISCREG_ATS12NSOUW
503 bitset<NUM_MISCREG_INFOS>(string("10101010000000000001")),
504 // MISCREG_DCCMVAC
505 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
506 // MISCREG_DCCSW
507 bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
508 // MISCREG_CP15DSB
509 bitset<NUM_MISCREG_INFOS>(string("10101010101010000001")),
510 // MISCREG_CP15DMB
511 bitset<NUM_MISCREG_INFOS>(string("10101010101010000001")),
512 // MISCREG_DCCMVAU
513 bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
514 // MISCREG_DCCIMVAC
515 bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
516 // MISCREG_DCCISW
517 bitset<NUM_MISCREG_INFOS>(string("10101010100000000100")),
518 // MISCREG_ATS1HR
519 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
520 // MISCREG_ATS1HW
521 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
522 // MISCREG_TLBIALLIS
523 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
524 // MISCREG_TLBIMVAIS
525 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
526 // MISCREG_TLBIASIDIS
527 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
528 // MISCREG_TLBIMVAAIS
529 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
530 // MISCREG_TLBIMVALIS
531 bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
532 // MISCREG_TLBIMVAALIS
533 bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
534 // MISCREG_ITLBIALL
535 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
536 // MISCREG_ITLBIMVA
537 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
538 // MISCREG_ITLBIASID
539 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
540 // MISCREG_DTLBIALL
541 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
542 // MISCREG_DTLBIMVA
543 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
544 // MISCREG_DTLBIASID
545 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
546 // MISCREG_TLBIALL
547 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
548 // MISCREG_TLBIMVA
549 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
550 // MISCREG_TLBIASID
551 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
552 // MISCREG_TLBIMVAA
553 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
554 // MISCREG_TLBIMVAL
555 bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
556 // MISCREG_TLBIMVAAL
557 bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
558 // MISCREG_TLBIIPAS2IS
559 bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
560 // MISCREG_TLBIIPAS2LIS
561 bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
562 // MISCREG_TLBIALLHIS
563 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
564 // MISCREG_TLBIMVAHIS
565 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
566 // MISCREG_TLBIALLNSNHIS
567 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
568 // MISCREG_TLBIMVALHIS
569 bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
570 // MISCREG_TLBIIPAS2
571 bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
572 // MISCREG_TLBIIPAS2L
573 bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
574 // MISCREG_TLBIALLH
575 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
576 // MISCREG_TLBIMVAH
577 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
578 // MISCREG_TLBIALLNSNH
579 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
580 // MISCREG_TLBIMVALH
581 bitset<NUM_MISCREG_INFOS>(string("10001000000000000000")),
582 // MISCREG_PMCR
583 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
584 // MISCREG_PMCNTENSET
585 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
586 // MISCREG_PMCNTENCLR
587 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
588 // MISCREG_PMOVSR
589 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
590 // MISCREG_PMSWINC
591 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
592 // MISCREG_PMSELR
593 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
594 // MISCREG_PMCEID0
595 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
596 // MISCREG_PMCEID1
597 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
598 // MISCREG_PMCCNTR
599 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
600 // MISCREG_PMXEVTYPER
601 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
602 // MISCREG_PMCCFILTR
603 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
604 // MISCREG_PMXEVCNTR
605 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
606 // MISCREG_PMUSERENR
607 bitset<NUM_MISCREG_INFOS>(string("11111111110101000001")),
608 // MISCREG_PMINTENSET
609 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
610 // MISCREG_PMINTENCLR
611 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
612 // MISCREG_PMOVSSET
613 bitset<NUM_MISCREG_INFOS>(string("11111111111111000000")),
614 // MISCREG_L2CTLR
615 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
616 // MISCREG_L2ECTLR
617 bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
618 // MISCREG_PRRR
619 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
620 // MISCREG_PRRR_NS
621 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
622 // MISCREG_PRRR_S
623 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
624 // MISCREG_MAIR0
625 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
626 // MISCREG_MAIR0_NS
627 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
628 // MISCREG_MAIR0_S
629 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
630 // MISCREG_NMRR
631 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
632 // MISCREG_NMRR_NS
633 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
634 // MISCREG_NMRR_S
635 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
636 // MISCREG_MAIR1
637 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
638 // MISCREG_MAIR1_NS
639 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
640 // MISCREG_MAIR1_S
641 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
642 // MISCREG_AMAIR0
643 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
644 // MISCREG_AMAIR0_NS
645 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
646 // MISCREG_AMAIR0_S
647 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
648 // MISCREG_AMAIR1
649 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
650 // MISCREG_AMAIR1_NS
651 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
652 // MISCREG_AMAIR1_S
653 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
654 // MISCREG_HMAIR0
655 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
656 // MISCREG_HMAIR1
657 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
658 // MISCREG_HAMAIR0
659 bitset<NUM_MISCREG_INFOS>(string("11001100000000000100")),
660 // MISCREG_HAMAIR1
661 bitset<NUM_MISCREG_INFOS>(string("11001100000000000100")),
662 // MISCREG_VBAR
663 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
664 // MISCREG_VBAR_NS
665 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
666 // MISCREG_VBAR_S
667 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
668 // MISCREG_MVBAR
669 bitset<NUM_MISCREG_INFOS>(string("11110011000000000001")),
670 // MISCREG_RMR
671 bitset<NUM_MISCREG_INFOS>(string("11110011000000000000")),
672 // MISCREG_ISR
673 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
674 // MISCREG_HVBAR
675 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
676 // MISCREG_FCSEIDR
677 bitset<NUM_MISCREG_INFOS>(string("11111111110000000100")),
678 // MISCREG_CONTEXTIDR
679 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
680 // MISCREG_CONTEXTIDR_NS
681 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
682 // MISCREG_CONTEXTIDR_S
683 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
684 // MISCREG_TPIDRURW
685 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
686 // MISCREG_TPIDRURW_NS
687 bitset<NUM_MISCREG_INFOS>(string("11001111111111100001")),
688 // MISCREG_TPIDRURW_S
689 bitset<NUM_MISCREG_INFOS>(string("00110011001100100001")),
690 // MISCREG_TPIDRURO
691 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
692 // MISCREG_TPIDRURO_NS
693 bitset<NUM_MISCREG_INFOS>(string("11001111110101100001")),
694 // MISCREG_TPIDRURO_S
695 bitset<NUM_MISCREG_INFOS>(string("00110011000100100001")),
696 // MISCREG_TPIDRPRW
697 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
698 // MISCREG_TPIDRPRW_NS
699 bitset<NUM_MISCREG_INFOS>(string("11001111110000100001")),
700 // MISCREG_TPIDRPRW_S
701 bitset<NUM_MISCREG_INFOS>(string("00110011000000100001")),
702 // MISCREG_HTPIDR
703 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
704 // MISCREG_CNTFRQ
705 bitset<NUM_MISCREG_INFOS>(string("11110101010101000011")),
706 // MISCREG_CNTKCTL
707 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
708 // MISCREG_CNTP_TVAL
709 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
710 // MISCREG_CNTP_TVAL_NS
711 bitset<NUM_MISCREG_INFOS>(string("11001111111111100001")),
712 // MISCREG_CNTP_TVAL_S
713 bitset<NUM_MISCREG_INFOS>(string("00110011001111100000")),
714 // MISCREG_CNTP_CTL
715 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
716 // MISCREG_CNTP_CTL_NS
717 bitset<NUM_MISCREG_INFOS>(string("11001111111111100001")),
718 // MISCREG_CNTP_CTL_S
719 bitset<NUM_MISCREG_INFOS>(string("00110011001111100000")),
720 // MISCREG_CNTV_TVAL
721 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
722 // MISCREG_CNTV_CTL
723 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
724 // MISCREG_CNTHCTL
725 bitset<NUM_MISCREG_INFOS>(string("01001000000000000000")),
726 // MISCREG_CNTHP_TVAL
727 bitset<NUM_MISCREG_INFOS>(string("01001000000000000000")),
728 // MISCREG_CNTHP_CTL
729 bitset<NUM_MISCREG_INFOS>(string("01001000000000000000")),
730 // MISCREG_IL1DATA0
731 bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
732 // MISCREG_IL1DATA1
733 bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
734 // MISCREG_IL1DATA2
735 bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
736 // MISCREG_IL1DATA3
737 bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
738 // MISCREG_DL1DATA0
739 bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
740 // MISCREG_DL1DATA1
741 bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
742 // MISCREG_DL1DATA2
743 bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
744 // MISCREG_DL1DATA3
745 bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
746 // MISCREG_DL1DATA4
747 bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
748 // MISCREG_RAMINDEX
749 bitset<NUM_MISCREG_INFOS>(string("10101010100000000000")),
750 // MISCREG_L2ACTLR
751 bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
752 // MISCREG_CBAR
753 bitset<NUM_MISCREG_INFOS>(string("01010101010000000000")),
754 // MISCREG_HTTBR
755 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
756 // MISCREG_VTTBR
757 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
758 // MISCREG_CNTPCT
759 bitset<NUM_MISCREG_INFOS>(string("01010101010101000001")),
760 // MISCREG_CNTVCT
761 bitset<NUM_MISCREG_INFOS>(string("01010101010101000011")),
762 // MISCREG_CNTP_CVAL
763 bitset<NUM_MISCREG_INFOS>(string("00000000000000010001")),
764 // MISCREG_CNTP_CVAL_NS
765 bitset<NUM_MISCREG_INFOS>(string("11001111111111100001")),
766 // MISCREG_CNTP_CVAL_S
767 bitset<NUM_MISCREG_INFOS>(string("00110011001111100000")),
768 // MISCREG_CNTV_CVAL
769 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
770 // MISCREG_CNTVOFF
771 bitset<NUM_MISCREG_INFOS>(string("11001100000000000001")),
772 // MISCREG_CNTHP_CVAL
773 bitset<NUM_MISCREG_INFOS>(string("01001000000000000000")),
774 // MISCREG_CPUMERRSR
775 bitset<NUM_MISCREG_INFOS>(string("11111111110000000000")),
776 // MISCREG_L2MERRSR
777 bitset<NUM_MISCREG_INFOS>(string("11111111110000000100")),
778
779 // AArch64 registers (Op0=2)
780 // MISCREG_MDCCINT_EL1
781 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
782 // MISCREG_OSDTRRX_EL1
783 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
784 // MISCREG_MDSCR_EL1
785 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
786 // MISCREG_OSDTRTX_EL1
787 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
788 // MISCREG_OSECCR_EL1
789 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
790 // MISCREG_DBGBVR0_EL1
791 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
792 // MISCREG_DBGBVR1_EL1
793 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
794 // MISCREG_DBGBVR2_EL1
795 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
796 // MISCREG_DBGBVR3_EL1
797 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
798 // MISCREG_DBGBVR4_EL1
799 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
800 // MISCREG_DBGBVR5_EL1
801 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
802 // MISCREG_DBGBCR0_EL1
803 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
804 // MISCREG_DBGBCR1_EL1
805 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
806 // MISCREG_DBGBCR2_EL1
807 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
808 // MISCREG_DBGBCR3_EL1
809 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
810 // MISCREG_DBGBCR4_EL1
811 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
812 // MISCREG_DBGBCR5_EL1
813 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
814 // MISCREG_DBGWVR0_EL1
815 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
816 // MISCREG_DBGWVR1_EL1
817 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
818 // MISCREG_DBGWVR2_EL1
819 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
820 // MISCREG_DBGWVR3_EL1
821 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
822 // MISCREG_DBGWCR0_EL1
823 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
824 // MISCREG_DBGWCR1_EL1
825 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
826 // MISCREG_DBGWCR2_EL1
827 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
828 // MISCREG_DBGWCR3_EL1
829 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
830 // MISCREG_MDCCSR_EL0
831 bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
832 // MISCREG_MDDTR_EL0
833 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
834 // MISCREG_MDDTRTX_EL0
835 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
836 // MISCREG_MDDTRRX_EL0
837 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
838 // MISCREG_DBGVCR32_EL2
839 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
840 // MISCREG_MDRAR_EL1
841 bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
842 // MISCREG_OSLAR_EL1
843 bitset<NUM_MISCREG_INFOS>(string("10101111111111000001")),
844 // MISCREG_OSLSR_EL1
845 bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
846 // MISCREG_OSDLR_EL1
847 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
848 // MISCREG_DBGPRCR_EL1
849 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
850 // MISCREG_DBGCLAIMSET_EL1
851 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
852 // MISCREG_DBGCLAIMCLR_EL1
853 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
854 // MISCREG_DBGAUTHSTATUS_EL1
855 bitset<NUM_MISCREG_INFOS>(string("01011111111111000001")),
856 // MISCREG_TEECR32_EL1
857 bitset<NUM_MISCREG_INFOS>(string("00000000000000000001")),
858 // MISCREG_TEEHBR32_EL1
859 bitset<NUM_MISCREG_INFOS>(string("00000000000000000001")),
860
861 // AArch64 registers (Op0=1,3)
862 // MISCREG_MIDR_EL1
863 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
864 // MISCREG_MPIDR_EL1
865 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
866 // MISCREG_REVIDR_EL1
867 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
868 // MISCREG_ID_PFR0_EL1
869 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
870 // MISCREG_ID_PFR1_EL1
871 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
872 // MISCREG_ID_DFR0_EL1
873 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
874 // MISCREG_ID_AFR0_EL1
875 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
876 // MISCREG_ID_MMFR0_EL1
877 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
878 // MISCREG_ID_MMFR1_EL1
879 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
880 // MISCREG_ID_MMFR2_EL1
881 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
882 // MISCREG_ID_MMFR3_EL1
883 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
884 // MISCREG_ID_ISAR0_EL1
885 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
886 // MISCREG_ID_ISAR1_EL1
887 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
888 // MISCREG_ID_ISAR2_EL1
889 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
890 // MISCREG_ID_ISAR3_EL1
891 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
892 // MISCREG_ID_ISAR4_EL1
893 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
894 // MISCREG_ID_ISAR5_EL1
895 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
896 // MISCREG_MVFR0_EL1
897 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
898 // MISCREG_MVFR1_EL1
899 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
900 // MISCREG_MVFR2_EL1
901 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
902 // MISCREG_ID_AA64PFR0_EL1
903 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
904 // MISCREG_ID_AA64PFR1_EL1
905 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
906 // MISCREG_ID_AA64DFR0_EL1
907 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
908 // MISCREG_ID_AA64DFR1_EL1
909 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
910 // MISCREG_ID_AA64AFR0_EL1
911 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
912 // MISCREG_ID_AA64AFR1_EL1
913 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
914 // MISCREG_ID_AA64ISAR0_EL1
915 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
916 // MISCREG_ID_AA64ISAR1_EL1
917 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
918 // MISCREG_ID_AA64MMFR0_EL1
919 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
920 // MISCREG_ID_AA64MMFR1_EL1
921 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
922 // MISCREG_CCSIDR_EL1
923 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
924 // MISCREG_CLIDR_EL1
925 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
926 // MISCREG_AIDR_EL1
927 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
928 // MISCREG_CSSELR_EL1
929 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
930 // MISCREG_CTR_EL0
931 bitset<NUM_MISCREG_INFOS>(string("01010101010101000001")),
932 // MISCREG_DCZID_EL0
933 bitset<NUM_MISCREG_INFOS>(string("01010101010101000001")),
934 // MISCREG_VPIDR_EL2
935 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
936 // MISCREG_VMPIDR_EL2
937 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
938 // MISCREG_SCTLR_EL1
939 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
940 // MISCREG_ACTLR_EL1
941 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
942 // MISCREG_CPACR_EL1
943 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
944 // MISCREG_SCTLR_EL2
945 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
946 // MISCREG_ACTLR_EL2
947 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
948 // MISCREG_HCR_EL2
949 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
950 // MISCREG_MDCR_EL2
951 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
952 // MISCREG_CPTR_EL2
953 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
954 // MISCREG_HSTR_EL2
955 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
956 // MISCREG_HACR_EL2
957 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
958 // MISCREG_SCTLR_EL3
959 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
960 // MISCREG_ACTLR_EL3
961 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
962 // MISCREG_SCR_EL3
963 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
964 // MISCREG_SDER32_EL3
965 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
966 // MISCREG_CPTR_EL3
967 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
968 // MISCREG_MDCR_EL3
969 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
970 // MISCREG_TTBR0_EL1
971 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
972 // MISCREG_TTBR1_EL1
973 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
974 // MISCREG_TCR_EL1
975 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
976 // MISCREG_TTBR0_EL2
977 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
978 // MISCREG_TCR_EL2
979 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
980 // MISCREG_VTTBR_EL2
981 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
982 // MISCREG_VTCR_EL2
983 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
984 // MISCREG_TTBR0_EL3
985 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
986 // MISCREG_TCR_EL3
987 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
988 // MISCREG_DACR32_EL2
989 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
990 // MISCREG_SPSR_EL1
991 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
992 // MISCREG_ELR_EL1
993 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
994 // MISCREG_SP_EL0
995 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
996 // MISCREG_SPSEL
997 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
998 // MISCREG_CURRENTEL
999 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
1000 // MISCREG_NZCV
1001 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1002 // MISCREG_DAIF
1003 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1004 // MISCREG_FPCR
1005 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1006 // MISCREG_FPSR
1007 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1008 // MISCREG_DSPSR_EL0
1009 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1010 // MISCREG_DLR_EL0
1011 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1012 // MISCREG_SPSR_EL2
1013 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1014 // MISCREG_ELR_EL2
1015 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1016 // MISCREG_SP_EL1
1017 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1018 // MISCREG_SPSR_IRQ_AA64
1019 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1020 // MISCREG_SPSR_ABT_AA64
1021 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1022 // MISCREG_SPSR_UND_AA64
1023 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1024 // MISCREG_SPSR_FIQ_AA64
1025 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1026 // MISCREG_SPSR_EL3
1027 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
1028 // MISCREG_ELR_EL3
1029 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
1030 // MISCREG_SP_EL2
1031 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
1032 // MISCREG_AFSR0_EL1
1033 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1034 // MISCREG_AFSR1_EL1
1035 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1036 // MISCREG_ESR_EL1
1037 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1038 // MISCREG_IFSR32_EL2
1039 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1040 // MISCREG_AFSR0_EL2
1041 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1042 // MISCREG_AFSR1_EL2
1043 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1044 // MISCREG_ESR_EL2
1045 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1046 // MISCREG_FPEXC32_EL2
1047 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1048 // MISCREG_AFSR0_EL3
1049 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
1050 // MISCREG_AFSR1_EL3
1051 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
1052 // MISCREG_ESR_EL3
1053 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
1054 // MISCREG_FAR_EL1
1055 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1056 // MISCREG_FAR_EL2
1057 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1058 // MISCREG_HPFAR_EL2
1059 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1060 // MISCREG_FAR_EL3
1061 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
1062 // MISCREG_IC_IALLUIS
1063 bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
1064 // MISCREG_PAR_EL1
1065 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1066 // MISCREG_IC_IALLU
1067 bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
1068 // MISCREG_DC_IVAC_Xt
1069 bitset<NUM_MISCREG_INFOS>(string("10101010101010000101")),
1070 // MISCREG_DC_ISW_Xt
1071 bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
1072 // MISCREG_AT_S1E1R_Xt
1073 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1074 // MISCREG_AT_S1E1W_Xt
1075 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1076 // MISCREG_AT_S1E0R_Xt
1077 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1078 // MISCREG_AT_S1E0W_Xt
1079 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1080 // MISCREG_DC_CSW_Xt
1081 bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
1082 // MISCREG_DC_CISW_Xt
1083 bitset<NUM_MISCREG_INFOS>(string("10101010100000000101")),
1084 // MISCREG_DC_ZVA_Xt
1085 bitset<NUM_MISCREG_INFOS>(string("10101010100010000101")),
1086 // MISCREG_IC_IVAU_Xt
1087 bitset<NUM_MISCREG_INFOS>(string("10101010101010000001")),
1088 // MISCREG_DC_CVAC_Xt
1089 bitset<NUM_MISCREG_INFOS>(string("10101010101010000101")),
1090 // MISCREG_DC_CVAU_Xt
1091 bitset<NUM_MISCREG_INFOS>(string("10101010101010000101")),
1092 // MISCREG_DC_CIVAC_Xt
1093 bitset<NUM_MISCREG_INFOS>(string("10101010101010000101")),
1094 // MISCREG_AT_S1E2R_Xt
1095 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
1096 // MISCREG_AT_S1E2W_Xt
1097 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
1098 // MISCREG_AT_S12E1R_Xt
1099 bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
1100 // MISCREG_AT_S12E1W_Xt
1101 bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
1102 // MISCREG_AT_S12E0R_Xt
1103 bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
1104 // MISCREG_AT_S12E0W_Xt
1105 bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
1106 // MISCREG_AT_S1E3R_Xt
1107 bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
1108 // MISCREG_AT_S1E3W_Xt
1109 bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
1110 // MISCREG_TLBI_VMALLE1IS
1111 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1112 // MISCREG_TLBI_VAE1IS_Xt
1113 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1114 // MISCREG_TLBI_ASIDE1IS_Xt
1115 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1116 // MISCREG_TLBI_VAAE1IS_Xt
1117 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1118 // MISCREG_TLBI_VALE1IS_Xt
1119 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1120 // MISCREG_TLBI_VAALE1IS_Xt
1121 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1122 // MISCREG_TLBI_VMALLE1
1123 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1124 // MISCREG_TLBI_VAE1_Xt
1125 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1126 // MISCREG_TLBI_ASIDE1_Xt
1127 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1128 // MISCREG_TLBI_VAAE1_Xt
1129 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1130 // MISCREG_TLBI_VALE1_Xt
1131 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1132 // MISCREG_TLBI_VAALE1_Xt
1133 bitset<NUM_MISCREG_INFOS>(string("10101010100000000001")),
1134 // MISCREG_TLBI_IPAS2E1IS_Xt
1135 bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
1136 // MISCREG_TLBI_IPAS2LE1IS_Xt
1137 bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
1138 // MISCREG_TLBI_ALLE2IS
1139 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
1140 // MISCREG_TLBI_VAE2IS_Xt
1141 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
1142 // MISCREG_TLBI_ALLE1IS
1143 bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
1144 // MISCREG_TLBI_VALE2IS_Xt
1145 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
1146 // MISCREG_TLBI_VMALLS12E1IS
1147 bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
1148 // MISCREG_TLBI_IPAS2E1_Xt
1149 bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
1150 // MISCREG_TLBI_IPAS2LE1_Xt
1151 bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
1152 // MISCREG_TLBI_ALLE2
1153 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
1154 // MISCREG_TLBI_VAE2_Xt
1155 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
1156 // MISCREG_TLBI_ALLE1
1157 bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
1158 // MISCREG_TLBI_VALE2_Xt
1159 bitset<NUM_MISCREG_INFOS>(string("10001000000000000001")),
1160 // MISCREG_TLBI_VMALLS12E1
1161 bitset<NUM_MISCREG_INFOS>(string("10101000000000000001")),
1162 // MISCREG_TLBI_ALLE3IS
1163 bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
1164 // MISCREG_TLBI_VAE3IS_Xt
1165 bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
1166 // MISCREG_TLBI_VALE3IS_Xt
1167 bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
1168 // MISCREG_TLBI_ALLE3
1169 bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
1170 // MISCREG_TLBI_VAE3_Xt
1171 bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
1172 // MISCREG_TLBI_VALE3_Xt
1173 bitset<NUM_MISCREG_INFOS>(string("10100000000000000001")),
1174 // MISCREG_PMINTENSET_EL1
1175 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1176 // MISCREG_PMINTENCLR_EL1
1177 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1178 // MISCREG_PMCR_EL0
1179 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1180 // MISCREG_PMCNTENSET_EL0
1181 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1182 // MISCREG_PMCNTENCLR_EL0
1183 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1184 // MISCREG_PMOVSCLR_EL0
1185 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1186 // MISCREG_PMSWINC_EL0
1187 bitset<NUM_MISCREG_INFOS>(string("10101010101111000001")),
1188 // MISCREG_PMSELR_EL0
1189 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1190 // MISCREG_PMCEID0_EL0
1191 bitset<NUM_MISCREG_INFOS>(string("01010101011111000001")),
1192 // MISCREG_PMCEID1_EL0
1193 bitset<NUM_MISCREG_INFOS>(string("01010101011111000001")),
1194 // MISCREG_PMCCNTR_EL0
1195 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1196 // MISCREG_PMXEVTYPER_EL0
1197 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1198 // MISCREG_PMCCFILTR_EL0
1199 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1200 // MISCREG_PMXEVCNTR_EL0
1201 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1202 // MISCREG_PMUSERENR_EL0
1203 bitset<NUM_MISCREG_INFOS>(string("11111111110101000001")),
1204 // MISCREG_PMOVSSET_EL0
1205 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1206 // MISCREG_MAIR_EL1
1207 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1208 // MISCREG_AMAIR_EL1
1209 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1210 // MISCREG_MAIR_EL2
1211 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1212 // MISCREG_AMAIR_EL2
1213 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1214 // MISCREG_MAIR_EL3
1215 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
1216 // MISCREG_AMAIR_EL3
1217 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
1218 // MISCREG_L2CTLR_EL1
1219 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1220 // MISCREG_L2ECTLR_EL1
1221 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1222 // MISCREG_VBAR_EL1
1223 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1224 // MISCREG_RVBAR_EL1
1225 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
1226 // MISCREG_ISR_EL1
1227 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
1228 // MISCREG_VBAR_EL2
1229 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1230 // MISCREG_RVBAR_EL2
1231 bitset<NUM_MISCREG_INFOS>(string("01010100000000000001")),
1232 // MISCREG_VBAR_EL3
1233 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
1234 // MISCREG_RVBAR_EL3
1235 bitset<NUM_MISCREG_INFOS>(string("01010000000000000001")),
1236 // MISCREG_RMR_EL3
1237 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
1238 // MISCREG_CONTEXTIDR_EL1
1239 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1240 // MISCREG_TPIDR_EL1
1241 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1242 // MISCREG_TPIDR_EL0
1243 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1244 // MISCREG_TPIDRRO_EL0
1245 bitset<NUM_MISCREG_INFOS>(string("11111111110101000001")),
1246 // MISCREG_TPIDR_EL2
1247 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1248 // MISCREG_TPIDR_EL3
1249 bitset<NUM_MISCREG_INFOS>(string("11110000000000000001")),
1250 // MISCREG_CNTKCTL_EL1
1251 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1252 // MISCREG_CNTFRQ_EL0
1253 bitset<NUM_MISCREG_INFOS>(string("11110101010101000001")),
1254 // MISCREG_CNTPCT_EL0
1255 bitset<NUM_MISCREG_INFOS>(string("01010101010101000001")),
1256 // MISCREG_CNTVCT_EL0
1257 bitset<NUM_MISCREG_INFOS>(string("01010101010101000011")),
1258 // MISCREG_CNTP_TVAL_EL0
1259 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1260 // MISCREG_CNTP_CTL_EL0
1261 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1262 // MISCREG_CNTP_CVAL_EL0
1263 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1264 // MISCREG_CNTV_TVAL_EL0
1265 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1266 // MISCREG_CNTV_CTL_EL0
1267 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1268 // MISCREG_CNTV_CVAL_EL0
1269 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1270 // MISCREG_PMEVCNTR0_EL0
1271 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1272 // MISCREG_PMEVCNTR1_EL0
1273 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1274 // MISCREG_PMEVCNTR2_EL0
1275 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1276 // MISCREG_PMEVCNTR3_EL0
1277 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1278 // MISCREG_PMEVCNTR4_EL0
1279 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1280 // MISCREG_PMEVCNTR5_EL0
1281 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1282 // MISCREG_PMEVTYPER0_EL0
1283 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1284 // MISCREG_PMEVTYPER1_EL0
1285 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1286 // MISCREG_PMEVTYPER2_EL0
1287 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1288 // MISCREG_PMEVTYPER3_EL0
1289 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1290 // MISCREG_PMEVTYPER4_EL0
1291 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1292 // MISCREG_PMEVTYPER5_EL0
1293 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1294 // MISCREG_CNTVOFF_EL2
1295 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1296 // MISCREG_CNTHCTL_EL2
1297 bitset<NUM_MISCREG_INFOS>(string("01111000000000000100")),
1298 // MISCREG_CNTHP_TVAL_EL2
1299 bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
1300 // MISCREG_CNTHP_CTL_EL2
1301 bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
1302 // MISCREG_CNTHP_CVAL_EL2
1303 bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
1304 // MISCREG_CNTPS_TVAL_EL1
1305 bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
1306 // MISCREG_CNTPS_CTL_EL1
1307 bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
1308 // MISCREG_CNTPS_CVAL_EL1
1309 bitset<NUM_MISCREG_INFOS>(string("01111000000000000000")),
1310 // MISCREG_IL1DATA0_EL1
1311 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1312 // MISCREG_IL1DATA1_EL1
1313 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1314 // MISCREG_IL1DATA2_EL1
1315 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1316 // MISCREG_IL1DATA3_EL1
1317 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1318 // MISCREG_DL1DATA0_EL1
1319 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1320 // MISCREG_DL1DATA1_EL1
1321 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1322 // MISCREG_DL1DATA2_EL1
1323 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1324 // MISCREG_DL1DATA3_EL1
1325 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1326 // MISCREG_DL1DATA4_EL1
1327 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1328 // MISCREG_L2ACTLR_EL1
1329 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1330 // MISCREG_CPUACTLR_EL1
1331 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1332 // MISCREG_CPUECTLR_EL1
1333 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1334 // MISCREG_CPUMERRSR_EL1
1335 bitset<NUM_MISCREG_INFOS>(string("11111111110000000001")),
1336 // MISCREG_L2MERRSR_EL1
1337 bitset<NUM_MISCREG_INFOS>(string("11111111110000000100")),
1338 // MISCREG_CBAR_EL1
1339 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
1340 // MISCREG_CONTEXTIDR_EL2
1341 bitset<NUM_MISCREG_INFOS>(string("11111100000000000001")),
1342
1343 // Dummy registers
1344 // MISCREG_NOP
1345 bitset<NUM_MISCREG_INFOS>(string("11111111111111000001")),
1346 // MISCREG_RAZ
1347 bitset<NUM_MISCREG_INFOS>(string("01010101010000000001")),
1348 // MISCREG_CP14_UNIMPL
1349 bitset<NUM_MISCREG_INFOS>(string("00000000000000000100")),
1350 // MISCREG_CP15_UNIMPL
1351 bitset<NUM_MISCREG_INFOS>(string("00000000000000000100")),
1352 // MISCREG_A64_UNIMPL
1353 bitset<NUM_MISCREG_INFOS>(string("00000000000000000100")),
1354 // MISCREG_UNKNOWN
1355 bitset<NUM_MISCREG_INFOS>(string("00000000000000000001"))
1356};
1357
1358MiscRegIndex
1359decodeCP15Reg(unsigned crn, unsigned opc1, unsigned crm, unsigned opc2)
1360{
1361 switch (crn) {
1362 case 0:
1363 switch (opc1) {
1364 case 0:
1365 switch (crm) {

--- 2190 unchanged lines hidden (view full) ---

3556 break;
3557 }
3558 break;
3559 }
3560
3561 return MISCREG_UNKNOWN;
3562}
3563
131MiscRegIndex
132decodeCP15Reg(unsigned crn, unsigned opc1, unsigned crm, unsigned opc2)
133{
134 switch (crn) {
135 case 0:
136 switch (opc1) {
137 case 0:
138 switch (crm) {

--- 2190 unchanged lines hidden (view full) ---

2329 break;
2330 }
2331 break;
2332 }
2333
2334 return MISCREG_UNKNOWN;
2335}
2336
2337bitset<NUM_MISCREG_INFOS> miscRegInfo[NUM_MISCREGS]; // initialized below
2338
2339void
2340ISA::initializeMiscRegMetadata()
2341{
2342 // the MiscReg metadata tables are shared across all instances of the
2343 // ISA object, so there's no need to initialize them multiple times.
2344 static bool completed = false;
2345 if (completed)
2346 return;
2347
2348 /**
2349 * Some registers alias with others, and therefore need to be translated.
2350 * When two mapping registers are given, they are the 32b lower and
2351 * upper halves, respectively, of the 64b register being mapped.
2352 * aligned with reference documentation ARM DDI 0487A.i pp 1540-1543
2353 *
2354 * NAM = "not architecturally mandated",
2355 * from ARM DDI 0487A.i, template text
2356 * "AArch64 System register ___ can be mapped to
2357 * AArch32 System register ___, but this is not
2358 * architecturally mandated."
2359 */
2360
2361 InitReg(MISCREG_CPSR)
2362 .allPrivileges();
2363 InitReg(MISCREG_SPSR)
2364 .allPrivileges();
2365 InitReg(MISCREG_SPSR_FIQ)
2366 .allPrivileges();
2367 InitReg(MISCREG_SPSR_IRQ)
2368 .allPrivileges();
2369 InitReg(MISCREG_SPSR_SVC)
2370 .allPrivileges();
2371 InitReg(MISCREG_SPSR_MON)
2372 .allPrivileges();
2373 InitReg(MISCREG_SPSR_ABT)
2374 .allPrivileges();
2375 InitReg(MISCREG_SPSR_HYP)
2376 .allPrivileges();
2377 InitReg(MISCREG_SPSR_UND)
2378 .allPrivileges();
2379 InitReg(MISCREG_ELR_HYP)
2380 .allPrivileges();
2381 InitReg(MISCREG_FPSID)
2382 .allPrivileges();
2383 InitReg(MISCREG_FPSCR)
2384 .allPrivileges();
2385 InitReg(MISCREG_MVFR1)
2386 .allPrivileges();
2387 InitReg(MISCREG_MVFR0)
2388 .allPrivileges();
2389 InitReg(MISCREG_FPEXC)
2390 .allPrivileges();
2391
2392 // Helper registers
2393 InitReg(MISCREG_CPSR_MODE)
2394 .allPrivileges();
2395 InitReg(MISCREG_CPSR_Q)
2396 .allPrivileges();
2397 InitReg(MISCREG_FPSCR_EXC)
2398 .allPrivileges();
2399 InitReg(MISCREG_FPSCR_QC)
2400 .allPrivileges();
2401 InitReg(MISCREG_LOCKADDR)
2402 .allPrivileges();
2403 InitReg(MISCREG_LOCKFLAG)
2404 .allPrivileges();
2405 InitReg(MISCREG_PRRR_MAIR0)
2406 .mutex()
2407 .banked();
2408 InitReg(MISCREG_PRRR_MAIR0_NS)
2409 .mutex()
2410 .bankedChild();
2411 InitReg(MISCREG_PRRR_MAIR0_S)
2412 .mutex()
2413 .bankedChild();
2414 InitReg(MISCREG_NMRR_MAIR1)
2415 .mutex()
2416 .banked();
2417 InitReg(MISCREG_NMRR_MAIR1_NS)
2418 .mutex()
2419 .bankedChild();
2420 InitReg(MISCREG_NMRR_MAIR1_S)
2421 .mutex()
2422 .bankedChild();
2423 InitReg(MISCREG_PMXEVTYPER_PMCCFILTR)
2424 .mutex();
2425 InitReg(MISCREG_SCTLR_RST)
2426 .allPrivileges();
2427 InitReg(MISCREG_SEV_MAILBOX)
2428 .allPrivileges();
2429
2430 // AArch32 CP14 registers
2431 InitReg(MISCREG_DBGDIDR)
2432 .allPrivileges().monSecureWrite(0).monNonSecureWrite(0);
2433 InitReg(MISCREG_DBGDSCRint)
2434 .allPrivileges().monSecureWrite(0).monNonSecureWrite(0);
2435 InitReg(MISCREG_DBGDCCINT)
2436 .unimplemented()
2437 .allPrivileges();
2438 InitReg(MISCREG_DBGDTRTXint)
2439 .unimplemented()
2440 .allPrivileges();
2441 InitReg(MISCREG_DBGDTRRXint)
2442 .unimplemented()
2443 .allPrivileges();
2444 InitReg(MISCREG_DBGWFAR)
2445 .unimplemented()
2446 .allPrivileges();
2447 InitReg(MISCREG_DBGVCR)
2448 .unimplemented()
2449 .allPrivileges();
2450 InitReg(MISCREG_DBGDTRRXext)
2451 .unimplemented()
2452 .allPrivileges();
2453 InitReg(MISCREG_DBGDSCRext)
2454 .unimplemented()
2455 .warnNotFail()
2456 .allPrivileges();
2457 InitReg(MISCREG_DBGDTRTXext)
2458 .unimplemented()
2459 .allPrivileges();
2460 InitReg(MISCREG_DBGOSECCR)
2461 .unimplemented()
2462 .allPrivileges();
2463 InitReg(MISCREG_DBGBVR0)
2464 .unimplemented()
2465 .allPrivileges();
2466 InitReg(MISCREG_DBGBVR1)
2467 .unimplemented()
2468 .allPrivileges();
2469 InitReg(MISCREG_DBGBVR2)
2470 .unimplemented()
2471 .allPrivileges();
2472 InitReg(MISCREG_DBGBVR3)
2473 .unimplemented()
2474 .allPrivileges();
2475 InitReg(MISCREG_DBGBVR4)
2476 .unimplemented()
2477 .allPrivileges();
2478 InitReg(MISCREG_DBGBVR5)
2479 .unimplemented()
2480 .allPrivileges();
2481 InitReg(MISCREG_DBGBCR0)
2482 .unimplemented()
2483 .allPrivileges();
2484 InitReg(MISCREG_DBGBCR1)
2485 .unimplemented()
2486 .allPrivileges();
2487 InitReg(MISCREG_DBGBCR2)
2488 .unimplemented()
2489 .allPrivileges();
2490 InitReg(MISCREG_DBGBCR3)
2491 .unimplemented()
2492 .allPrivileges();
2493 InitReg(MISCREG_DBGBCR4)
2494 .unimplemented()
2495 .allPrivileges();
2496 InitReg(MISCREG_DBGBCR5)
2497 .unimplemented()
2498 .allPrivileges();
2499 InitReg(MISCREG_DBGWVR0)
2500 .unimplemented()
2501 .allPrivileges();
2502 InitReg(MISCREG_DBGWVR1)
2503 .unimplemented()
2504 .allPrivileges();
2505 InitReg(MISCREG_DBGWVR2)
2506 .unimplemented()
2507 .allPrivileges();
2508 InitReg(MISCREG_DBGWVR3)
2509 .unimplemented()
2510 .allPrivileges();
2511 InitReg(MISCREG_DBGWCR0)
2512 .unimplemented()
2513 .allPrivileges();
2514 InitReg(MISCREG_DBGWCR1)
2515 .unimplemented()
2516 .allPrivileges();
2517 InitReg(MISCREG_DBGWCR2)
2518 .unimplemented()
2519 .allPrivileges();
2520 InitReg(MISCREG_DBGWCR3)
2521 .unimplemented()
2522 .allPrivileges();
2523 InitReg(MISCREG_DBGDRAR)
2524 .unimplemented()
2525 .allPrivileges().monSecureWrite(0).monNonSecureWrite(0);
2526 InitReg(MISCREG_DBGBXVR4)
2527 .unimplemented()
2528 .allPrivileges();
2529 InitReg(MISCREG_DBGBXVR5)
2530 .unimplemented()
2531 .allPrivileges();
2532 InitReg(MISCREG_DBGOSLAR)
2533 .unimplemented()
2534 .allPrivileges().monSecureRead(0).monNonSecureRead(0);
2535 InitReg(MISCREG_DBGOSLSR)
2536 .unimplemented()
2537 .allPrivileges().monSecureWrite(0).monNonSecureWrite(0);
2538 InitReg(MISCREG_DBGOSDLR)
2539 .unimplemented()
2540 .allPrivileges();
2541 InitReg(MISCREG_DBGPRCR)
2542 .unimplemented()
2543 .allPrivileges();
2544 InitReg(MISCREG_DBGDSAR)
2545 .unimplemented()
2546 .allPrivileges().monSecureWrite(0).monNonSecureWrite(0);
2547 InitReg(MISCREG_DBGCLAIMSET)
2548 .unimplemented()
2549 .allPrivileges();
2550 InitReg(MISCREG_DBGCLAIMCLR)
2551 .unimplemented()
2552 .allPrivileges();
2553 InitReg(MISCREG_DBGAUTHSTATUS)
2554 .unimplemented()
2555 .allPrivileges().monSecureWrite(0).monNonSecureWrite(0);
2556 InitReg(MISCREG_DBGDEVID2)
2557 .unimplemented()
2558 .allPrivileges().monSecureWrite(0).monNonSecureWrite(0);
2559 InitReg(MISCREG_DBGDEVID1)
2560 .unimplemented()
2561 .allPrivileges().monSecureWrite(0).monNonSecureWrite(0);
2562 InitReg(MISCREG_DBGDEVID0)
2563 .unimplemented()
2564 .allPrivileges().monSecureWrite(0).monNonSecureWrite(0);
2565 InitReg(MISCREG_TEECR)
2566 .unimplemented()
2567 .allPrivileges();
2568 InitReg(MISCREG_JIDR)
2569 .allPrivileges();
2570 InitReg(MISCREG_TEEHBR)
2571 .allPrivileges();
2572 InitReg(MISCREG_JOSCR)
2573 .allPrivileges();
2574 InitReg(MISCREG_JMCR)
2575 .allPrivileges();
2576
2577 // AArch32 CP15 registers
2578 InitReg(MISCREG_MIDR)
2579 .allPrivileges().exceptUserMode().writes(0);
2580 InitReg(MISCREG_CTR)
2581 .allPrivileges().exceptUserMode().writes(0);
2582 InitReg(MISCREG_TCMTR)
2583 .allPrivileges().exceptUserMode().writes(0);
2584 InitReg(MISCREG_TLBTR)
2585 .allPrivileges().exceptUserMode().writes(0);
2586 InitReg(MISCREG_MPIDR)
2587 .allPrivileges().exceptUserMode().writes(0);
2588 InitReg(MISCREG_REVIDR)
2589 .unimplemented()
2590 .warnNotFail()
2591 .allPrivileges().exceptUserMode().writes(0);
2592 InitReg(MISCREG_ID_PFR0)
2593 .allPrivileges().exceptUserMode().writes(0);
2594 InitReg(MISCREG_ID_PFR1)
2595 .allPrivileges().exceptUserMode().writes(0);
2596 InitReg(MISCREG_ID_DFR0)
2597 .allPrivileges().exceptUserMode().writes(0);
2598 InitReg(MISCREG_ID_AFR0)
2599 .allPrivileges().exceptUserMode().writes(0);
2600 InitReg(MISCREG_ID_MMFR0)
2601 .allPrivileges().exceptUserMode().writes(0);
2602 InitReg(MISCREG_ID_MMFR1)
2603 .allPrivileges().exceptUserMode().writes(0);
2604 InitReg(MISCREG_ID_MMFR2)
2605 .allPrivileges().exceptUserMode().writes(0);
2606 InitReg(MISCREG_ID_MMFR3)
2607 .allPrivileges().exceptUserMode().writes(0);
2608 InitReg(MISCREG_ID_ISAR0)
2609 .allPrivileges().exceptUserMode().writes(0);
2610 InitReg(MISCREG_ID_ISAR1)
2611 .allPrivileges().exceptUserMode().writes(0);
2612 InitReg(MISCREG_ID_ISAR2)
2613 .allPrivileges().exceptUserMode().writes(0);
2614 InitReg(MISCREG_ID_ISAR3)
2615 .allPrivileges().exceptUserMode().writes(0);
2616 InitReg(MISCREG_ID_ISAR4)
2617 .allPrivileges().exceptUserMode().writes(0);
2618 InitReg(MISCREG_ID_ISAR5)
2619 .allPrivileges().exceptUserMode().writes(0);
2620 InitReg(MISCREG_CCSIDR)
2621 .allPrivileges().exceptUserMode().writes(0);
2622 InitReg(MISCREG_CLIDR)
2623 .allPrivileges().exceptUserMode().writes(0);
2624 InitReg(MISCREG_AIDR)
2625 .allPrivileges().exceptUserMode().writes(0);
2626 InitReg(MISCREG_CSSELR)
2627 .banked();
2628 InitReg(MISCREG_CSSELR_NS)
2629 .bankedChild()
2630 .nonSecure().exceptUserMode();
2631 InitReg(MISCREG_CSSELR_S)
2632 .bankedChild()
2633 .secure().exceptUserMode();
2634 InitReg(MISCREG_VPIDR)
2635 .hyp().monNonSecure();
2636 InitReg(MISCREG_VMPIDR)
2637 .hyp().monNonSecure();
2638 InitReg(MISCREG_SCTLR)
2639 .banked();
2640 InitReg(MISCREG_SCTLR_NS)
2641 .bankedChild()
2642 .nonSecure().exceptUserMode();
2643 InitReg(MISCREG_SCTLR_S)
2644 .bankedChild()
2645 .secure().exceptUserMode();
2646 InitReg(MISCREG_ACTLR)
2647 .banked();
2648 InitReg(MISCREG_ACTLR_NS)
2649 .bankedChild()
2650 .nonSecure().exceptUserMode();
2651 InitReg(MISCREG_ACTLR_S)
2652 .bankedChild()
2653 .secure().exceptUserMode();
2654 InitReg(MISCREG_CPACR)
2655 .allPrivileges().exceptUserMode();
2656 InitReg(MISCREG_SCR)
2657 .mon().secure().exceptUserMode()
2658 .res0(0xff40) // [31:16], [6]
2659 .res1(0x0030); // [5:4]
2660 InitReg(MISCREG_SDER)
2661 .mon();
2662 InitReg(MISCREG_NSACR)
2663 .allPrivileges().hypWrite(0).privNonSecureWrite(0).exceptUserMode();
2664 InitReg(MISCREG_HSCTLR)
2665 .hyp().monNonSecure();
2666 InitReg(MISCREG_HACTLR)
2667 .hyp().monNonSecure();
2668 InitReg(MISCREG_HCR)
2669 .hyp().monNonSecure();
2670 InitReg(MISCREG_HDCR)
2671 .hyp().monNonSecure();
2672 InitReg(MISCREG_HCPTR)
2673 .hyp().monNonSecure();
2674 InitReg(MISCREG_HSTR)
2675 .hyp().monNonSecure();
2676 InitReg(MISCREG_HACR)
2677 .unimplemented()
2678 .warnNotFail()
2679 .hyp().monNonSecure();
2680 InitReg(MISCREG_TTBR0)
2681 .banked();
2682 InitReg(MISCREG_TTBR0_NS)
2683 .bankedChild()
2684 .nonSecure().exceptUserMode();
2685 InitReg(MISCREG_TTBR0_S)
2686 .bankedChild()
2687 .secure().exceptUserMode();
2688 InitReg(MISCREG_TTBR1)
2689 .banked();
2690 InitReg(MISCREG_TTBR1_NS)
2691 .bankedChild()
2692 .nonSecure().exceptUserMode();
2693 InitReg(MISCREG_TTBR1_S)
2694 .bankedChild()
2695 .secure().exceptUserMode();
2696 InitReg(MISCREG_TTBCR)
2697 .banked();
2698 InitReg(MISCREG_TTBCR_NS)
2699 .bankedChild()
2700 .nonSecure().exceptUserMode();
2701 InitReg(MISCREG_TTBCR_S)
2702 .bankedChild()
2703 .secure().exceptUserMode();
2704 InitReg(MISCREG_HTCR)
2705 .hyp().monNonSecure();
2706 InitReg(MISCREG_VTCR)
2707 .hyp().monNonSecure();
2708 InitReg(MISCREG_DACR)
2709 .banked();
2710 InitReg(MISCREG_DACR_NS)
2711 .bankedChild()
2712 .nonSecure().exceptUserMode();
2713 InitReg(MISCREG_DACR_S)
2714 .bankedChild()
2715 .secure().exceptUserMode();
2716 InitReg(MISCREG_DFSR)
2717 .banked();
2718 InitReg(MISCREG_DFSR_NS)
2719 .bankedChild()
2720 .nonSecure().exceptUserMode();
2721 InitReg(MISCREG_DFSR_S)
2722 .bankedChild()
2723 .secure().exceptUserMode();
2724 InitReg(MISCREG_IFSR)
2725 .banked();
2726 InitReg(MISCREG_IFSR_NS)
2727 .bankedChild()
2728 .nonSecure().exceptUserMode();
2729 InitReg(MISCREG_IFSR_S)
2730 .bankedChild()
2731 .secure().exceptUserMode();
2732 InitReg(MISCREG_ADFSR)
2733 .unimplemented()
2734 .warnNotFail()
2735 .banked();
2736 InitReg(MISCREG_ADFSR_NS)
2737 .unimplemented()
2738 .warnNotFail()
2739 .bankedChild()
2740 .nonSecure().exceptUserMode();
2741 InitReg(MISCREG_ADFSR_S)
2742 .unimplemented()
2743 .warnNotFail()
2744 .bankedChild()
2745 .secure().exceptUserMode();
2746 InitReg(MISCREG_AIFSR)
2747 .unimplemented()
2748 .warnNotFail()
2749 .banked();
2750 InitReg(MISCREG_AIFSR_NS)
2751 .unimplemented()
2752 .warnNotFail()
2753 .bankedChild()
2754 .nonSecure().exceptUserMode();
2755 InitReg(MISCREG_AIFSR_S)
2756 .unimplemented()
2757 .warnNotFail()
2758 .bankedChild()
2759 .secure().exceptUserMode();
2760 InitReg(MISCREG_HADFSR)
2761 .hyp().monNonSecure();
2762 InitReg(MISCREG_HAIFSR)
2763 .hyp().monNonSecure();
2764 InitReg(MISCREG_HSR)
2765 .hyp().monNonSecure();
2766 InitReg(MISCREG_DFAR)
2767 .banked();
2768 InitReg(MISCREG_DFAR_NS)
2769 .bankedChild()
2770 .nonSecure().exceptUserMode();
2771 InitReg(MISCREG_DFAR_S)
2772 .bankedChild()
2773 .secure().exceptUserMode();
2774 InitReg(MISCREG_IFAR)
2775 .banked();
2776 InitReg(MISCREG_IFAR_NS)
2777 .bankedChild()
2778 .nonSecure().exceptUserMode();
2779 InitReg(MISCREG_IFAR_S)
2780 .bankedChild()
2781 .secure().exceptUserMode();
2782 InitReg(MISCREG_HDFAR)
2783 .hyp().monNonSecure();
2784 InitReg(MISCREG_HIFAR)
2785 .hyp().monNonSecure();
2786 InitReg(MISCREG_HPFAR)
2787 .hyp().monNonSecure();
2788 InitReg(MISCREG_ICIALLUIS)
2789 .unimplemented()
2790 .warnNotFail()
2791 .writes(1).exceptUserMode();
2792 InitReg(MISCREG_BPIALLIS)
2793 .unimplemented()
2794 .warnNotFail()
2795 .writes(1).exceptUserMode();
2796 InitReg(MISCREG_PAR)
2797 .banked();
2798 InitReg(MISCREG_PAR_NS)
2799 .bankedChild()
2800 .nonSecure().exceptUserMode();
2801 InitReg(MISCREG_PAR_S)
2802 .bankedChild()
2803 .secure().exceptUserMode();
2804 InitReg(MISCREG_ICIALLU)
2805 .writes(1).exceptUserMode();
2806 InitReg(MISCREG_ICIMVAU)
2807 .unimplemented()
2808 .warnNotFail()
2809 .writes(1).exceptUserMode();
2810 InitReg(MISCREG_CP15ISB)
2811 .writes(1);
2812 InitReg(MISCREG_BPIALL)
2813 .unimplemented()
2814 .warnNotFail()
2815 .writes(1).exceptUserMode();
2816 InitReg(MISCREG_BPIMVA)
2817 .unimplemented()
2818 .warnNotFail()
2819 .writes(1).exceptUserMode();
2820 InitReg(MISCREG_DCIMVAC)
2821 .unimplemented()
2822 .warnNotFail()
2823 .writes(1).exceptUserMode();
2824 InitReg(MISCREG_DCISW)
2825 .unimplemented()
2826 .warnNotFail()
2827 .writes(1).exceptUserMode();
2828 InitReg(MISCREG_ATS1CPR)
2829 .writes(1).exceptUserMode();
2830 InitReg(MISCREG_ATS1CPW)
2831 .writes(1).exceptUserMode();
2832 InitReg(MISCREG_ATS1CUR)
2833 .writes(1).exceptUserMode();
2834 InitReg(MISCREG_ATS1CUW)
2835 .writes(1).exceptUserMode();
2836 InitReg(MISCREG_ATS12NSOPR)
2837 .privSecureWrite().hypWrite().monSecureWrite().monNonSecureWrite();
2838 InitReg(MISCREG_ATS12NSOPW)
2839 .privSecureWrite().hypWrite().monSecureWrite().monNonSecureWrite();
2840 InitReg(MISCREG_ATS12NSOUR)
2841 .privSecureWrite().hypWrite().monSecureWrite().monNonSecureWrite();
2842 InitReg(MISCREG_ATS12NSOUW)
2843 .privSecureWrite().hypWrite().monSecureWrite().monNonSecureWrite();
2844 InitReg(MISCREG_DCCMVAC)
2845 .writes(1).exceptUserMode();
2846 InitReg(MISCREG_DCCSW)
2847 .unimplemented()
2848 .warnNotFail()
2849 .writes(1).exceptUserMode();
2850 InitReg(MISCREG_CP15DSB)
2851 .writes(1);
2852 InitReg(MISCREG_CP15DMB)
2853 .writes(1);
2854 InitReg(MISCREG_DCCMVAU)
2855 .unimplemented()
2856 .warnNotFail()
2857 .writes(1).exceptUserMode();
2858 InitReg(MISCREG_DCCIMVAC)
2859 .unimplemented()
2860 .warnNotFail()
2861 .writes(1).exceptUserMode();
2862 InitReg(MISCREG_DCCISW)
2863 .unimplemented()
2864 .warnNotFail()
2865 .writes(1).exceptUserMode();
2866 InitReg(MISCREG_ATS1HR)
2867 .monNonSecureWrite().hypWrite();
2868 InitReg(MISCREG_ATS1HW)
2869 .monNonSecureWrite().hypWrite();
2870 InitReg(MISCREG_TLBIALLIS)
2871 .writes(1).exceptUserMode();
2872 InitReg(MISCREG_TLBIMVAIS)
2873 .writes(1).exceptUserMode();
2874 InitReg(MISCREG_TLBIASIDIS)
2875 .writes(1).exceptUserMode();
2876 InitReg(MISCREG_TLBIMVAAIS)
2877 .writes(1).exceptUserMode();
2878 InitReg(MISCREG_TLBIMVALIS)
2879 .unimplemented()
2880 .writes(1).exceptUserMode();
2881 InitReg(MISCREG_TLBIMVAALIS)
2882 .unimplemented()
2883 .writes(1).exceptUserMode();
2884 InitReg(MISCREG_ITLBIALL)
2885 .writes(1).exceptUserMode();
2886 InitReg(MISCREG_ITLBIMVA)
2887 .writes(1).exceptUserMode();
2888 InitReg(MISCREG_ITLBIASID)
2889 .writes(1).exceptUserMode();
2890 InitReg(MISCREG_DTLBIALL)
2891 .writes(1).exceptUserMode();
2892 InitReg(MISCREG_DTLBIMVA)
2893 .writes(1).exceptUserMode();
2894 InitReg(MISCREG_DTLBIASID)
2895 .writes(1).exceptUserMode();
2896 InitReg(MISCREG_TLBIALL)
2897 .writes(1).exceptUserMode();
2898 InitReg(MISCREG_TLBIMVA)
2899 .writes(1).exceptUserMode();
2900 InitReg(MISCREG_TLBIASID)
2901 .writes(1).exceptUserMode();
2902 InitReg(MISCREG_TLBIMVAA)
2903 .writes(1).exceptUserMode();
2904 InitReg(MISCREG_TLBIMVAL)
2905 .unimplemented()
2906 .writes(1).exceptUserMode();
2907 InitReg(MISCREG_TLBIMVAAL)
2908 .unimplemented()
2909 .writes(1).exceptUserMode();
2910 InitReg(MISCREG_TLBIIPAS2IS)
2911 .unimplemented()
2912 .monNonSecureWrite().hypWrite();
2913 InitReg(MISCREG_TLBIIPAS2LIS)
2914 .unimplemented()
2915 .monNonSecureWrite().hypWrite();
2916 InitReg(MISCREG_TLBIALLHIS)
2917 .monNonSecureWrite().hypWrite();
2918 InitReg(MISCREG_TLBIMVAHIS)
2919 .monNonSecureWrite().hypWrite();
2920 InitReg(MISCREG_TLBIALLNSNHIS)
2921 .monNonSecureWrite().hypWrite();
2922 InitReg(MISCREG_TLBIMVALHIS)
2923 .unimplemented()
2924 .monNonSecureWrite().hypWrite();
2925 InitReg(MISCREG_TLBIIPAS2)
2926 .unimplemented()
2927 .monNonSecureWrite().hypWrite();
2928 InitReg(MISCREG_TLBIIPAS2L)
2929 .unimplemented()
2930 .monNonSecureWrite().hypWrite();
2931 InitReg(MISCREG_TLBIALLH)
2932 .monNonSecureWrite().hypWrite();
2933 InitReg(MISCREG_TLBIMVAH)
2934 .monNonSecureWrite().hypWrite();
2935 InitReg(MISCREG_TLBIALLNSNH)
2936 .monNonSecureWrite().hypWrite();
2937 InitReg(MISCREG_TLBIMVALH)
2938 .unimplemented()
2939 .monNonSecureWrite().hypWrite();
2940 InitReg(MISCREG_PMCR)
2941 .allPrivileges();
2942 InitReg(MISCREG_PMCNTENSET)
2943 .allPrivileges();
2944 InitReg(MISCREG_PMCNTENCLR)
2945 .allPrivileges();
2946 InitReg(MISCREG_PMOVSR)
2947 .allPrivileges();
2948 InitReg(MISCREG_PMSWINC)
2949 .allPrivileges();
2950 InitReg(MISCREG_PMSELR)
2951 .allPrivileges();
2952 InitReg(MISCREG_PMCEID0)
2953 .allPrivileges();
2954 InitReg(MISCREG_PMCEID1)
2955 .allPrivileges();
2956 InitReg(MISCREG_PMCCNTR)
2957 .allPrivileges();
2958 InitReg(MISCREG_PMXEVTYPER)
2959 .allPrivileges();
2960 InitReg(MISCREG_PMCCFILTR)
2961 .allPrivileges();
2962 InitReg(MISCREG_PMXEVCNTR)
2963 .allPrivileges();
2964 InitReg(MISCREG_PMUSERENR)
2965 .allPrivileges().userNonSecureWrite(0).userSecureWrite(0);
2966 InitReg(MISCREG_PMINTENSET)
2967 .allPrivileges().exceptUserMode();
2968 InitReg(MISCREG_PMINTENCLR)
2969 .allPrivileges().exceptUserMode();
2970 InitReg(MISCREG_PMOVSSET)
2971 .unimplemented()
2972 .allPrivileges();
2973 InitReg(MISCREG_L2CTLR)
2974 .allPrivileges().exceptUserMode();
2975 InitReg(MISCREG_L2ECTLR)
2976 .unimplemented()
2977 .allPrivileges().exceptUserMode();
2978 InitReg(MISCREG_PRRR)
2979 .banked();
2980 InitReg(MISCREG_PRRR_NS)
2981 .bankedChild()
2982 .nonSecure().exceptUserMode();
2983 InitReg(MISCREG_PRRR_S)
2984 .bankedChild()
2985 .secure().exceptUserMode();
2986 InitReg(MISCREG_MAIR0)
2987 .banked();
2988 InitReg(MISCREG_MAIR0_NS)
2989 .bankedChild()
2990 .nonSecure().exceptUserMode();
2991 InitReg(MISCREG_MAIR0_S)
2992 .bankedChild()
2993 .secure().exceptUserMode();
2994 InitReg(MISCREG_NMRR)
2995 .banked();
2996 InitReg(MISCREG_NMRR_NS)
2997 .bankedChild()
2998 .nonSecure().exceptUserMode();
2999 InitReg(MISCREG_NMRR_S)
3000 .bankedChild()
3001 .secure().exceptUserMode();
3002 InitReg(MISCREG_MAIR1)
3003 .banked();
3004 InitReg(MISCREG_MAIR1_NS)
3005 .bankedChild()
3006 .nonSecure().exceptUserMode();
3007 InitReg(MISCREG_MAIR1_S)
3008 .bankedChild()
3009 .secure().exceptUserMode();
3010 InitReg(MISCREG_AMAIR0)
3011 .banked();
3012 InitReg(MISCREG_AMAIR0_NS)
3013 .bankedChild()
3014 .nonSecure().exceptUserMode();
3015 InitReg(MISCREG_AMAIR0_S)
3016 .bankedChild()
3017 .secure().exceptUserMode();
3018 InitReg(MISCREG_AMAIR1)
3019 .banked();
3020 InitReg(MISCREG_AMAIR1_NS)
3021 .bankedChild()
3022 .nonSecure().exceptUserMode();
3023 InitReg(MISCREG_AMAIR1_S)
3024 .bankedChild()
3025 .secure().exceptUserMode();
3026 InitReg(MISCREG_HMAIR0)
3027 .hyp().monNonSecure();
3028 InitReg(MISCREG_HMAIR1)
3029 .hyp().monNonSecure();
3030 InitReg(MISCREG_HAMAIR0)
3031 .unimplemented()
3032 .warnNotFail()
3033 .hyp().monNonSecure();
3034 InitReg(MISCREG_HAMAIR1)
3035 .unimplemented()
3036 .warnNotFail()
3037 .hyp().monNonSecure();
3038 InitReg(MISCREG_VBAR)
3039 .banked();
3040 InitReg(MISCREG_VBAR_NS)
3041 .bankedChild()
3042 .nonSecure().exceptUserMode();
3043 InitReg(MISCREG_VBAR_S)
3044 .bankedChild()
3045 .secure().exceptUserMode();
3046 InitReg(MISCREG_MVBAR)
3047 .mon().secure().exceptUserMode();
3048 InitReg(MISCREG_RMR)
3049 .unimplemented()
3050 .mon().secure().exceptUserMode();
3051 InitReg(MISCREG_ISR)
3052 .allPrivileges().exceptUserMode().writes(0);
3053 InitReg(MISCREG_HVBAR)
3054 .hyp().monNonSecure();
3055 InitReg(MISCREG_FCSEIDR)
3056 .unimplemented()
3057 .warnNotFail()
3058 .allPrivileges().exceptUserMode();
3059 InitReg(MISCREG_CONTEXTIDR)
3060 .banked();
3061 InitReg(MISCREG_CONTEXTIDR_NS)
3062 .bankedChild()
3063 .nonSecure().exceptUserMode();
3064 InitReg(MISCREG_CONTEXTIDR_S)
3065 .bankedChild()
3066 .secure().exceptUserMode();
3067 InitReg(MISCREG_TPIDRURW)
3068 .banked();
3069 InitReg(MISCREG_TPIDRURW_NS)
3070 .bankedChild()
3071 .allPrivileges().monSecure(0).privSecure(0);
3072 InitReg(MISCREG_TPIDRURW_S)
3073 .bankedChild()
3074 .secure();
3075 InitReg(MISCREG_TPIDRURO)
3076 .banked();
3077 InitReg(MISCREG_TPIDRURO_NS)
3078 .bankedChild()
3079 .allPrivileges().secure(0).userNonSecureWrite(0).userSecureRead(1);
3080 InitReg(MISCREG_TPIDRURO_S)
3081 .bankedChild()
3082 .secure().userSecureWrite(0);
3083 InitReg(MISCREG_TPIDRPRW)
3084 .banked();
3085 InitReg(MISCREG_TPIDRPRW_NS)
3086 .bankedChild()
3087 .nonSecure().exceptUserMode();
3088 InitReg(MISCREG_TPIDRPRW_S)
3089 .bankedChild()
3090 .secure().exceptUserMode();
3091 InitReg(MISCREG_HTPIDR)
3092 .hyp().monNonSecure();
3093 InitReg(MISCREG_CNTFRQ)
3094 .unverifiable()
3095 .reads(1).mon();
3096 InitReg(MISCREG_CNTKCTL)
3097 .allPrivileges().exceptUserMode();
3098 InitReg(MISCREG_CNTP_TVAL)
3099 .banked();
3100 InitReg(MISCREG_CNTP_TVAL_NS)
3101 .bankedChild()
3102 .allPrivileges().monSecure(0).privSecure(0);
3103 InitReg(MISCREG_CNTP_TVAL_S)
3104 .unimplemented()
3105 .bankedChild()
3106 .secure().user(1);
3107 InitReg(MISCREG_CNTP_CTL)
3108 .banked();
3109 InitReg(MISCREG_CNTP_CTL_NS)
3110 .bankedChild()
3111 .allPrivileges().monSecure(0).privSecure(0);
3112 InitReg(MISCREG_CNTP_CTL_S)
3113 .unimplemented()
3114 .bankedChild()
3115 .secure().user(1);
3116 InitReg(MISCREG_CNTV_TVAL)
3117 .allPrivileges();
3118 InitReg(MISCREG_CNTV_CTL)
3119 .allPrivileges();
3120 InitReg(MISCREG_CNTHCTL)
3121 .unimplemented()
3122 .hypWrite().monNonSecureRead();
3123 InitReg(MISCREG_CNTHP_TVAL)
3124 .unimplemented()
3125 .hypWrite().monNonSecureRead();
3126 InitReg(MISCREG_CNTHP_CTL)
3127 .unimplemented()
3128 .hypWrite().monNonSecureRead();
3129 InitReg(MISCREG_IL1DATA0)
3130 .unimplemented()
3131 .allPrivileges().exceptUserMode();
3132 InitReg(MISCREG_IL1DATA1)
3133 .unimplemented()
3134 .allPrivileges().exceptUserMode();
3135 InitReg(MISCREG_IL1DATA2)
3136 .unimplemented()
3137 .allPrivileges().exceptUserMode();
3138 InitReg(MISCREG_IL1DATA3)
3139 .unimplemented()
3140 .allPrivileges().exceptUserMode();
3141 InitReg(MISCREG_DL1DATA0)
3142 .unimplemented()
3143 .allPrivileges().exceptUserMode();
3144 InitReg(MISCREG_DL1DATA1)
3145 .unimplemented()
3146 .allPrivileges().exceptUserMode();
3147 InitReg(MISCREG_DL1DATA2)
3148 .unimplemented()
3149 .allPrivileges().exceptUserMode();
3150 InitReg(MISCREG_DL1DATA3)
3151 .unimplemented()
3152 .allPrivileges().exceptUserMode();
3153 InitReg(MISCREG_DL1DATA4)
3154 .unimplemented()
3155 .allPrivileges().exceptUserMode();
3156 InitReg(MISCREG_RAMINDEX)
3157 .unimplemented()
3158 .writes(1).exceptUserMode();
3159 InitReg(MISCREG_L2ACTLR)
3160 .unimplemented()
3161 .allPrivileges().exceptUserMode();
3162 InitReg(MISCREG_CBAR)
3163 .unimplemented()
3164 .allPrivileges().exceptUserMode().writes(0);
3165 InitReg(MISCREG_HTTBR)
3166 .hyp().monNonSecure();
3167 InitReg(MISCREG_VTTBR)
3168 .hyp().monNonSecure();
3169 InitReg(MISCREG_CNTPCT)
3170 .reads(1);
3171 InitReg(MISCREG_CNTVCT)
3172 .unverifiable()
3173 .reads(1);
3174 InitReg(MISCREG_CNTP_CVAL)
3175 .banked();
3176 InitReg(MISCREG_CNTP_CVAL_NS)
3177 .bankedChild()
3178 .allPrivileges().monSecure(0).privSecure(0);
3179 InitReg(MISCREG_CNTP_CVAL_S)
3180 .unimplemented()
3181 .bankedChild()
3182 .secure().user(1);
3183 InitReg(MISCREG_CNTV_CVAL)
3184 .allPrivileges();
3185 InitReg(MISCREG_CNTVOFF)
3186 .hyp().monNonSecure();
3187 InitReg(MISCREG_CNTHP_CVAL)
3188 .unimplemented()
3189 .hypWrite().monNonSecureRead();
3190 InitReg(MISCREG_CPUMERRSR)
3191 .unimplemented()
3192 .allPrivileges().exceptUserMode();
3193 InitReg(MISCREG_L2MERRSR)
3194 .unimplemented()
3195 .warnNotFail()
3196 .allPrivileges().exceptUserMode();
3197
3198 // AArch64 registers (Op0=2);
3199 InitReg(MISCREG_MDCCINT_EL1)
3200 .allPrivileges();
3201 InitReg(MISCREG_OSDTRRX_EL1)
3202 .allPrivileges()
3203 .mapsTo(MISCREG_DBGDTRRXext);
3204 InitReg(MISCREG_MDSCR_EL1)
3205 .allPrivileges()
3206 .mapsTo(MISCREG_DBGDSCRext);
3207 InitReg(MISCREG_OSDTRTX_EL1)
3208 .allPrivileges()
3209 .mapsTo(MISCREG_DBGDTRTXext);
3210 InitReg(MISCREG_OSECCR_EL1)
3211 .allPrivileges()
3212 .mapsTo(MISCREG_DBGOSECCR);
3213 InitReg(MISCREG_DBGBVR0_EL1)
3214 .allPrivileges()
3215 .mapsTo(MISCREG_DBGBVR0 /*, MISCREG_DBGBXVR0 */);
3216 InitReg(MISCREG_DBGBVR1_EL1)
3217 .allPrivileges()
3218 .mapsTo(MISCREG_DBGBVR1 /*, MISCREG_DBGBXVR1 */);
3219 InitReg(MISCREG_DBGBVR2_EL1)
3220 .allPrivileges()
3221 .mapsTo(MISCREG_DBGBVR2 /*, MISCREG_DBGBXVR2 */);
3222 InitReg(MISCREG_DBGBVR3_EL1)
3223 .allPrivileges()
3224 .mapsTo(MISCREG_DBGBVR3 /*, MISCREG_DBGBXVR3 */);
3225 InitReg(MISCREG_DBGBVR4_EL1)
3226 .allPrivileges()
3227 .mapsTo(MISCREG_DBGBVR4 /*, MISCREG_DBGBXVR4 */);
3228 InitReg(MISCREG_DBGBVR5_EL1)
3229 .allPrivileges()
3230 .mapsTo(MISCREG_DBGBVR5 /*, MISCREG_DBGBXVR5 */);
3231 InitReg(MISCREG_DBGBCR0_EL1)
3232 .allPrivileges()
3233 .mapsTo(MISCREG_DBGBCR0);
3234 InitReg(MISCREG_DBGBCR1_EL1)
3235 .allPrivileges()
3236 .mapsTo(MISCREG_DBGBCR1);
3237 InitReg(MISCREG_DBGBCR2_EL1)
3238 .allPrivileges()
3239 .mapsTo(MISCREG_DBGBCR2);
3240 InitReg(MISCREG_DBGBCR3_EL1)
3241 .allPrivileges()
3242 .mapsTo(MISCREG_DBGBCR3);
3243 InitReg(MISCREG_DBGBCR4_EL1)
3244 .allPrivileges()
3245 .mapsTo(MISCREG_DBGBCR4);
3246 InitReg(MISCREG_DBGBCR5_EL1)
3247 .allPrivileges()
3248 .mapsTo(MISCREG_DBGBCR5);
3249 InitReg(MISCREG_DBGWVR0_EL1)
3250 .allPrivileges()
3251 .mapsTo(MISCREG_DBGWVR0);
3252 InitReg(MISCREG_DBGWVR1_EL1)
3253 .allPrivileges()
3254 .mapsTo(MISCREG_DBGWVR1);
3255 InitReg(MISCREG_DBGWVR2_EL1)
3256 .allPrivileges()
3257 .mapsTo(MISCREG_DBGWVR2);
3258 InitReg(MISCREG_DBGWVR3_EL1)
3259 .allPrivileges()
3260 .mapsTo(MISCREG_DBGWVR3);
3261 InitReg(MISCREG_DBGWCR0_EL1)
3262 .allPrivileges()
3263 .mapsTo(MISCREG_DBGWCR0);
3264 InitReg(MISCREG_DBGWCR1_EL1)
3265 .allPrivileges()
3266 .mapsTo(MISCREG_DBGWCR1);
3267 InitReg(MISCREG_DBGWCR2_EL1)
3268 .allPrivileges()
3269 .mapsTo(MISCREG_DBGWCR2);
3270 InitReg(MISCREG_DBGWCR3_EL1)
3271 .allPrivileges()
3272 .mapsTo(MISCREG_DBGWCR3);
3273 InitReg(MISCREG_MDCCSR_EL0)
3274 .allPrivileges().monSecureWrite(0).monNonSecureWrite(0)
3275 .mapsTo(MISCREG_DBGDSCRint);
3276 InitReg(MISCREG_MDDTR_EL0)
3277 .allPrivileges();
3278 InitReg(MISCREG_MDDTRTX_EL0)
3279 .allPrivileges();
3280 InitReg(MISCREG_MDDTRRX_EL0)
3281 .allPrivileges();
3282 InitReg(MISCREG_DBGVCR32_EL2)
3283 .allPrivileges()
3284 .mapsTo(MISCREG_DBGVCR);
3285 InitReg(MISCREG_MDRAR_EL1)
3286 .allPrivileges().monSecureWrite(0).monNonSecureWrite(0)
3287 .mapsTo(MISCREG_DBGDRAR);
3288 InitReg(MISCREG_OSLAR_EL1)
3289 .allPrivileges().monSecureRead(0).monNonSecureRead(0)
3290 .mapsTo(MISCREG_DBGOSLAR);
3291 InitReg(MISCREG_OSLSR_EL1)
3292 .allPrivileges().monSecureWrite(0).monNonSecureWrite(0)
3293 .mapsTo(MISCREG_DBGOSLSR);
3294 InitReg(MISCREG_OSDLR_EL1)
3295 .allPrivileges()
3296 .mapsTo(MISCREG_DBGOSDLR);
3297 InitReg(MISCREG_DBGPRCR_EL1)
3298 .allPrivileges()
3299 .mapsTo(MISCREG_DBGPRCR);
3300 InitReg(MISCREG_DBGCLAIMSET_EL1)
3301 .allPrivileges()
3302 .mapsTo(MISCREG_DBGCLAIMSET);
3303 InitReg(MISCREG_DBGCLAIMCLR_EL1)
3304 .allPrivileges()
3305 .mapsTo(MISCREG_DBGCLAIMCLR);
3306 InitReg(MISCREG_DBGAUTHSTATUS_EL1)
3307 .allPrivileges().monSecureWrite(0).monNonSecureWrite(0)
3308 .mapsTo(MISCREG_DBGAUTHSTATUS);
3309 InitReg(MISCREG_TEECR32_EL1);
3310 InitReg(MISCREG_TEEHBR32_EL1);
3311
3312 // AArch64 registers (Op0=1,3);
3313 InitReg(MISCREG_MIDR_EL1)
3314 .allPrivileges().exceptUserMode().writes(0);
3315 InitReg(MISCREG_MPIDR_EL1)
3316 .allPrivileges().exceptUserMode().writes(0);
3317 InitReg(MISCREG_REVIDR_EL1)
3318 .allPrivileges().exceptUserMode().writes(0);
3319 InitReg(MISCREG_ID_PFR0_EL1)
3320 .allPrivileges().exceptUserMode().writes(0);
3321 InitReg(MISCREG_ID_PFR1_EL1)
3322 .allPrivileges().exceptUserMode().writes(0);
3323 InitReg(MISCREG_ID_DFR0_EL1)
3324 .allPrivileges().exceptUserMode().writes(0)
3325 .mapsTo(MISCREG_ID_DFR0);
3326 InitReg(MISCREG_ID_AFR0_EL1)
3327 .allPrivileges().exceptUserMode().writes(0);
3328 InitReg(MISCREG_ID_MMFR0_EL1)
3329 .allPrivileges().exceptUserMode().writes(0);
3330 InitReg(MISCREG_ID_MMFR1_EL1)
3331 .allPrivileges().exceptUserMode().writes(0);
3332 InitReg(MISCREG_ID_MMFR2_EL1)
3333 .allPrivileges().exceptUserMode().writes(0);
3334 InitReg(MISCREG_ID_MMFR3_EL1)
3335 .allPrivileges().exceptUserMode().writes(0);
3336 InitReg(MISCREG_ID_ISAR0_EL1)
3337 .allPrivileges().exceptUserMode().writes(0);
3338 InitReg(MISCREG_ID_ISAR1_EL1)
3339 .allPrivileges().exceptUserMode().writes(0);
3340 InitReg(MISCREG_ID_ISAR2_EL1)
3341 .allPrivileges().exceptUserMode().writes(0);
3342 InitReg(MISCREG_ID_ISAR3_EL1)
3343 .allPrivileges().exceptUserMode().writes(0);
3344 InitReg(MISCREG_ID_ISAR4_EL1)
3345 .allPrivileges().exceptUserMode().writes(0);
3346 InitReg(MISCREG_ID_ISAR5_EL1)
3347 .allPrivileges().exceptUserMode().writes(0);
3348 InitReg(MISCREG_MVFR0_EL1)
3349 .allPrivileges().exceptUserMode().writes(0);
3350 InitReg(MISCREG_MVFR1_EL1)
3351 .allPrivileges().exceptUserMode().writes(0);
3352 InitReg(MISCREG_MVFR2_EL1)
3353 .allPrivileges().exceptUserMode().writes(0);
3354 InitReg(MISCREG_ID_AA64PFR0_EL1)
3355 .allPrivileges().exceptUserMode().writes(0);
3356 InitReg(MISCREG_ID_AA64PFR1_EL1)
3357 .allPrivileges().exceptUserMode().writes(0);
3358 InitReg(MISCREG_ID_AA64DFR0_EL1)
3359 .allPrivileges().exceptUserMode().writes(0);
3360 InitReg(MISCREG_ID_AA64DFR1_EL1)
3361 .allPrivileges().exceptUserMode().writes(0);
3362 InitReg(MISCREG_ID_AA64AFR0_EL1)
3363 .allPrivileges().exceptUserMode().writes(0);
3364 InitReg(MISCREG_ID_AA64AFR1_EL1)
3365 .allPrivileges().exceptUserMode().writes(0);
3366 InitReg(MISCREG_ID_AA64ISAR0_EL1)
3367 .allPrivileges().exceptUserMode().writes(0);
3368 InitReg(MISCREG_ID_AA64ISAR1_EL1)
3369 .allPrivileges().exceptUserMode().writes(0);
3370 InitReg(MISCREG_ID_AA64MMFR0_EL1)
3371 .allPrivileges().exceptUserMode().writes(0);
3372 InitReg(MISCREG_ID_AA64MMFR1_EL1)
3373 .allPrivileges().exceptUserMode().writes(0);
3374 InitReg(MISCREG_CCSIDR_EL1)
3375 .allPrivileges().exceptUserMode().writes(0);
3376 InitReg(MISCREG_CLIDR_EL1)
3377 .allPrivileges().exceptUserMode().writes(0);
3378 InitReg(MISCREG_AIDR_EL1)
3379 .allPrivileges().exceptUserMode().writes(0);
3380 InitReg(MISCREG_CSSELR_EL1)
3381 .allPrivileges().exceptUserMode()
3382 .mapsTo(MISCREG_CSSELR_NS);
3383 InitReg(MISCREG_CTR_EL0)
3384 .reads(1);
3385 InitReg(MISCREG_DCZID_EL0)
3386 .reads(1);
3387 InitReg(MISCREG_VPIDR_EL2)
3388 .hyp().mon()
3389 .mapsTo(MISCREG_VPIDR);
3390 InitReg(MISCREG_VMPIDR_EL2)
3391 .hyp().mon()
3392 .mapsTo(MISCREG_VMPIDR);
3393 InitReg(MISCREG_SCTLR_EL1)
3394 .allPrivileges().exceptUserMode()
3395 .mapsTo(MISCREG_SCTLR_NS);
3396 InitReg(MISCREG_ACTLR_EL1)
3397 .allPrivileges().exceptUserMode()
3398 .mapsTo(MISCREG_ACTLR_NS);
3399 InitReg(MISCREG_CPACR_EL1)
3400 .allPrivileges().exceptUserMode()
3401 .mapsTo(MISCREG_CPACR);
3402 InitReg(MISCREG_SCTLR_EL2)
3403 .hyp().mon()
3404 .mapsTo(MISCREG_HSCTLR);
3405 InitReg(MISCREG_ACTLR_EL2)
3406 .hyp().mon()
3407 .mapsTo(MISCREG_HACTLR);
3408 InitReg(MISCREG_HCR_EL2)
3409 .hyp().mon()
3410 .mapsTo(MISCREG_HCR /*, MISCREG_HCR2*/);
3411 InitReg(MISCREG_MDCR_EL2)
3412 .hyp().mon()
3413 .mapsTo(MISCREG_HDCR);
3414 InitReg(MISCREG_CPTR_EL2)
3415 .hyp().mon()
3416 .mapsTo(MISCREG_HCPTR);
3417 InitReg(MISCREG_HSTR_EL2)
3418 .hyp().mon()
3419 .mapsTo(MISCREG_HSTR);
3420 InitReg(MISCREG_HACR_EL2)
3421 .hyp().mon()
3422 .mapsTo(MISCREG_HACR);
3423 InitReg(MISCREG_SCTLR_EL3)
3424 .mon();
3425 InitReg(MISCREG_ACTLR_EL3)
3426 .mon();
3427 InitReg(MISCREG_SCR_EL3)
3428 .mon()
3429 .mapsTo(MISCREG_SCR); // NAM D7-2005
3430 InitReg(MISCREG_SDER32_EL3)
3431 .mon()
3432 .mapsTo(MISCREG_SDER);
3433 InitReg(MISCREG_CPTR_EL3)
3434 .mon();
3435 InitReg(MISCREG_MDCR_EL3)
3436 .mon();
3437 InitReg(MISCREG_TTBR0_EL1)
3438 .allPrivileges().exceptUserMode()
3439 .mapsTo(MISCREG_TTBR0_NS);
3440 InitReg(MISCREG_TTBR1_EL1)
3441 .allPrivileges().exceptUserMode()
3442 .mapsTo(MISCREG_TTBR1_NS);
3443 InitReg(MISCREG_TCR_EL1)
3444 .allPrivileges().exceptUserMode()
3445 .mapsTo(MISCREG_TTBCR_NS);
3446 InitReg(MISCREG_TTBR0_EL2)
3447 .hyp().mon()
3448 .mapsTo(MISCREG_HTTBR);
3449 InitReg(MISCREG_TCR_EL2)
3450 .hyp().mon()
3451 .mapsTo(MISCREG_HTCR);
3452 InitReg(MISCREG_VTTBR_EL2)
3453 .hyp().mon()
3454 .mapsTo(MISCREG_VTTBR);
3455 InitReg(MISCREG_VTCR_EL2)
3456 .hyp().mon()
3457 .mapsTo(MISCREG_VTCR);
3458 InitReg(MISCREG_TTBR0_EL3)
3459 .mon();
3460 InitReg(MISCREG_TCR_EL3)
3461 .mon();
3462 InitReg(MISCREG_DACR32_EL2)
3463 .hyp().mon()
3464 .mapsTo(MISCREG_DACR_NS);
3465 InitReg(MISCREG_SPSR_EL1)
3466 .allPrivileges().exceptUserMode()
3467 .mapsTo(MISCREG_SPSR_SVC); // NAM C5.2.17 SPSR_EL1
3468 InitReg(MISCREG_ELR_EL1)
3469 .allPrivileges().exceptUserMode();
3470 InitReg(MISCREG_SP_EL0)
3471 .allPrivileges().exceptUserMode();
3472 InitReg(MISCREG_SPSEL)
3473 .allPrivileges().exceptUserMode();
3474 InitReg(MISCREG_CURRENTEL)
3475 .allPrivileges().exceptUserMode().writes(0);
3476 InitReg(MISCREG_NZCV)
3477 .allPrivileges();
3478 InitReg(MISCREG_DAIF)
3479 .allPrivileges();
3480 InitReg(MISCREG_FPCR)
3481 .allPrivileges();
3482 InitReg(MISCREG_FPSR)
3483 .allPrivileges();
3484 InitReg(MISCREG_DSPSR_EL0)
3485 .allPrivileges();
3486 InitReg(MISCREG_DLR_EL0)
3487 .allPrivileges();
3488 InitReg(MISCREG_SPSR_EL2)
3489 .hyp().mon()
3490 .mapsTo(MISCREG_SPSR_HYP); // NAM C5.2.18 SPSR_EL2
3491 InitReg(MISCREG_ELR_EL2)
3492 .hyp().mon();
3493 InitReg(MISCREG_SP_EL1)
3494 .hyp().mon();
3495 InitReg(MISCREG_SPSR_IRQ_AA64)
3496 .hyp().mon();
3497 InitReg(MISCREG_SPSR_ABT_AA64)
3498 .hyp().mon();
3499 InitReg(MISCREG_SPSR_UND_AA64)
3500 .hyp().mon();
3501 InitReg(MISCREG_SPSR_FIQ_AA64)
3502 .hyp().mon();
3503 InitReg(MISCREG_SPSR_EL3)
3504 .mon()
3505 .mapsTo(MISCREG_SPSR_MON); // NAM C5.2.19 SPSR_EL3
3506 InitReg(MISCREG_ELR_EL3)
3507 .mon();
3508 InitReg(MISCREG_SP_EL2)
3509 .mon();
3510 InitReg(MISCREG_AFSR0_EL1)
3511 .allPrivileges().exceptUserMode()
3512 .mapsTo(MISCREG_ADFSR_NS);
3513 InitReg(MISCREG_AFSR1_EL1)
3514 .allPrivileges().exceptUserMode()
3515 .mapsTo(MISCREG_AIFSR_NS);
3516 InitReg(MISCREG_ESR_EL1)
3517 .allPrivileges().exceptUserMode();
3518 InitReg(MISCREG_IFSR32_EL2)
3519 .hyp().mon()
3520 .mapsTo(MISCREG_IFSR_NS);
3521 InitReg(MISCREG_AFSR0_EL2)
3522 .hyp().mon()
3523 .mapsTo(MISCREG_HADFSR);
3524 InitReg(MISCREG_AFSR1_EL2)
3525 .hyp().mon()
3526 .mapsTo(MISCREG_HAIFSR);
3527 InitReg(MISCREG_ESR_EL2)
3528 .hyp().mon()
3529 .mapsTo(MISCREG_HSR);
3530 InitReg(MISCREG_FPEXC32_EL2)
3531 .hyp().mon();
3532 InitReg(MISCREG_AFSR0_EL3)
3533 .mon();
3534 InitReg(MISCREG_AFSR1_EL3)
3535 .mon();
3536 InitReg(MISCREG_ESR_EL3)
3537 .mon();
3538 InitReg(MISCREG_FAR_EL1)
3539 .allPrivileges().exceptUserMode()
3540 .mapsTo(MISCREG_DFAR_NS, MISCREG_IFAR_NS);
3541 InitReg(MISCREG_FAR_EL2)
3542 .hyp().mon()
3543 .mapsTo(MISCREG_HDFAR, MISCREG_HIFAR);
3544 InitReg(MISCREG_HPFAR_EL2)
3545 .hyp().mon()
3546 .mapsTo(MISCREG_HPFAR);
3547 InitReg(MISCREG_FAR_EL3)
3548 .mon();
3549 InitReg(MISCREG_IC_IALLUIS)
3550 .warnNotFail()
3551 .writes(1).exceptUserMode();
3552 InitReg(MISCREG_PAR_EL1)
3553 .allPrivileges().exceptUserMode()
3554 .mapsTo(MISCREG_PAR_NS);
3555 InitReg(MISCREG_IC_IALLU)
3556 .warnNotFail()
3557 .writes(1).exceptUserMode();
3558 InitReg(MISCREG_DC_IVAC_Xt)
3559 .warnNotFail()
3560 .writes(1);
3561 InitReg(MISCREG_DC_ISW_Xt)
3562 .warnNotFail()
3563 .writes(1).exceptUserMode();
3564 InitReg(MISCREG_AT_S1E1R_Xt)
3565 .writes(1).exceptUserMode();
3566 InitReg(MISCREG_AT_S1E1W_Xt)
3567 .writes(1).exceptUserMode();
3568 InitReg(MISCREG_AT_S1E0R_Xt)
3569 .writes(1).exceptUserMode();
3570 InitReg(MISCREG_AT_S1E0W_Xt)
3571 .writes(1).exceptUserMode();
3572 InitReg(MISCREG_DC_CSW_Xt)
3573 .warnNotFail()
3574 .writes(1).exceptUserMode();
3575 InitReg(MISCREG_DC_CISW_Xt)
3576 .warnNotFail()
3577 .writes(1).exceptUserMode();
3578 InitReg(MISCREG_DC_ZVA_Xt)
3579 .warnNotFail()
3580 .writes(1).userSecureWrite(0);
3581 InitReg(MISCREG_IC_IVAU_Xt)
3582 .writes(1);
3583 InitReg(MISCREG_DC_CVAC_Xt)
3584 .warnNotFail()
3585 .writes(1);
3586 InitReg(MISCREG_DC_CVAU_Xt)
3587 .warnNotFail()
3588 .writes(1);
3589 InitReg(MISCREG_DC_CIVAC_Xt)
3590 .warnNotFail()
3591 .writes(1);
3592 InitReg(MISCREG_AT_S1E2R_Xt)
3593 .monNonSecureWrite().hypWrite();
3594 InitReg(MISCREG_AT_S1E2W_Xt)
3595 .monNonSecureWrite().hypWrite();
3596 InitReg(MISCREG_AT_S12E1R_Xt)
3597 .hypWrite().monSecureWrite().monNonSecureWrite();
3598 InitReg(MISCREG_AT_S12E1W_Xt)
3599 .hypWrite().monSecureWrite().monNonSecureWrite();
3600 InitReg(MISCREG_AT_S12E0R_Xt)
3601 .hypWrite().monSecureWrite().monNonSecureWrite();
3602 InitReg(MISCREG_AT_S12E0W_Xt)
3603 .hypWrite().monSecureWrite().monNonSecureWrite();
3604 InitReg(MISCREG_AT_S1E3R_Xt)
3605 .monSecureWrite().monNonSecureWrite();
3606 InitReg(MISCREG_AT_S1E3W_Xt)
3607 .monSecureWrite().monNonSecureWrite();
3608 InitReg(MISCREG_TLBI_VMALLE1IS)
3609 .writes(1).exceptUserMode();
3610 InitReg(MISCREG_TLBI_VAE1IS_Xt)
3611 .writes(1).exceptUserMode();
3612 InitReg(MISCREG_TLBI_ASIDE1IS_Xt)
3613 .writes(1).exceptUserMode();
3614 InitReg(MISCREG_TLBI_VAAE1IS_Xt)
3615 .writes(1).exceptUserMode();
3616 InitReg(MISCREG_TLBI_VALE1IS_Xt)
3617 .writes(1).exceptUserMode();
3618 InitReg(MISCREG_TLBI_VAALE1IS_Xt)
3619 .writes(1).exceptUserMode();
3620 InitReg(MISCREG_TLBI_VMALLE1)
3621 .writes(1).exceptUserMode();
3622 InitReg(MISCREG_TLBI_VAE1_Xt)
3623 .writes(1).exceptUserMode();
3624 InitReg(MISCREG_TLBI_ASIDE1_Xt)
3625 .writes(1).exceptUserMode();
3626 InitReg(MISCREG_TLBI_VAAE1_Xt)
3627 .writes(1).exceptUserMode();
3628 InitReg(MISCREG_TLBI_VALE1_Xt)
3629 .writes(1).exceptUserMode();
3630 InitReg(MISCREG_TLBI_VAALE1_Xt)
3631 .writes(1).exceptUserMode();
3632 InitReg(MISCREG_TLBI_IPAS2E1IS_Xt)
3633 .hypWrite().monSecureWrite().monNonSecureWrite();
3634 InitReg(MISCREG_TLBI_IPAS2LE1IS_Xt)
3635 .hypWrite().monSecureWrite().monNonSecureWrite();
3636 InitReg(MISCREG_TLBI_ALLE2IS)
3637 .monNonSecureWrite().hypWrite();
3638 InitReg(MISCREG_TLBI_VAE2IS_Xt)
3639 .monNonSecureWrite().hypWrite();
3640 InitReg(MISCREG_TLBI_ALLE1IS)
3641 .hypWrite().monSecureWrite().monNonSecureWrite();
3642 InitReg(MISCREG_TLBI_VALE2IS_Xt)
3643 .monNonSecureWrite().hypWrite();
3644 InitReg(MISCREG_TLBI_VMALLS12E1IS)
3645 .hypWrite().monSecureWrite().monNonSecureWrite();
3646 InitReg(MISCREG_TLBI_IPAS2E1_Xt)
3647 .hypWrite().monSecureWrite().monNonSecureWrite();
3648 InitReg(MISCREG_TLBI_IPAS2LE1_Xt)
3649 .hypWrite().monSecureWrite().monNonSecureWrite();
3650 InitReg(MISCREG_TLBI_ALLE2)
3651 .monNonSecureWrite().hypWrite();
3652 InitReg(MISCREG_TLBI_VAE2_Xt)
3653 .monNonSecureWrite().hypWrite();
3654 InitReg(MISCREG_TLBI_ALLE1)
3655 .hypWrite().monSecureWrite().monNonSecureWrite();
3656 InitReg(MISCREG_TLBI_VALE2_Xt)
3657 .monNonSecureWrite().hypWrite();
3658 InitReg(MISCREG_TLBI_VMALLS12E1)
3659 .hypWrite().monSecureWrite().monNonSecureWrite();
3660 InitReg(MISCREG_TLBI_ALLE3IS)
3661 .monSecureWrite().monNonSecureWrite();
3662 InitReg(MISCREG_TLBI_VAE3IS_Xt)
3663 .monSecureWrite().monNonSecureWrite();
3664 InitReg(MISCREG_TLBI_VALE3IS_Xt)
3665 .monSecureWrite().monNonSecureWrite();
3666 InitReg(MISCREG_TLBI_ALLE3)
3667 .monSecureWrite().monNonSecureWrite();
3668 InitReg(MISCREG_TLBI_VAE3_Xt)
3669 .monSecureWrite().monNonSecureWrite();
3670 InitReg(MISCREG_TLBI_VALE3_Xt)
3671 .monSecureWrite().monNonSecureWrite();
3672 InitReg(MISCREG_PMINTENSET_EL1)
3673 .allPrivileges().exceptUserMode()
3674 .mapsTo(MISCREG_PMINTENSET);
3675 InitReg(MISCREG_PMINTENCLR_EL1)
3676 .allPrivileges().exceptUserMode()
3677 .mapsTo(MISCREG_PMINTENCLR);
3678 InitReg(MISCREG_PMCR_EL0)
3679 .allPrivileges()
3680 .mapsTo(MISCREG_PMCR);
3681 InitReg(MISCREG_PMCNTENSET_EL0)
3682 .allPrivileges()
3683 .mapsTo(MISCREG_PMCNTENSET);
3684 InitReg(MISCREG_PMCNTENCLR_EL0)
3685 .allPrivileges()
3686 .mapsTo(MISCREG_PMCNTENCLR);
3687 InitReg(MISCREG_PMOVSCLR_EL0)
3688 .allPrivileges();
3689// .mapsTo(MISCREG_PMOVSCLR);
3690 InitReg(MISCREG_PMSWINC_EL0)
3691 .writes(1).user()
3692 .mapsTo(MISCREG_PMSWINC);
3693 InitReg(MISCREG_PMSELR_EL0)
3694 .allPrivileges()
3695 .mapsTo(MISCREG_PMSELR);
3696 InitReg(MISCREG_PMCEID0_EL0)
3697 .reads(1).user()
3698 .mapsTo(MISCREG_PMCEID0);
3699 InitReg(MISCREG_PMCEID1_EL0)
3700 .reads(1).user()
3701 .mapsTo(MISCREG_PMCEID1);
3702 InitReg(MISCREG_PMCCNTR_EL0)
3703 .allPrivileges()
3704 .mapsTo(MISCREG_PMCCNTR);
3705 InitReg(MISCREG_PMXEVTYPER_EL0)
3706 .allPrivileges()
3707 .mapsTo(MISCREG_PMXEVTYPER);
3708 InitReg(MISCREG_PMCCFILTR_EL0)
3709 .allPrivileges();
3710 InitReg(MISCREG_PMXEVCNTR_EL0)
3711 .allPrivileges()
3712 .mapsTo(MISCREG_PMXEVCNTR);
3713 InitReg(MISCREG_PMUSERENR_EL0)
3714 .allPrivileges().userNonSecureWrite(0).userSecureWrite(0)
3715 .mapsTo(MISCREG_PMUSERENR);
3716 InitReg(MISCREG_PMOVSSET_EL0)
3717 .allPrivileges()
3718 .mapsTo(MISCREG_PMOVSSET);
3719 InitReg(MISCREG_MAIR_EL1)
3720 .allPrivileges().exceptUserMode()
3721 .mapsTo(MISCREG_PRRR_NS, MISCREG_NMRR_NS);
3722 InitReg(MISCREG_AMAIR_EL1)
3723 .allPrivileges().exceptUserMode()
3724 .mapsTo(MISCREG_AMAIR0_NS, MISCREG_AMAIR1_NS);
3725 InitReg(MISCREG_MAIR_EL2)
3726 .hyp().mon()
3727 .mapsTo(MISCREG_HMAIR0, MISCREG_HMAIR1);
3728 InitReg(MISCREG_AMAIR_EL2)
3729 .hyp().mon()
3730 .mapsTo(MISCREG_HAMAIR0, MISCREG_HAMAIR1);
3731 InitReg(MISCREG_MAIR_EL3)
3732 .mon();
3733 InitReg(MISCREG_AMAIR_EL3)
3734 .mon();
3735 InitReg(MISCREG_L2CTLR_EL1)
3736 .allPrivileges().exceptUserMode();
3737 InitReg(MISCREG_L2ECTLR_EL1)
3738 .allPrivileges().exceptUserMode();
3739 InitReg(MISCREG_VBAR_EL1)
3740 .allPrivileges().exceptUserMode()
3741 .mapsTo(MISCREG_VBAR_NS);
3742 InitReg(MISCREG_RVBAR_EL1)
3743 .allPrivileges().exceptUserMode().writes(0);
3744 InitReg(MISCREG_ISR_EL1)
3745 .allPrivileges().exceptUserMode().writes(0);
3746 InitReg(MISCREG_VBAR_EL2)
3747 .hyp().mon()
3748 .mapsTo(MISCREG_HVBAR);
3749 InitReg(MISCREG_RVBAR_EL2)
3750 .mon().hyp().writes(0);
3751 InitReg(MISCREG_VBAR_EL3)
3752 .mon();
3753 InitReg(MISCREG_RVBAR_EL3)
3754 .mon().writes(0);
3755 InitReg(MISCREG_RMR_EL3)
3756 .mon();
3757 InitReg(MISCREG_CONTEXTIDR_EL1)
3758 .allPrivileges().exceptUserMode()
3759 .mapsTo(MISCREG_CONTEXTIDR_NS);
3760 InitReg(MISCREG_TPIDR_EL1)
3761 .allPrivileges().exceptUserMode()
3762 .mapsTo(MISCREG_TPIDRPRW_NS);
3763 InitReg(MISCREG_TPIDR_EL0)
3764 .allPrivileges()
3765 .mapsTo(MISCREG_TPIDRURW_NS);
3766 InitReg(MISCREG_TPIDRRO_EL0)
3767 .allPrivileges().userNonSecureWrite(0).userSecureWrite(0)
3768 .mapsTo(MISCREG_TPIDRURO_NS);
3769 InitReg(MISCREG_TPIDR_EL2)
3770 .hyp().mon()
3771 .mapsTo(MISCREG_HTPIDR);
3772 InitReg(MISCREG_TPIDR_EL3)
3773 .mon();
3774 InitReg(MISCREG_CNTKCTL_EL1)
3775 .allPrivileges().exceptUserMode()
3776 .mapsTo(MISCREG_CNTKCTL);
3777 InitReg(MISCREG_CNTFRQ_EL0)
3778 .reads(1).mon()
3779 .mapsTo(MISCREG_CNTFRQ);
3780 InitReg(MISCREG_CNTPCT_EL0)
3781 .reads(1)
3782 .mapsTo(MISCREG_CNTPCT); /* 64b */
3783 InitReg(MISCREG_CNTVCT_EL0)
3784 .unverifiable()
3785 .reads(1)
3786 .mapsTo(MISCREG_CNTVCT); /* 64b */
3787 InitReg(MISCREG_CNTP_TVAL_EL0)
3788 .allPrivileges()
3789 .mapsTo(MISCREG_CNTP_TVAL_NS);
3790 InitReg(MISCREG_CNTP_CTL_EL0)
3791 .allPrivileges()
3792 .mapsTo(MISCREG_CNTP_CTL_NS);
3793 InitReg(MISCREG_CNTP_CVAL_EL0)
3794 .allPrivileges()
3795 .mapsTo(MISCREG_CNTP_CVAL_NS); /* 64b */
3796 InitReg(MISCREG_CNTV_TVAL_EL0)
3797 .allPrivileges()
3798 .mapsTo(MISCREG_CNTV_TVAL);
3799 InitReg(MISCREG_CNTV_CTL_EL0)
3800 .allPrivileges()
3801 .mapsTo(MISCREG_CNTV_CTL);
3802 InitReg(MISCREG_CNTV_CVAL_EL0)
3803 .allPrivileges()
3804 .mapsTo(MISCREG_CNTV_CVAL); /* 64b */
3805 InitReg(MISCREG_PMEVCNTR0_EL0)
3806 .allPrivileges();
3807// .mapsTo(MISCREG_PMEVCNTR0);
3808 InitReg(MISCREG_PMEVCNTR1_EL0)
3809 .allPrivileges();
3810// .mapsTo(MISCREG_PMEVCNTR1);
3811 InitReg(MISCREG_PMEVCNTR2_EL0)
3812 .allPrivileges();
3813// .mapsTo(MISCREG_PMEVCNTR2);
3814 InitReg(MISCREG_PMEVCNTR3_EL0)
3815 .allPrivileges();
3816// .mapsTo(MISCREG_PMEVCNTR3);
3817 InitReg(MISCREG_PMEVCNTR4_EL0)
3818 .allPrivileges();
3819// .mapsTo(MISCREG_PMEVCNTR4);
3820 InitReg(MISCREG_PMEVCNTR5_EL0)
3821 .allPrivileges();
3822// .mapsTo(MISCREG_PMEVCNTR5);
3823 InitReg(MISCREG_PMEVTYPER0_EL0)
3824 .allPrivileges();
3825// .mapsTo(MISCREG_PMEVTYPER0);
3826 InitReg(MISCREG_PMEVTYPER1_EL0)
3827 .allPrivileges();
3828// .mapsTo(MISCREG_PMEVTYPER1);
3829 InitReg(MISCREG_PMEVTYPER2_EL0)
3830 .allPrivileges();
3831// .mapsTo(MISCREG_PMEVTYPER2);
3832 InitReg(MISCREG_PMEVTYPER3_EL0)
3833 .allPrivileges();
3834// .mapsTo(MISCREG_PMEVTYPER3);
3835 InitReg(MISCREG_PMEVTYPER4_EL0)
3836 .allPrivileges();
3837// .mapsTo(MISCREG_PMEVTYPER4);
3838 InitReg(MISCREG_PMEVTYPER5_EL0)
3839 .allPrivileges();
3840// .mapsTo(MISCREG_PMEVTYPER5);
3841 InitReg(MISCREG_CNTVOFF_EL2)
3842 .hyp().mon()
3843 .mapsTo(MISCREG_CNTVOFF); /* 64b */
3844 InitReg(MISCREG_CNTHCTL_EL2)
3845 .unimplemented()
3846 .warnNotFail()
3847 .mon().monNonSecureWrite(0).hypWrite()
3848 .mapsTo(MISCREG_CNTHCTL);
3849 InitReg(MISCREG_CNTHP_TVAL_EL2)
3850 .unimplemented()
3851 .mon().monNonSecureWrite(0).hypWrite()
3852 .mapsTo(MISCREG_CNTHP_TVAL);
3853 InitReg(MISCREG_CNTHP_CTL_EL2)
3854 .unimplemented()
3855 .mon().monNonSecureWrite(0).hypWrite()
3856 .mapsTo(MISCREG_CNTHP_CTL);
3857 InitReg(MISCREG_CNTHP_CVAL_EL2)
3858 .unimplemented()
3859 .mon().monNonSecureWrite(0).hypWrite()
3860 .mapsTo(MISCREG_CNTHP_CVAL); /* 64b */
3861 InitReg(MISCREG_CNTPS_TVAL_EL1)
3862 .unimplemented()
3863 .mon().monNonSecureWrite(0).hypWrite();
3864 InitReg(MISCREG_CNTPS_CTL_EL1)
3865 .unimplemented()
3866 .mon().monNonSecureWrite(0).hypWrite();
3867 InitReg(MISCREG_CNTPS_CVAL_EL1)
3868 .unimplemented()
3869 .mon().monNonSecureWrite(0).hypWrite();
3870 InitReg(MISCREG_IL1DATA0_EL1)
3871 .allPrivileges().exceptUserMode();
3872 InitReg(MISCREG_IL1DATA1_EL1)
3873 .allPrivileges().exceptUserMode();
3874 InitReg(MISCREG_IL1DATA2_EL1)
3875 .allPrivileges().exceptUserMode();
3876 InitReg(MISCREG_IL1DATA3_EL1)
3877 .allPrivileges().exceptUserMode();
3878 InitReg(MISCREG_DL1DATA0_EL1)
3879 .allPrivileges().exceptUserMode();
3880 InitReg(MISCREG_DL1DATA1_EL1)
3881 .allPrivileges().exceptUserMode();
3882 InitReg(MISCREG_DL1DATA2_EL1)
3883 .allPrivileges().exceptUserMode();
3884 InitReg(MISCREG_DL1DATA3_EL1)
3885 .allPrivileges().exceptUserMode();
3886 InitReg(MISCREG_DL1DATA4_EL1)
3887 .allPrivileges().exceptUserMode();
3888 InitReg(MISCREG_L2ACTLR_EL1)
3889 .allPrivileges().exceptUserMode();
3890 InitReg(MISCREG_CPUACTLR_EL1)
3891 .allPrivileges().exceptUserMode();
3892 InitReg(MISCREG_CPUECTLR_EL1)
3893 .allPrivileges().exceptUserMode();
3894 InitReg(MISCREG_CPUMERRSR_EL1)
3895 .allPrivileges().exceptUserMode();
3896 InitReg(MISCREG_L2MERRSR_EL1)
3897 .unimplemented()
3898 .warnNotFail()
3899 .allPrivileges().exceptUserMode();
3900 InitReg(MISCREG_CBAR_EL1)
3901 .allPrivileges().exceptUserMode().writes(0);
3902 InitReg(MISCREG_CONTEXTIDR_EL2)
3903 .mon().hyp();
3904
3905 // Dummy registers
3906 InitReg(MISCREG_NOP)
3907 .allPrivileges();
3908 InitReg(MISCREG_RAZ)
3909 .allPrivileges().exceptUserMode().writes(0);
3910 InitReg(MISCREG_CP14_UNIMPL)
3911 .unimplemented()
3912 .warnNotFail();
3913 InitReg(MISCREG_CP15_UNIMPL)
3914 .unimplemented()
3915 .warnNotFail();
3916 InitReg(MISCREG_A64_UNIMPL)
3917 .unimplemented()
3918 .warnNotFail();
3919 InitReg(MISCREG_UNKNOWN);
3920
3921 // Register mappings for some unimplemented registers:
3922 // ESR_EL1 -> DFSR
3923 // RMR_EL1 -> RMR
3924 // RMR_EL2 -> HRMR
3925 // DBGDTR_EL0 -> DBGDTR{R or T}Xint
3926 // DBGDTRRX_EL0 -> DBGDTRRXint
3927 // DBGDTRTX_EL0 -> DBGDTRRXint
3928 // MDCR_EL3 -> SDCR, NAM D7-2108 (the latter is unimpl. in gem5)
3929
3930 completed = true;
3931}
3932
3564} // namespace ArmISA
3933} // namespace ArmISA