forked from TrungNguyen1909/aarch64-sysreg-ida
-
Notifications
You must be signed in to change notification settings - Fork 0
/
aarch64_sysreg.py
892 lines (872 loc) · 70 KB
/
aarch64_sysreg.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
'''
Copyright (c) 2022 ntrung03
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at https://mozilla.org/MPL/2.0/.
Based on https://gist.github.com/bazad/42054285391c6e0dcd0ede4b5f969ad2 by Brandon Azad
Based on https://gist.github.com/dougallj/7a75a3be1ec69ca550e7c36dc75e0d6f by Dougall J
'''
import idaapi
import ida_hexrays
import os
import json
ITYPE_MRS = idaapi.CUSTOM_INSN_ITYPE + 13
ITYPE_MSR = ITYPE_MRS + 1
ITYPE_SYS = ITYPE_MSR + 1
'''
Download apple_regs.json from https://github.com/AsahiLinux/m1n1/blob/main/tools/apple_regs.json
and put it in the same directory
'''
APPLE_REGS_CFGFILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "apple_regs.json")
# AArch64 PSTATE accesses (op0 = 0b00, CRn = 0b0100).
PSTATE_ACCESS = {
0b011 : 'UAO',
0b100 : 'PAN',
0b101 : 'SPSel',
0b110 : 'DAIFSet',
0b111 : 'DAIFClr',
}
# AArch64 system registers (op0 = 0b01, 0b10, 0b11).
SYSTEM_REGISTERS = {
# SysReg_xml_v86A-2020-03
'S1_0_c7_c1_0' : ( 'IC IALLUIS', 'Instruction Cache Invalidate All to PoU, Inner Shareable' ),
'S1_0_c7_c5_0' : ( 'IC IALLU', 'Instruction Cache Invalidate All to PoU' ),
'S1_0_c7_c6_1' : ( 'DC IVAC', 'Data or unified Cache line Invalidate by VA to PoC' ),
'S1_0_c7_c6_2' : ( 'DC ISW', 'Data or unified Cache line Invalidate by Set/Way' ),
'S1_0_c7_c6_3' : ( 'DC IGVAC', 'Data, Allocation Tag or unified Cache line Invalidate of Allocation Tags by VA to PoC' ),
'S1_0_c7_c6_4' : ( 'DC IGSW', 'Data, Allocation Tag or unified Cache line Invalidate of Allocation Tags by Set/Way' ),
'S1_0_c7_c6_5' : ( 'DC IGDVAC', 'Data, Allocation Tag or unified Cache line Invalidate of Allocation Tags by VA to PoC' ),
'S1_0_c7_c6_6' : ( 'DC IGDSW', 'Data, Allocation Tag or unified Cache line Invalidate of Data and Allocation Tags by Set/Way' ),
'S1_0_c7_c8_0' : ( 'AT S1E1R', 'Address Translate Stage 1 EL1 Read' ),
'S1_0_c7_c8_1' : ( 'AT S1E1W', 'Address Translate Stage 1 EL1 Write' ),
'S1_0_c7_c8_2' : ( 'AT S1E0R', 'Address Translate Stage 1 EL0 Read' ),
'S1_0_c7_c8_3' : ( 'AT S1E0W', 'Address Translate Stage 1 EL0 Write' ),
'S1_0_c7_c9_0' : ( 'AT S1E1RP', 'Address Translate Stage 1 EL1 Read PAN' ),
'S1_0_c7_c9_1' : ( 'AT S1E1WP', 'Address Translate Stage 1 EL1 Write PAN' ),
'S1_0_c7_c10_2' : ( 'DC CSW', 'Data or unified Cache line Clean by Set/Way' ),
'S1_0_c7_c10_4' : ( 'DC CGSW', 'Data, Allocation Tag or unified Cache line Clean of Allocation Tags by Set/Way' ),
'S1_0_c7_c10_6' : ( 'DC CGDSW', 'Data, Allocation Tag or unified Cache line Clean of Data and Allocation Tags by Set/Way' ),
'S1_0_c7_c14_2' : ( 'DC CISW', 'Data or unified Cache line Clean and Invalidate by Set/Way' ),
'S1_0_c7_c14_4' : ( 'DC CIGSW', 'Data, Allocation Tag or unified Cache line Clean and Invalidate of Allocation Tags by Set/Way' ),
'S1_0_c7_c14_6' : ( 'DC CIGDSW', 'Data, Allocation Tag or unified Cache line Clean and Invalidate of Data and Allocation Tags by Set/Way' ),
'S1_0_c8_c1_0' : ( 'TLBI VMALLE1OS', 'TLB Invalidate by VMID, All at stage 1, EL1, Outer Shareable' ),
'S1_0_c8_c1_1' : ( 'TLBI VAE1OS', 'TLB Invalidate by VA, EL1, Outer Shareable' ),
'S1_0_c8_c1_2' : ( 'TLBI ASIDE1OS', 'TLB Invalidate by ASID, EL1, Outer Shareable' ),
'S1_0_c8_c1_3' : ( 'TLBI VAAE1OS', 'TLB Invalidate by VA, All ASID, EL1, Outer Shareable' ),
'S1_0_c8_c1_5' : ( 'TLBI VALE1OS', 'TLB Invalidate by VA, Last level, EL1, Outer Shareable' ),
'S1_0_c8_c1_7' : ( 'TLBI VAALE1OS', 'TLB Invalidate by VA, All ASID, Last Level, EL1, Outer Shareable' ),
'S1_0_c8_c2_1' : ( 'TLBI RVAE1IS', 'TLB Range Invalidate by VA, EL1, Inner Shareable' ),
'S1_0_c8_c2_3' : ( 'TLBI RVAAE1IS', 'TLB Range Invalidate by VA, All ASID, EL1, Inner Shareable' ),
'S1_0_c8_c2_5' : ( 'TLBI RVALE1IS', 'TLB Range Invalidate by VA, Last level, EL1, Inner Shareable' ),
'S1_0_c8_c2_7' : ( 'TLBI RVAALE1IS', 'TLB Range Invalidate by VA, All ASID, Last Level, EL1, Inner Shareable' ),
'S1_0_c8_c3_0' : ( 'TLBI VMALLE1IS', 'TLB Invalidate by VMID, All at stage 1, EL1, Inner Shareable' ),
'S1_0_c8_c3_1' : ( 'TLBI VAE1IS', 'TLB Invalidate by VA, EL1, Inner Shareable' ),
'S1_0_c8_c3_2' : ( 'TLBI ASIDE1IS', 'TLB Invalidate by ASID, EL1, Inner Shareable' ),
'S1_0_c8_c3_3' : ( 'TLBI VAAE1IS', 'TLB Invalidate by VA, All ASID, EL1, Inner Shareable' ),
'S1_0_c8_c3_5' : ( 'TLBI VALE1IS', 'TLB Invalidate by VA, Last level, EL1, Inner Shareable' ),
'S1_0_c8_c3_7' : ( 'TLBI VAALE1IS', 'TLB Invalidate by VA, All ASID, Last Level, EL1, Inner Shareable' ),
'S1_0_c8_c5_1' : ( 'TLBI RVAE1OS', 'TLB Range Invalidate by VA, EL1, Outer Shareable' ),
'S1_0_c8_c5_3' : ( 'TLBI RVAAE1OS', 'TLB Range Invalidate by VA, All ASID, EL1, Outer Shareable' ),
'S1_0_c8_c5_5' : ( 'TLBI RVALE1OS', 'TLB Range Invalidate by VA, Last level, EL1, Outer Shareable' ),
'S1_0_c8_c5_7' : ( 'TLBI RVAALE1OS', 'TLB Range Invalidate by VA, All ASID, Last Level, EL1, Outer Shareable' ),
'S1_0_c8_c6_1' : ( 'TLBI RVAE1', 'TLB Range Invalidate by VA, EL1' ),
'S1_0_c8_c6_3' : ( 'TLBI RVAAE1', 'TLB Range Invalidate by VA, All ASID, EL1' ),
'S1_0_c8_c6_5' : ( 'TLBI RVALE1', 'TLB Range Invalidate by VA, Last level, EL1' ),
'S1_0_c8_c6_7' : ( 'TLBI RVAALE1', 'TLB Range Invalidate by VA, All ASID, Last level, EL1' ),
'S1_0_c8_c7_0' : ( 'TLBI VMALLE1', 'TLB Invalidate by VMID, All at stage 1, EL1' ),
'S1_0_c8_c7_1' : ( 'TLBI VAE1', 'TLB Invalidate by VA, EL1' ),
'S1_0_c8_c7_2' : ( 'TLBI ASIDE1', 'TLB Invalidate by ASID, EL1' ),
'S1_0_c8_c7_3' : ( 'TLBI VAAE1', 'TLB Invalidate by VA, All ASID, EL1' ),
'S1_0_c8_c7_5' : ( 'TLBI VALE1', 'TLB Invalidate by VA, Last level, EL1' ),
'S1_0_c8_c7_7' : ( 'TLBI VAALE1', 'TLB Invalidate by VA, All ASID, Last level, EL1' ),
'S1_3_c7_c3_4' : ( 'CFP RCTX', 'Control Flow Prediction Restriction by Context' ),
'S1_3_c7_c3_5' : ( 'DVP RCTX', 'Data Value Prediction Restriction by Context' ),
'S1_3_c7_c3_7' : ( 'CPP RCTX', 'Cache Prefetch Prediction Restriction by Context' ),
'S1_3_c7_c4_1' : ( 'DC ZVA', 'Data Cache Zero by VA' ),
'S1_3_c7_c4_3' : ( 'DC GVA', 'Data Cache set Allocation Tag by VA' ),
'S1_3_c7_c4_4' : ( 'DC GZVA', 'Data Cache set Allocation Tags and Zero by VA' ),
'S1_3_c7_c5_1' : ( 'IC IVAU', 'Instruction Cache line Invalidate by VA to PoU' ),
'S1_3_c7_c10_1' : ( 'DC CVAC', 'Data or unified Cache line Clean by VA to PoC' ),
'S1_3_c7_c10_3' : ( 'DC CGVAC', 'Data, Allocation Tag or unified Cache line Clean of Allocation Tags by VA to PoC' ),
'S1_3_c7_c10_5' : ( 'DC CGDVAC', 'Data, Allocation Tag or unified Cache line Clean of Allocation Tags by VA to PoC' ),
'S1_3_c7_c11_1' : ( 'DC CVAU', 'Data or unified Cache line Clean by VA to PoU' ),
'S1_3_c7_c12_1' : ( 'DC CVAP', 'Data or unified Cache line Clean by VA to PoP' ),
'S1_3_c7_c12_3' : ( 'DC CGVAP', 'Data, Allocation Tag or unified Cache line Clean of Allocation Tags by VA to PoP' ),
'S1_3_c7_c12_5' : ( 'DC CGDVAP', 'Data, Allocation Tag or unified Cache line Clean of Data and Allocation Tags by VA to PoP' ),
'S1_3_c7_c13_1' : ( 'DC CVADP', 'Data or unified Cache line Clean by VA to PoDP' ),
'S1_3_c7_c13_3' : ( 'DC CGVADP', 'Clean of Allocation Tags by VA to PoDP' ),
'S1_3_c7_c13_5' : ( 'DC CGDVADP', 'Data, Allocation Tag or unified Cache line Clean of Allocation Tags by VA to PoDP' ),
'S1_3_c7_c14_1' : ( 'DC CIVAC', 'Data or unified Cache line Clean and Invalidate by VA to PoC' ),
'S1_3_c7_c14_3' : ( 'DC CIGVAC', 'Data, Allocation Tag or unified Cache line Clean and Invalidate of Allocation Tags by VA to PoC' ),
'S1_3_c7_c14_5' : ( 'DC CIGDVAC', 'Data, Allocation Tag or unified Cache line Clean and Invalidate of Data and Allocation Tags by VA to PoC' ),
'S1_4_c7_c8_0' : ( 'AT S1E2R', 'Address Translate Stage 1 EL2 Read' ),
'S1_4_c7_c8_1' : ( 'AT S1E2W', 'Address Translate Stage 1 EL2 Write' ),
'S1_4_c7_c8_4' : ( 'AT S12E1R', 'Address Translate Stages 1 and 2 EL1 Read' ),
'S1_4_c7_c8_5' : ( 'AT S12E1W', 'Address Translate Stages 1 and 2 EL1 Write' ),
'S1_4_c7_c8_6' : ( 'AT S12E0R', 'Address Translate Stages 1 and 2 EL0 Read' ),
'S1_4_c7_c8_7' : ( 'AT S12E0W', 'Address Translate Stages 1 and 2 EL0 Write' ),
'S1_4_c8_c0_1' : ( 'TLBI IPAS2E1IS', 'TLB Invalidate by Intermediate Physical Address, Stage 2, EL1, Inner Shareable' ),
'S1_4_c8_c0_2' : ( 'TLBI RIPAS2E1IS', 'TLB Range Invalidate by Intermediate Physical Address, Stage 2, EL1, Inner Shareable' ),
'S1_4_c8_c0_5' : ( 'TLBI IPAS2LE1IS', 'TLB Invalidate by Intermediate Physical Address, Stage 2, Last level, EL1, Inner Shareable' ),
'S1_4_c8_c0_6' : ( 'TLBI RIPAS2LE1IS', 'TLB Range Invalidate by Intermediate Physical Address, Stage 2, Last level, EL1, Inner Shareable' ),
'S1_4_c8_c1_0' : ( 'TLBI ALLE2OS', 'TLB Invalidate All, EL2, Outer Shareable' ),
'S1_4_c8_c1_1' : ( 'TLBI VAE2OS', 'TLB Invalidate by VA, EL2, Outer Shareable' ),
'S1_4_c8_c1_4' : ( 'TLBI ALLE1OS', 'TLB Invalidate All, EL1, Outer Shareable' ),
'S1_4_c8_c1_5' : ( 'TLBI VALE2OS', 'TLB Invalidate by VA, Last level, EL2, Outer Shareable' ),
'S1_4_c8_c1_6' : ( 'TLBI VMALLS12E1OS', 'TLB Invalidate by VMID, All at Stage 1 and 2, EL1, Outer Shareable' ),
'S1_4_c8_c2_1' : ( 'TLBI RVAE2IS', 'TLB Range Invalidate by VA, EL2, Inner Shareable' ),
'S1_4_c8_c2_5' : ( 'TLBI RVALE2IS', 'TLB Range Invalidate by VA, Last level, EL2, Inner Shareable' ),
'S1_4_c8_c3_0' : ( 'TLBI ALLE2IS', 'TLB Invalidate All, EL2, Inner Shareable' ),
'S1_4_c8_c3_1' : ( 'TLBI VAE2IS', 'TLB Invalidate by VA, EL2, Inner Shareable' ),
'S1_4_c8_c3_4' : ( 'TLBI ALLE1IS', 'TLB Invalidate All, EL1, Inner Shareable' ),
'S1_4_c8_c3_5' : ( 'TLBI VALE2IS', 'TLB Invalidate by VA, Last level, EL2, Inner Shareable' ),
'S1_4_c8_c3_6' : ( 'TLBI VMALLS12E1IS', 'TLB Invalidate by VMID, All at Stage 1 and 2, EL1, Inner Shareable' ),
'S1_4_c8_c4_0' : ( 'TLBI IPAS2E1OS', 'TLB Invalidate by Intermediate Physical Address, Stage 2, EL1, Outer Shareable' ),
'S1_4_c8_c4_1' : ( 'TLBI IPAS2E1', 'TLB Invalidate by Intermediate Physical Address, Stage 2, EL1' ),
'S1_4_c8_c4_2' : ( 'TLBI RIPAS2E1', 'TLB Range Invalidate by Intermediate Physical Address, Stage 2, EL1' ),
'S1_4_c8_c4_3' : ( 'TLBI RIPAS2E1OS', 'TLB Range Invalidate by Intermediate Physical Address, Stage 2, EL1, Outer Shareable' ),
'S1_4_c8_c4_4' : ( 'TLBI IPAS2LE1OS', 'TLB Invalidate by Intermediate Physical Address, Stage 2, Last level, EL1, Outer Shareable' ),
'S1_4_c8_c4_5' : ( 'TLBI IPAS2LE1', 'TLB Invalidate by Intermediate Physical Address, Stage 2, Last level, EL1' ),
'S1_4_c8_c4_6' : ( 'TLBI RIPAS2LE1', 'TLB Range Invalidate by Intermediate Physical Address, Stage 2, Last level, EL1' ),
'S1_4_c8_c4_7' : ( 'TLBI RIPAS2LE1OS', 'TLB Range Invalidate by Intermediate Physical Address, Stage 2, Last level, EL1, Outer Shareable' ),
'S1_4_c8_c5_1' : ( 'TLBI RVAE2OS', 'TLB Range Invalidate by VA, EL2, Outer Shareable' ),
'S1_4_c8_c5_5' : ( 'TLBI RVALE2OS', 'TLB Range Invalidate by VA, Last level, EL2, Outer Shareable' ),
'S1_4_c8_c6_1' : ( 'TLBI RVAE2', 'TLB Range Invalidate by VA, EL2' ),
'S1_4_c8_c6_5' : ( 'TLBI RVALE2', 'TLB Range Invalidate by VA, Last level, EL2' ),
'S1_4_c8_c7_0' : ( 'TLBI ALLE2', 'TLB Invalidate All, EL2' ),
'S1_4_c8_c7_1' : ( 'TLBI VAE2', 'TLB Invalidate by VA, EL2' ),
'S1_4_c8_c7_4' : ( 'TLBI ALLE1', 'TLB Invalidate All, EL1' ),
'S1_4_c8_c7_5' : ( 'TLBI VALE2', 'TLB Invalidate by VA, Last level, EL2' ),
'S1_4_c8_c7_6' : ( 'TLBI VMALLS12E1', 'TLB Invalidate by VMID, All at Stage 1 and 2, EL1' ),
'S1_6_c7_c8_0' : ( 'AT S1E3R', 'Address Translate Stage 1 EL3 Read' ),
'S1_6_c7_c8_1' : ( 'AT S1E3W', 'Address Translate Stage 1 EL3 Write' ),
'S1_6_c8_c1_0' : ( 'TLBI ALLE3OS', 'TLB Invalidate All, EL3, Outer Shareable' ),
'S1_6_c8_c1_1' : ( 'TLBI VAE3OS', 'TLB Invalidate by VA, EL3, Outer Shareable' ),
'S1_6_c8_c1_5' : ( 'TLBI VALE3OS', 'TLB Invalidate by VA, Last level, EL3, Outer Shareable' ),
'S1_6_c8_c2_1' : ( 'TLBI RVAE3IS', 'TLB Range Invalidate by VA, EL3, Inner Shareable' ),
'S1_6_c8_c2_5' : ( 'TLBI RVALE3IS', 'TLB Range Invalidate by VA, Last level, EL3, Inner Shareable' ),
'S1_6_c8_c3_0' : ( 'TLBI ALLE3IS', 'TLB Invalidate All, EL3, Inner Shareable' ),
'S1_6_c8_c3_1' : ( 'TLBI VAE3IS', 'TLB Invalidate by VA, EL3, Inner Shareable' ),
'S1_6_c8_c3_5' : ( 'TLBI VALE3IS', 'TLB Invalidate by VA, Last level, EL3, Inner Shareable' ),
'S1_6_c8_c5_1' : ( 'TLBI RVAE3OS', 'TLB Range Invalidate by VA, EL3, Outer Shareable' ),
'S1_6_c8_c5_5' : ( 'TLBI RVALE3OS', 'TLB Range Invalidate by VA, Last level, EL3, Outer Shareable' ),
'S1_6_c8_c6_1' : ( 'TLBI RVAE3', 'TLB Range Invalidate by VA, EL3' ),
'S1_6_c8_c6_5' : ( 'TLBI RVALE3', 'TLB Range Invalidate by VA, Last level, EL3' ),
'S1_6_c8_c7_0' : ( 'TLBI ALLE3', 'TLB Invalidate All, EL3' ),
'S1_6_c8_c7_1' : ( 'TLBI VAE3', 'TLB Invalidate by VA, EL3' ),
'S1_6_c8_c7_5' : ( 'TLBI VALE3', 'TLB Invalidate by VA, Last level, EL3' ),
'S2_0_c0_c0_2' : ( 'OSDTRRX_EL1', 'OS Lock Data Transfer Register, Receive' ),
'S2_0_c0_c0_4' : ( 'DBGBVR0_EL1', 'Debug Breakpoint Value Register 0' ),
'S2_0_c0_c0_5' : ( 'DBGBCR0_EL1', 'Debug Breakpoint Control Register 0' ),
'S2_0_c0_c0_6' : ( 'DBGWVR0_EL1', 'Debug Watchpoint Value Register 0' ),
'S2_0_c0_c0_7' : ( 'DBGWCR0_EL1', 'Debug Watchpoint Control Register 0' ),
'S2_0_c0_c1_4' : ( 'DBGBVR1_EL1', 'Debug Breakpoint Value Register 1' ),
'S2_0_c0_c1_5' : ( 'DBGBCR1_EL1', 'Debug Breakpoint Control Register 1' ),
'S2_0_c0_c1_6' : ( 'DBGWVR1_EL1', 'Debug Watchpoint Value Register 1' ),
'S2_0_c0_c1_7' : ( 'DBGWCR1_EL1', 'Debug Watchpoint Control Register 1' ),
'S2_0_c0_c2_0' : ( 'MDCCINT_EL1', 'Monitor DCC Interrupt Enable Register' ),
'S2_0_c0_c2_2' : ( 'MDSCR_EL1', 'Monitor Debug System Control Register' ),
'S2_0_c0_c2_4' : ( 'DBGBVR2_EL1', 'Debug Breakpoint Value Register 2' ),
'S2_0_c0_c2_5' : ( 'DBGBCR2_EL1', 'Debug Breakpoint Control Register 2' ),
'S2_0_c0_c2_6' : ( 'DBGWVR2_EL1', 'Debug Watchpoint Value Register 2' ),
'S2_0_c0_c2_7' : ( 'DBGWCR2_EL1', 'Debug Watchpoint Control Register 2' ),
'S2_0_c0_c3_2' : ( 'OSDTRTX_EL1', 'OS Lock Data Transfer Register, Transmit' ),
'S2_0_c0_c3_4' : ( 'DBGBVR3_EL1', 'Debug Breakpoint Value Register 3' ),
'S2_0_c0_c3_5' : ( 'DBGBCR3_EL1', 'Debug Breakpoint Control Register 3' ),
'S2_0_c0_c3_6' : ( 'DBGWVR3_EL1', 'Debug Watchpoint Value Register 3' ),
'S2_0_c0_c3_7' : ( 'DBGWCR3_EL1', 'Debug Watchpoint Control Register 3' ),
'S2_0_c0_c4_4' : ( 'DBGBVR4_EL1', 'Debug Breakpoint Value Register 4' ),
'S2_0_c0_c4_5' : ( 'DBGBCR4_EL1', 'Debug Breakpoint Control Register 4' ),
'S2_0_c0_c4_6' : ( 'DBGWVR4_EL1', 'Debug Watchpoint Value Register 4' ),
'S2_0_c0_c4_7' : ( 'DBGWCR4_EL1', 'Debug Watchpoint Control Register 4' ),
'S2_0_c0_c5_4' : ( 'DBGBVR5_EL1', 'Debug Breakpoint Value Register 5' ),
'S2_0_c0_c5_5' : ( 'DBGBCR5_EL1', 'Debug Breakpoint Control Register 5' ),
'S2_0_c0_c5_6' : ( 'DBGWVR5_EL1', 'Debug Watchpoint Value Register 5' ),
'S2_0_c0_c5_7' : ( 'DBGWCR5_EL1', 'Debug Watchpoint Control Register 5' ),
'S2_0_c0_c6_2' : ( 'OSECCR_EL1', 'OS Lock Exception Catch Control Register' ),
'S2_0_c0_c6_4' : ( 'DBGBVR6_EL1', 'Debug Breakpoint Value Register 6' ),
'S2_0_c0_c6_5' : ( 'DBGBCR6_EL1', 'Debug Breakpoint Control Register 6' ),
'S2_0_c0_c6_6' : ( 'DBGWVR6_EL1', 'Debug Watchpoint Value Register 6' ),
'S2_0_c0_c6_7' : ( 'DBGWCR6_EL1', 'Debug Watchpoint Control Register 6' ),
'S2_0_c0_c7_4' : ( 'DBGBVR7_EL1', 'Debug Breakpoint Value Register 7' ),
'S2_0_c0_c7_5' : ( 'DBGBCR7_EL1', 'Debug Breakpoint Control Register 7' ),
'S2_0_c0_c7_6' : ( 'DBGWVR7_EL1', 'Debug Watchpoint Value Register 7' ),
'S2_0_c0_c7_7' : ( 'DBGWCR7_EL1', 'Debug Watchpoint Control Register 7' ),
'S2_0_c0_c8_4' : ( 'DBGBVR8_EL1', 'Debug Breakpoint Value Register 8' ),
'S2_0_c0_c8_5' : ( 'DBGBCR8_EL1', 'Debug Breakpoint Control Register 8' ),
'S2_0_c0_c8_6' : ( 'DBGWVR8_EL1', 'Debug Watchpoint Value Register 8' ),
'S2_0_c0_c8_7' : ( 'DBGWCR8_EL1', 'Debug Watchpoint Control Register 8' ),
'S2_0_c0_c9_4' : ( 'DBGBVR9_EL1', 'Debug Breakpoint Value Register 9' ),
'S2_0_c0_c9_5' : ( 'DBGBCR9_EL1', 'Debug Breakpoint Control Register 9' ),
'S2_0_c0_c9_6' : ( 'DBGWVR9_EL1', 'Debug Watchpoint Value Register 9' ),
'S2_0_c0_c9_7' : ( 'DBGWCR9_EL1', 'Debug Watchpoint Control Register 9' ),
'S2_0_c0_c10_4' : ( 'DBGBVR10_EL1', 'Debug Breakpoint Value Register 10' ),
'S2_0_c0_c10_5' : ( 'DBGBCR10_EL1', 'Debug Breakpoint Control Register 10' ),
'S2_0_c0_c10_6' : ( 'DBGWVR10_EL1', 'Debug Watchpoint Value Register 10' ),
'S2_0_c0_c10_7' : ( 'DBGWCR10_EL1', 'Debug Watchpoint Control Register 10' ),
'S2_0_c0_c11_4' : ( 'DBGBVR11_EL1', 'Debug Breakpoint Value Register 11' ),
'S2_0_c0_c11_5' : ( 'DBGBCR11_EL1', 'Debug Breakpoint Control Register 11' ),
'S2_0_c0_c11_6' : ( 'DBGWVR11_EL1', 'Debug Watchpoint Value Register 11' ),
'S2_0_c0_c11_7' : ( 'DBGWCR11_EL1', 'Debug Watchpoint Control Register 11' ),
'S2_0_c0_c12_4' : ( 'DBGBVR12_EL1', 'Debug Breakpoint Value Register 12' ),
'S2_0_c0_c12_5' : ( 'DBGBCR12_EL1', 'Debug Breakpoint Control Register 12' ),
'S2_0_c0_c12_6' : ( 'DBGWVR12_EL1', 'Debug Watchpoint Value Register 12' ),
'S2_0_c0_c12_7' : ( 'DBGWCR12_EL1', 'Debug Watchpoint Control Register 12' ),
'S2_0_c0_c13_4' : ( 'DBGBVR13_EL1', 'Debug Breakpoint Value Register 13' ),
'S2_0_c0_c13_5' : ( 'DBGBCR13_EL1', 'Debug Breakpoint Control Register 13' ),
'S2_0_c0_c13_6' : ( 'DBGWVR13_EL1', 'Debug Watchpoint Value Register 13' ),
'S2_0_c0_c13_7' : ( 'DBGWCR13_EL1', 'Debug Watchpoint Control Register 13' ),
'S2_0_c0_c14_4' : ( 'DBGBVR14_EL1', 'Debug Breakpoint Value Register 14' ),
'S2_0_c0_c14_5' : ( 'DBGBCR14_EL1', 'Debug Breakpoint Control Register 14' ),
'S2_0_c0_c14_6' : ( 'DBGWVR14_EL1', 'Debug Watchpoint Value Register 14' ),
'S2_0_c0_c14_7' : ( 'DBGWCR14_EL1', 'Debug Watchpoint Control Register 14' ),
'S2_0_c0_c15_4' : ( 'DBGBVR15_EL1', 'Debug Breakpoint Value Register 15' ),
'S2_0_c0_c15_5' : ( 'DBGBCR15_EL1', 'Debug Breakpoint Control Register 15' ),
'S2_0_c0_c15_6' : ( 'DBGWVR15_EL1', 'Debug Watchpoint Value Register 15' ),
'S2_0_c0_c15_7' : ( 'DBGWCR15_EL1', 'Debug Watchpoint Control Register 15' ),
'S2_0_c1_c0_0' : ( 'MDRAR_EL1', 'Monitor Debug ROM Address Register' ),
'S2_0_c1_c0_4' : ( 'OSLAR_EL1', 'OS Lock Access Register' ),
'S2_0_c1_c1_4' : ( 'OSLSR_EL1', 'OS Lock Status Register' ),
'S2_0_c1_c3_4' : ( 'OSDLR_EL1', 'OS Double Lock Register' ),
'S2_0_c1_c4_4' : ( 'DBGPRCR_EL1', 'Debug Power Control Register' ),
'S2_0_c7_c8_6' : ( 'DBGCLAIMSET_EL1', 'Debug CLAIM Tag Set register' ),
'S2_0_c7_c9_6' : ( 'DBGCLAIMCLR_EL1', 'Debug CLAIM Tag Clear register' ),
'S2_0_c7_c14_6' : ( 'DBGAUTHSTATUS_EL1', 'Debug Authentication Status register' ),
'S2_3_c0_c1_0' : ( 'MDCCSR_EL0', 'Monitor DCC Status Register' ),
'S2_3_c0_c4_0' : ( 'DBGDTR_EL0', 'Debug Data Transfer Register, half-duplex' ),
'S2_3_c0_c5_0' : ( 'DBGDTRRX_EL0', 'Debug Data Transfer Register, Receive' ),
'S2_3_c0_c5_0' : ( 'DBGDTRTX_EL0', 'Debug Data Transfer Register, Transmit' ),
'S2_4_c0_c7_0' : ( 'DBGVCR32_EL2', 'Debug Vector Catch Register' ),
'S3_0_c0_c0_0' : ( 'MIDR_EL1', 'Main ID Register' ),
'S3_0_c0_c0_5' : ( 'MPIDR_EL1', 'Multiprocessor Affinity Register' ),
'S3_0_c0_c0_6' : ( 'REVIDR_EL1', 'Revision ID Register' ),
'S3_0_c0_c1_0' : ( 'ID_PFR0_EL1', 'AArch32 Processor Feature Register 0' ),
'S3_0_c0_c1_1' : ( 'ID_PFR1_EL1', 'AArch32 Processor Feature Register 1' ),
'S3_0_c0_c1_2' : ( 'ID_DFR0_EL1', 'AArch32 Debug Feature Register 0' ),
'S3_0_c0_c1_3' : ( 'ID_AFR0_EL1', 'AArch32 Auxiliary Feature Register 0' ),
'S3_0_c0_c1_4' : ( 'ID_MMFR0_EL1', 'AArch32 Memory Model Feature Register 0' ),
'S3_0_c0_c1_5' : ( 'ID_MMFR1_EL1', 'AArch32 Memory Model Feature Register 1' ),
'S3_0_c0_c1_6' : ( 'ID_MMFR2_EL1', 'AArch32 Memory Model Feature Register 2' ),
'S3_0_c0_c1_7' : ( 'ID_MMFR3_EL1', 'AArch32 Memory Model Feature Register 3' ),
'S3_0_c0_c2_0' : ( 'ID_ISAR0_EL1', 'AArch32 Instruction Set Attribute Register 0' ),
'S3_0_c0_c2_1' : ( 'ID_ISAR1_EL1', 'AArch32 Instruction Set Attribute Register 1' ),
'S3_0_c0_c2_2' : ( 'ID_ISAR2_EL1', 'AArch32 Instruction Set Attribute Register 2' ),
'S3_0_c0_c2_3' : ( 'ID_ISAR3_EL1', 'AArch32 Instruction Set Attribute Register 3' ),
'S3_0_c0_c2_4' : ( 'ID_ISAR4_EL1', 'AArch32 Instruction Set Attribute Register 4' ),
'S3_0_c0_c2_5' : ( 'ID_ISAR5_EL1', 'AArch32 Instruction Set Attribute Register 5' ),
'S3_0_c0_c2_6' : ( 'ID_MMFR4_EL1', 'AArch32 Memory Model Feature Register 4' ),
'S3_0_c0_c2_7' : ( 'ID_ISAR6_EL1', 'AArch32 Instruction Set Attribute Register 6' ),
'S3_0_c0_c3_0' : ( 'MVFR0_EL1', 'AArch32 Media and VFP Feature Register 0' ),
'S3_0_c0_c3_1' : ( 'MVFR1_EL1', 'AArch32 Media and VFP Feature Register 1' ),
'S3_0_c0_c3_2' : ( 'MVFR2_EL1', 'AArch32 Media and VFP Feature Register 2' ),
'S3_0_c0_c3_4' : ( 'ID_PFR2_EL1', 'AArch32 Processor Feature Register 2' ),
'S3_0_c0_c3_5' : ( 'ID_DFR1_EL1', 'Debug Feature Register 1' ),
'S3_0_c0_c3_6' : ( 'ID_MMFR5_EL1', 'AArch32 Memory Model Feature Register 5' ),
'S3_0_c0_c4_0' : ( 'ID_AA64PFR0_EL1', 'AArch64 Processor Feature Register 0' ),
'S3_0_c0_c4_1' : ( 'ID_AA64PFR1_EL1', 'AArch64 Processor Feature Register 1' ),
'S3_0_c0_c4_4' : ( 'ID_AA64ZFR0_EL1', 'SVE Feature ID register 0' ),
'S3_0_c0_c5_0' : ( 'ID_AA64DFR0_EL1', 'AArch64 Debug Feature Register 0' ),
'S3_0_c0_c5_1' : ( 'ID_AA64DFR1_EL1', 'AArch64 Debug Feature Register 1' ),
'S3_0_c0_c5_4' : ( 'ID_AA64AFR0_EL1', 'AArch64 Auxiliary Feature Register 0' ),
'S3_0_c0_c5_5' : ( 'ID_AA64AFR1_EL1', 'AArch64 Auxiliary Feature Register 1' ),
'S3_0_c0_c6_0' : ( 'ID_AA64ISAR0_EL1', 'AArch64 Instruction Set Attribute Register 0' ),
'S3_0_c0_c6_1' : ( 'ID_AA64ISAR1_EL1', 'AArch64 Instruction Set Attribute Register 1' ),
'S3_0_c0_c7_0' : ( 'ID_AA64MMFR0_EL1', 'AArch64 Memory Model Feature Register 0' ),
'S3_0_c0_c7_1' : ( 'ID_AA64MMFR1_EL1', 'AArch64 Memory Model Feature Register 1' ),
'S3_0_c0_c7_2' : ( 'ID_AA64MMFR2_EL1', 'AArch64 Memory Model Feature Register 2' ),
'S3_0_c1_c0_0' : ( 'SCTLR_EL1', 'System Control Register (EL1)' ),
'S3_0_c1_c0_1' : ( 'ACTLR_EL1', 'Auxiliary Control Register (EL1)' ),
'S3_0_c1_c0_2' : ( 'CPACR_EL1', 'Architectural Feature Access Control Register' ),
'S3_0_c1_c0_5' : ( 'RGSR_EL1', 'Random Allocation Tag Seed Register.' ),
'S3_0_c1_c0_6' : ( 'GCR_EL1', 'Tag Control Register.' ),
'S3_0_c1_c2_0' : ( 'ZCR_EL1', 'SVE Control Register for EL1' ),
'S3_0_c1_c2_1' : ( 'TRFCR_EL1', 'Trace Filter Control Register (EL1)' ),
'S3_0_c2_c0_0' : ( 'TTBR0_EL1', 'Translation Table Base Register 0 (EL1)' ),
'S3_0_c2_c0_1' : ( 'TTBR1_EL1', 'Translation Table Base Register 1 (EL1)' ),
'S3_0_c2_c0_2' : ( 'TCR_EL1', 'Translation Control Register (EL1)' ),
'S3_0_c2_c1_0' : ( 'APIAKeyLo_EL1', 'Pointer Authentication Key A for Instruction (bits[63:0]) ' ),
'S3_0_c2_c1_1' : ( 'APIAKeyHi_EL1', 'Pointer Authentication Key A for Instruction (bits[127:64]) ' ),
'S3_0_c2_c1_2' : ( 'APIBKeyLo_EL1', 'Pointer Authentication Key B for Instruction (bits[63:0]) ' ),
'S3_0_c2_c1_3' : ( 'APIBKeyHi_EL1', 'Pointer Authentication Key B for Instruction (bits[127:64]) ' ),
'S3_0_c2_c2_0' : ( 'APDAKeyLo_EL1', 'Pointer Authentication Key A for Data (bits[63:0]) ' ),
'S3_0_c2_c2_1' : ( 'APDAKeyHi_EL1', 'Pointer Authentication Key A for Data (bits[127:64]) ' ),
'S3_0_c2_c2_2' : ( 'APDBKeyLo_EL1', 'Pointer Authentication Key B for Data (bits[63:0]) ' ),
'S3_0_c2_c2_3' : ( 'APDBKeyHi_EL1', 'Pointer Authentication Key B for Data (bits[127:64]) ' ),
'S3_0_c2_c3_0' : ( 'APGAKeyLo_EL1', 'Pointer Authentication Key A for Code (bits[63:0]) ' ),
'S3_0_c2_c3_1' : ( 'APGAKeyHi_EL1', 'Pointer Authentication Key A for Code (bits[127:64]) ' ),
'S3_0_c4_c0_0' : ( 'SPSR_EL1', 'Saved Program Status Register (EL1)' ),
'S3_0_c4_c0_1' : ( 'ELR_EL1', 'Exception Link Register (EL1)' ),
'S3_0_c4_c1_0' : ( 'SP_EL0', 'Stack Pointer (EL0)' ),
'S3_0_c4_c2_0' : ( 'SPSel', 'Stack Pointer Select' ),
'S3_0_c4_c2_2' : ( 'CurrentEL', 'Current Exception Level' ),
'S3_0_c4_c2_3' : ( 'PAN', 'Privileged Access Never' ),
'S3_0_c4_c2_4' : ( 'UAO', 'User Access Override' ),
'S3_0_c4_c6_0' : ( 'ICC_PMR_EL1', 'Interrupt Controller Interrupt Priority Mask Register' ),
'S3_0_c4_c6_0' : ( 'ICV_PMR_EL1', 'Interrupt Controller Virtual Interrupt Priority Mask Register' ),
'S3_0_c5_c1_0' : ( 'AFSR0_EL1', 'Auxiliary Fault Status Register 0 (EL1)' ),
'S3_0_c5_c1_1' : ( 'AFSR1_EL1', 'Auxiliary Fault Status Register 1 (EL1)' ),
'S3_0_c5_c2_0' : ( 'ESR_EL1', 'Exception Syndrome Register (EL1)' ),
'S3_0_c5_c3_0' : ( 'ERRIDR_EL1', 'Error Record ID Register' ),
'S3_0_c5_c3_1' : ( 'ERRSELR_EL1', 'Error Record Select Register' ),
'S3_0_c5_c4_0' : ( 'ERXFR_EL1', 'Selected Error Record Feature Register' ),
'S3_0_c5_c4_1' : ( 'ERXCTLR_EL1', 'Selected Error Record Control Register' ),
'S3_0_c5_c4_2' : ( 'ERXSTATUS_EL1', 'Selected Error Record Primary Status Register' ),
'S3_0_c5_c4_3' : ( 'ERXADDR_EL1', 'Selected Error Record Address Register' ),
'S3_0_c5_c4_4' : ( 'ERXPFGF_EL1', 'Selected Pseudo-fault Generation Feature register' ),
'S3_0_c5_c4_5' : ( 'ERXPFGCTL_EL1', 'Selected Pseudo-fault Generation Control register' ),
'S3_0_c5_c4_6' : ( 'ERXPFGCDN_EL1', 'Selected Pseudo-fault Generation Countdown register' ),
'S3_0_c5_c5_0' : ( 'ERXMISC0_EL1', 'Selected Error Record Miscellaneous Register 0' ),
'S3_0_c5_c5_1' : ( 'ERXMISC1_EL1', 'Selected Error Record Miscellaneous Register 1' ),
'S3_0_c5_c5_2' : ( 'ERXMISC2_EL1', 'Selected Error Record Miscellaneous Register 2' ),
'S3_0_c5_c5_3' : ( 'ERXMISC3_EL1', 'Selected Error Record Miscellaneous Register 3' ),
'S3_0_c5_c6_0' : ( 'TFSR_EL1', 'Tag Fault Status Register (EL1)' ),
'S3_0_c5_c6_1' : ( 'TFSRE0_EL1', 'Tag Fault Status Register (EL0).' ),
'S3_0_c6_c0_0' : ( 'FAR_EL1', 'Fault Address Register (EL1)' ),
'S3_0_c7_c4_0' : ( 'PAR_EL1', 'Physical Address Register' ),
'S3_0_c9_c9_0' : ( 'PMSCR_EL1', 'Statistical Profiling Control Register (EL1)' ),
'S3_0_c9_c9_2' : ( 'PMSICR_EL1', 'Sampling Interval Counter Register' ),
'S3_0_c9_c9_3' : ( 'PMSIRR_EL1', 'Sampling Interval Reload Register' ),
'S3_0_c9_c9_4' : ( 'PMSFCR_EL1', 'Sampling Filter Control Register' ),
'S3_0_c9_c9_5' : ( 'PMSEVFR_EL1', 'Sampling Event Filter Register' ),
'S3_0_c9_c9_6' : ( 'PMSLATFR_EL1', 'Sampling Latency Filter Register' ),
'S3_0_c9_c9_7' : ( 'PMSIDR_EL1', 'Sampling Profiling ID Register' ),
'S3_0_c9_c10_0' : ( 'PMBLIMITR_EL1', 'Profiling Buffer Limit Address Register' ),
'S3_0_c9_c10_1' : ( 'PMBPTR_EL1', 'Profiling Buffer Write Pointer Register' ),
'S3_0_c9_c10_3' : ( 'PMBSR_EL1', 'Profiling Buffer Status/syndrome Register' ),
'S3_0_c9_c10_7' : ( 'PMBIDR_EL1', 'Profiling Buffer ID Register' ),
'S3_0_c9_c14_1' : ( 'PMINTENSET_EL1', 'Performance Monitors Interrupt Enable Set register' ),
'S3_0_c9_c14_2' : ( 'PMINTENCLR_EL1', 'Performance Monitors Interrupt Enable Clear register' ),
'S3_0_c9_c14_6' : ( 'PMMIR_EL1', 'Performance Monitors Machine Identification Register' ),
'S3_0_c10_c2_0' : ( 'MAIR_EL1', 'Memory Attribute Indirection Register (EL1)' ),
'S3_0_c10_c3_0' : ( 'AMAIR_EL1', 'Auxiliary Memory Attribute Indirection Register (EL1)' ),
'S3_0_c10_c4_0' : ( 'LORSA_EL1', 'LORegion Start Address (EL1)' ),
'S3_0_c10_c4_1' : ( 'LOREA_EL1', 'LORegion End Address (EL1)' ),
'S3_0_c10_c4_2' : ( 'LORN_EL1', 'LORegion Number (EL1)' ),
'S3_0_c10_c4_3' : ( 'LORC_EL1', 'LORegion Control (EL1)' ),
'S3_0_c10_c4_4' : ( 'MPAMIDR_EL1', 'MPAM ID Register (EL1)' ),
'S3_0_c10_c4_7' : ( 'LORID_EL1', 'LORegionID (EL1)' ),
'S3_0_c10_c5_0' : ( 'MPAM1_EL1', 'MPAM1 Register (EL1)' ),
'S3_0_c10_c5_1' : ( 'MPAM0_EL1', 'MPAM0 Register (EL1)' ),
'S3_0_c12_c0_0' : ( 'VBAR_EL1', 'Vector Base Address Register (EL1)' ),
'S3_0_c12_c0_1' : ( 'RVBAR_EL1', 'Reset Vector Base Address Register (if EL2 and EL3 not implemented)' ),
'S3_0_c12_c0_2' : ( 'RMR_EL1', 'Reset Management Register (EL1)' ),
'S3_0_c12_c1_0' : ( 'ISR_EL1', 'Interrupt Status Register' ),
'S3_0_c12_c1_1' : ( 'DISR_EL1', 'Deferred Interrupt Status Register' ),
'S3_0_c12_c8_0' : ( 'ICC_IAR0_EL1', 'Interrupt Controller Interrupt Acknowledge Register 0' ),
'S3_0_c12_c8_0' : ( 'ICV_IAR0_EL1', 'Interrupt Controller Virtual Interrupt Acknowledge Register 0' ),
'S3_0_c12_c8_1' : ( 'ICC_EOIR0_EL1', 'Interrupt Controller End Of Interrupt Register 0' ),
'S3_0_c12_c8_1' : ( 'ICV_EOIR0_EL1', 'Interrupt Controller Virtual End Of Interrupt Register 0' ),
'S3_0_c12_c8_2' : ( 'ICC_HPPIR0_EL1', 'Interrupt Controller Highest Priority Pending Interrupt Register 0' ),
'S3_0_c12_c8_2' : ( 'ICV_HPPIR0_EL1', 'Interrupt Controller Virtual Highest Priority Pending Interrupt Register 0' ),
'S3_0_c12_c8_3' : ( 'ICC_BPR0_EL1', 'Interrupt Controller Binary Point Register 0' ),
'S3_0_c12_c8_3' : ( 'ICV_BPR0_EL1', 'Interrupt Controller Virtual Binary Point Register 0' ),
'S3_0_c12_c8_4' : ( 'ICC_AP0R0_EL1', 'Interrupt Controller Active Priorities Group 0 Register 0' ),
'S3_0_c12_c8_4' : ( 'ICV_AP0R0_EL1', 'Interrupt Controller Virtual Active Priorities Group 0 Register 0' ),
'S3_0_c12_c8_5' : ( 'ICC_AP0R1_EL1', 'Interrupt Controller Active Priorities Group 0 Register 1' ),
'S3_0_c12_c8_5' : ( 'ICV_AP0R1_EL1', 'Interrupt Controller Virtual Active Priorities Group 0 Register 1' ),
'S3_0_c12_c8_6' : ( 'ICC_AP0R2_EL1', 'Interrupt Controller Active Priorities Group 0 Register 2' ),
'S3_0_c12_c8_6' : ( 'ICV_AP0R2_EL1', 'Interrupt Controller Virtual Active Priorities Group 0 Register 2' ),
'S3_0_c12_c8_7' : ( 'ICC_AP0R3_EL1', 'Interrupt Controller Active Priorities Group 0 Register 3' ),
'S3_0_c12_c8_7' : ( 'ICV_AP0R3_EL1', 'Interrupt Controller Virtual Active Priorities Group 0 Register 3' ),
'S3_0_c12_c9_0' : ( 'ICC_AP1R0_EL1', 'Interrupt Controller Active Priorities Group 1 Register 0' ),
'S3_0_c12_c9_0' : ( 'ICV_AP1R0_EL1', 'Interrupt Controller Virtual Active Priorities Group 1 Register 0' ),
'S3_0_c12_c9_1' : ( 'ICC_AP1R1_EL1', 'Interrupt Controller Active Priorities Group 1 Register 1' ),
'S3_0_c12_c9_1' : ( 'ICV_AP1R1_EL1', 'Interrupt Controller Virtual Active Priorities Group 1 Register 1' ),
'S3_0_c12_c9_2' : ( 'ICC_AP1R2_EL1', 'Interrupt Controller Active Priorities Group 1 Register 2' ),
'S3_0_c12_c9_2' : ( 'ICV_AP1R2_EL1', 'Interrupt Controller Virtual Active Priorities Group 1 Register 2' ),
'S3_0_c12_c9_3' : ( 'ICC_AP1R3_EL1', 'Interrupt Controller Active Priorities Group 1 Register 3' ),
'S3_0_c12_c9_3' : ( 'ICV_AP1R3_EL1', 'Interrupt Controller Virtual Active Priorities Group 1 Register 3' ),
'S3_0_c12_c11_1' : ( 'ICC_DIR_EL1', 'Interrupt Controller Deactivate Interrupt Register' ),
'S3_0_c12_c11_1' : ( 'ICV_DIR_EL1', 'Interrupt Controller Deactivate Virtual Interrupt Register' ),
'S3_0_c12_c11_3' : ( 'ICC_RPR_EL1', 'Interrupt Controller Running Priority Register' ),
'S3_0_c12_c11_3' : ( 'ICV_RPR_EL1', 'Interrupt Controller Virtual Running Priority Register' ),
'S3_0_c12_c11_5' : ( 'ICC_SGI1R_EL1', 'Interrupt Controller Software Generated Interrupt Group 1 Register' ),
'S3_0_c12_c11_6' : ( 'ICC_ASGI1R_EL1', 'Interrupt Controller Alias Software Generated Interrupt Group 1 Register' ),
'S3_0_c12_c11_7' : ( 'ICC_SGI0R_EL1', 'Interrupt Controller Software Generated Interrupt Group 0 Register' ),
'S3_0_c12_c12_0' : ( 'ICC_IAR1_EL1', 'Interrupt Controller Interrupt Acknowledge Register 1' ),
'S3_0_c12_c12_0' : ( 'ICV_IAR1_EL1', 'Interrupt Controller Virtual Interrupt Acknowledge Register 1' ),
'S3_0_c12_c12_1' : ( 'ICC_EOIR1_EL1', 'Interrupt Controller End Of Interrupt Register 1' ),
'S3_0_c12_c12_1' : ( 'ICV_EOIR1_EL1', 'Interrupt Controller Virtual End Of Interrupt Register 1' ),
'S3_0_c12_c12_2' : ( 'ICC_HPPIR1_EL1', 'Interrupt Controller Highest Priority Pending Interrupt Register 1' ),
'S3_0_c12_c12_2' : ( 'ICV_HPPIR1_EL1', 'Interrupt Controller Virtual Highest Priority Pending Interrupt Register 1' ),
'S3_0_c12_c12_3' : ( 'ICC_BPR1_EL1', 'Interrupt Controller Binary Point Register 1' ),
'S3_0_c12_c12_3' : ( 'ICV_BPR1_EL1', 'Interrupt Controller Virtual Binary Point Register 1' ),
'S3_0_c12_c12_4' : ( 'ICC_CTLR_EL1', 'Interrupt Controller Control Register (EL1)' ),
'S3_0_c12_c12_4' : ( 'ICV_CTLR_EL1', 'Interrupt Controller Virtual Control Register' ),
'S3_0_c12_c12_5' : ( 'ICC_SRE_EL1', 'Interrupt Controller System Register Enable register (EL1)' ),
'S3_0_c12_c12_6' : ( 'ICC_IGRPEN0_EL1', 'Interrupt Controller Interrupt Group 0 Enable register' ),
'S3_0_c12_c12_6' : ( 'ICV_IGRPEN0_EL1', 'Interrupt Controller Virtual Interrupt Group 0 Enable register' ),
'S3_0_c12_c12_7' : ( 'ICC_IGRPEN1_EL1', 'Interrupt Controller Interrupt Group 1 Enable register' ),
'S3_0_c12_c12_7' : ( 'ICV_IGRPEN1_EL1', 'Interrupt Controller Virtual Interrupt Group 1 Enable register' ),
'S3_0_c13_c0_1' : ( 'CONTEXTIDR_EL1', 'Context ID Register (EL1)' ),
'S3_0_c13_c0_4' : ( 'TPIDR_EL1', 'EL1 Software Thread ID Register' ),
'S3_0_c13_c0_7' : ( 'SCXTNUM_EL1', 'EL1 Read/Write Software Context Number' ),
'S3_0_c14_c1_0' : ( 'CNTKCTL_EL1', 'Counter-timer Kernel Control register' ),
'S3_1_c0_c0_0' : ( 'CCSIDR_EL1', 'Current Cache Size ID Register' ),
'S3_1_c0_c0_1' : ( 'CLIDR_EL1', 'Cache Level ID Register' ),
'S3_1_c0_c0_2' : ( 'CCSIDR2_EL1', 'Current Cache Size ID Register 2' ),
'S3_1_c0_c0_4' : ( 'GMID_EL1', ' Multiple tag transfer ID register' ),
'S3_1_c0_c0_7' : ( 'AIDR_EL1', 'Auxiliary ID Register' ),
'S3_2_c0_c0_0' : ( 'CSSELR_EL1', 'Cache Size Selection Register' ),
'S3_3_c0_c0_1' : ( 'CTR_EL0', 'Cache Type Register' ),
'S3_3_c0_c0_7' : ( 'DCZID_EL0', 'Data Cache Zero ID register' ),
'S3_3_c2_c4_0' : ( 'RNDR', 'Random Number' ),
'S3_3_c2_c4_1' : ( 'RNDRRS', 'Reseeded Random Number' ),
'S3_3_c4_c2_0' : ( 'NZCV', 'Condition Flags' ),
'S3_3_c4_c2_1' : ( 'DAIF', 'Interrupt Mask Bits' ),
'S3_3_c4_c2_5' : ( 'DIT', 'Data Independent Timing' ),
'S3_3_c4_c2_6' : ( 'SSBS', 'Speculative Store Bypass Safe' ),
'S3_3_c4_c2_7' : ( 'TCO', 'Tag Check Override' ),
'S3_3_c4_c4_0' : ( 'FPCR', 'Floating-point Control Register' ),
'S3_3_c4_c4_1' : ( 'FPSR', 'Floating-point Status Register' ),
'S3_3_c4_c5_0' : ( 'DSPSR_EL0', 'Debug Saved Program Status Register' ),
'S3_3_c4_c5_1' : ( 'DLR_EL0', 'Debug Link Register' ),
'S3_3_c9_c12_0' : ( 'PMCR_EL0', 'Performance Monitors Control Register' ),
'S3_3_c9_c12_1' : ( 'PMCNTENSET_EL0', 'Performance Monitors Count Enable Set register' ),
'S3_3_c9_c12_2' : ( 'PMCNTENCLR_EL0', 'Performance Monitors Count Enable Clear register' ),
'S3_3_c9_c12_3' : ( 'PMOVSCLR_EL0', 'Performance Monitors Overflow Flag Status Clear Register' ),
'S3_3_c9_c12_4' : ( 'PMSWINC_EL0', 'Performance Monitors Software Increment register' ),
'S3_3_c9_c12_5' : ( 'PMSELR_EL0', 'Performance Monitors Event Counter Selection Register' ),
'S3_3_c9_c12_6' : ( 'PMCEID0_EL0', 'Performance Monitors Common Event Identification register 0' ),
'S3_3_c9_c12_7' : ( 'PMCEID1_EL0', 'Performance Monitors Common Event Identification register 1' ),
'S3_3_c9_c13_0' : ( 'PMCCNTR_EL0', 'Performance Monitors Cycle Count Register' ),
'S3_3_c9_c13_1' : ( 'PMXEVTYPER_EL0', 'Performance Monitors Selected Event Type Register' ),
'S3_3_c9_c13_2' : ( 'PMXEVCNTR_EL0', 'Performance Monitors Selected Event Count Register' ),
'S3_3_c9_c14_0' : ( 'PMUSERENR_EL0', 'Performance Monitors User Enable Register' ),
'S3_3_c9_c14_3' : ( 'PMOVSSET_EL0', 'Performance Monitors Overflow Flag Status Set register' ),
'S3_3_c13_c0_2' : ( 'TPIDR_EL0', 'EL0 Read/Write Software Thread ID Register' ),
'S3_3_c13_c0_3' : ( 'TPIDRRO_EL0', 'EL0 Read-Only Software Thread ID Register' ),
'S3_3_c13_c0_7' : ( 'SCXTNUM_EL0', 'EL0 Read/Write Software Context Number' ),
'S3_3_c13_c2_0' : ( 'AMCR_EL0', 'Activity Monitors Control Register' ),
'S3_3_c13_c2_1' : ( 'AMCFGR_EL0', 'Activity Monitors Configuration Register' ),
'S3_3_c13_c2_2' : ( 'AMCGCR_EL0', 'Activity Monitors Counter Group Configuration Register' ),
'S3_3_c13_c2_3' : ( 'AMUSERENR_EL0', 'Activity Monitors User Enable Register' ),
'S3_3_c13_c2_4' : ( 'AMCNTENCLR0_EL0', 'Activity Monitors Count Enable Clear Register 0' ),
'S3_3_c13_c2_5' : ( 'AMCNTENSET0_EL0', 'Activity Monitors Count Enable Set Register 0' ),
'S3_3_c13_c2_6' : ( 'AMCG1IDR_EL0', 'Activity Monitors Counter Group 1 Identification Register' ),
'S3_3_c13_c3_0' : ( 'AMCNTENCLR1_EL0', 'Activity Monitors Count Enable Clear Register 1' ),
'S3_3_c13_c3_1' : ( 'AMCNTENSET1_EL0', 'Activity Monitors Count Enable Set Register 1' ),
'S3_3_c13_c4_0' : ( 'AMEVCNTR00_EL0', 'Activity Monitors Event Counter Register 0 0' ),
'S3_3_c13_c4_1' : ( 'AMEVCNTR01_EL0', 'Activity Monitors Event Counter Register 0 1' ),
'S3_3_c13_c4_2' : ( 'AMEVCNTR02_EL0', 'Activity Monitors Event Counter Register 0 2' ),
'S3_3_c13_c4_3' : ( 'AMEVCNTR03_EL0', 'Activity Monitors Event Counter Register 0 3' ),
'S3_3_c13_c4_4' : ( 'AMEVCNTR04_EL0', 'Activity Monitors Event Counter Register 0 4' ),
'S3_3_c13_c4_5' : ( 'AMEVCNTR05_EL0', 'Activity Monitors Event Counter Register 0 5' ),
'S3_3_c13_c4_6' : ( 'AMEVCNTR06_EL0', 'Activity Monitors Event Counter Register 0 6' ),
'S3_3_c13_c4_7' : ( 'AMEVCNTR07_EL0', 'Activity Monitors Event Counter Register 0 7' ),
'S3_3_c13_c5_0' : ( 'AMEVCNTR08_EL0', 'Activity Monitors Event Counter Register 0 8' ),
'S3_3_c13_c5_1' : ( 'AMEVCNTR09_EL0', 'Activity Monitors Event Counter Register 0 9' ),
'S3_3_c13_c5_2' : ( 'AMEVCNTR010_EL0', 'Activity Monitors Event Counter Register 0 10' ),
'S3_3_c13_c5_3' : ( 'AMEVCNTR011_EL0', 'Activity Monitors Event Counter Register 0 11' ),
'S3_3_c13_c5_4' : ( 'AMEVCNTR012_EL0', 'Activity Monitors Event Counter Register 0 12' ),
'S3_3_c13_c5_5' : ( 'AMEVCNTR013_EL0', 'Activity Monitors Event Counter Register 0 13' ),
'S3_3_c13_c5_6' : ( 'AMEVCNTR014_EL0', 'Activity Monitors Event Counter Register 0 14' ),
'S3_3_c13_c5_7' : ( 'AMEVCNTR015_EL0', 'Activity Monitors Event Counter Register 0 15' ),
'S3_3_c13_c6_0' : ( 'AMEVTYPER00_EL0', 'Activity Monitors Event Type Register 0 0' ),
'S3_3_c13_c6_1' : ( 'AMEVTYPER01_EL0', 'Activity Monitors Event Type Register 0 1' ),
'S3_3_c13_c6_2' : ( 'AMEVTYPER02_EL0', 'Activity Monitors Event Type Register 0 2' ),
'S3_3_c13_c6_3' : ( 'AMEVTYPER03_EL0', 'Activity Monitors Event Type Register 0 3' ),
'S3_3_c13_c6_4' : ( 'AMEVTYPER04_EL0', 'Activity Monitors Event Type Register 0 4' ),
'S3_3_c13_c6_5' : ( 'AMEVTYPER05_EL0', 'Activity Monitors Event Type Register 0 5' ),
'S3_3_c13_c6_6' : ( 'AMEVTYPER06_EL0', 'Activity Monitors Event Type Register 0 6' ),
'S3_3_c13_c6_7' : ( 'AMEVTYPER07_EL0', 'Activity Monitors Event Type Register 0 7' ),
'S3_3_c13_c7_0' : ( 'AMEVTYPER08_EL0', 'Activity Monitors Event Type Register 0 8' ),
'S3_3_c13_c7_1' : ( 'AMEVTYPER09_EL0', 'Activity Monitors Event Type Register 0 9' ),
'S3_3_c13_c7_2' : ( 'AMEVTYPER010_EL0', 'Activity Monitors Event Type Register 0 10' ),
'S3_3_c13_c7_3' : ( 'AMEVTYPER011_EL0', 'Activity Monitors Event Type Register 0 11' ),
'S3_3_c13_c7_4' : ( 'AMEVTYPER012_EL0', 'Activity Monitors Event Type Register 0 12' ),
'S3_3_c13_c7_5' : ( 'AMEVTYPER013_EL0', 'Activity Monitors Event Type Register 0 13' ),
'S3_3_c13_c7_6' : ( 'AMEVTYPER014_EL0', 'Activity Monitors Event Type Register 0 14' ),
'S3_3_c13_c7_7' : ( 'AMEVTYPER015_EL0', 'Activity Monitors Event Type Register 0 15' ),
'S3_3_c13_c12_0' : ( 'AMEVCNTR10_EL0', 'Activity Monitors Event Counter Register 1 0' ),
'S3_3_c13_c12_1' : ( 'AMEVCNTR11_EL0', 'Activity Monitors Event Counter Register 1 1' ),
'S3_3_c13_c12_2' : ( 'AMEVCNTR12_EL0', 'Activity Monitors Event Counter Register 1 2' ),
'S3_3_c13_c12_3' : ( 'AMEVCNTR13_EL0', 'Activity Monitors Event Counter Register 1 3' ),
'S3_3_c13_c12_4' : ( 'AMEVCNTR14_EL0', 'Activity Monitors Event Counter Register 1 4' ),
'S3_3_c13_c12_5' : ( 'AMEVCNTR15_EL0', 'Activity Monitors Event Counter Register 1 5' ),
'S3_3_c13_c12_6' : ( 'AMEVCNTR16_EL0', 'Activity Monitors Event Counter Register 1 6' ),
'S3_3_c13_c12_7' : ( 'AMEVCNTR17_EL0', 'Activity Monitors Event Counter Register 1 7' ),
'S3_3_c13_c13_0' : ( 'AMEVCNTR18_EL0', 'Activity Monitors Event Counter Register 1 8' ),
'S3_3_c13_c13_1' : ( 'AMEVCNTR19_EL0', 'Activity Monitors Event Counter Register 1 9' ),
'S3_3_c13_c13_2' : ( 'AMEVCNTR110_EL0', 'Activity Monitors Event Counter Register 1 10' ),
'S3_3_c13_c13_3' : ( 'AMEVCNTR111_EL0', 'Activity Monitors Event Counter Register 1 11' ),
'S3_3_c13_c13_4' : ( 'AMEVCNTR112_EL0', 'Activity Monitors Event Counter Register 1 12' ),
'S3_3_c13_c13_5' : ( 'AMEVCNTR113_EL0', 'Activity Monitors Event Counter Register 1 13' ),
'S3_3_c13_c13_6' : ( 'AMEVCNTR114_EL0', 'Activity Monitors Event Counter Register 1 14' ),
'S3_3_c13_c13_7' : ( 'AMEVCNTR115_EL0', 'Activity Monitors Event Counter Register 1 15' ),
'S3_3_c13_c14_0' : ( 'AMEVTYPER10_EL0', 'Activity Monitors Event Type Register 1 0' ),
'S3_3_c13_c14_1' : ( 'AMEVTYPER11_EL0', 'Activity Monitors Event Type Register 1 1' ),
'S3_3_c13_c14_2' : ( 'AMEVTYPER12_EL0', 'Activity Monitors Event Type Register 1 2' ),
'S3_3_c13_c14_3' : ( 'AMEVTYPER13_EL0', 'Activity Monitors Event Type Register 1 3' ),
'S3_3_c13_c14_4' : ( 'AMEVTYPER14_EL0', 'Activity Monitors Event Type Register 1 4' ),
'S3_3_c13_c14_5' : ( 'AMEVTYPER15_EL0', 'Activity Monitors Event Type Register 1 5' ),
'S3_3_c13_c14_6' : ( 'AMEVTYPER16_EL0', 'Activity Monitors Event Type Register 1 6' ),
'S3_3_c13_c14_7' : ( 'AMEVTYPER17_EL0', 'Activity Monitors Event Type Register 1 7' ),
'S3_3_c13_c15_0' : ( 'AMEVTYPER18_EL0', 'Activity Monitors Event Type Register 1 8' ),
'S3_3_c13_c15_1' : ( 'AMEVTYPER19_EL0', 'Activity Monitors Event Type Register 1 9' ),
'S3_3_c13_c15_2' : ( 'AMEVTYPER110_EL0', 'Activity Monitors Event Type Register 1 10' ),
'S3_3_c13_c15_3' : ( 'AMEVTYPER111_EL0', 'Activity Monitors Event Type Register 1 11' ),
'S3_3_c13_c15_4' : ( 'AMEVTYPER112_EL0', 'Activity Monitors Event Type Register 1 12' ),
'S3_3_c13_c15_5' : ( 'AMEVTYPER113_EL0', 'Activity Monitors Event Type Register 1 13' ),
'S3_3_c13_c15_6' : ( 'AMEVTYPER114_EL0', 'Activity Monitors Event Type Register 1 14' ),
'S3_3_c13_c15_7' : ( 'AMEVTYPER115_EL0', 'Activity Monitors Event Type Register 1 15' ),
'S3_3_c14_c0_0' : ( 'CNTFRQ_EL0', 'Counter-timer Frequency register' ),
'S3_3_c14_c0_1' : ( 'CNTPCT_EL0', 'Counter-timer Physical Count register' ),
'S3_3_c14_c0_2' : ( 'CNTVCT_EL0', 'Counter-timer Virtual Count register' ),
'S3_3_c14_c0_5' : ( 'CNTPCTSS_EL0', 'Counter-timer Self-Synchronized Physical Count register' ),
'S3_3_c14_c0_6' : ( 'CNTVCTSS_EL0', 'Counter-timer Self-Synchronized Virtual Count register' ),
'S3_3_c14_c2_0' : ( 'CNTP_TVAL_EL0', 'Counter-timer Physical Timer TimerValue register' ),
'S3_3_c14_c2_1' : ( 'CNTP_CTL_EL0', 'Counter-timer Physical Timer Control register' ),
'S3_3_c14_c2_2' : ( 'CNTP_CVAL_EL0', 'Counter-timer Physical Timer CompareValue register' ),
'S3_3_c14_c3_0' : ( 'CNTV_TVAL_EL0', 'Counter-timer Virtual Timer TimerValue register' ),
'S3_3_c14_c3_1' : ( 'CNTV_CTL_EL0', 'Counter-timer Virtual Timer Control register' ),
'S3_3_c14_c3_2' : ( 'CNTV_CVAL_EL0', 'Counter-timer Virtual Timer CompareValue register' ),
'S3_3_c14_c8_0' : ( 'PMEVCNTR0_EL0', 'Performance Monitors Event Count Register 0' ),
'S3_3_c14_c8_1' : ( 'PMEVCNTR1_EL0', 'Performance Monitors Event Count Register 1' ),
'S3_3_c14_c8_2' : ( 'PMEVCNTR2_EL0', 'Performance Monitors Event Count Register 2' ),
'S3_3_c14_c8_3' : ( 'PMEVCNTR3_EL0', 'Performance Monitors Event Count Register 3' ),
'S3_3_c14_c8_4' : ( 'PMEVCNTR4_EL0', 'Performance Monitors Event Count Register 4' ),
'S3_3_c14_c8_5' : ( 'PMEVCNTR5_EL0', 'Performance Monitors Event Count Register 5' ),
'S3_3_c14_c8_6' : ( 'PMEVCNTR6_EL0', 'Performance Monitors Event Count Register 6' ),
'S3_3_c14_c8_7' : ( 'PMEVCNTR7_EL0', 'Performance Monitors Event Count Register 7' ),
'S3_3_c14_c9_0' : ( 'PMEVCNTR8_EL0', 'Performance Monitors Event Count Register 8' ),
'S3_3_c14_c9_1' : ( 'PMEVCNTR9_EL0', 'Performance Monitors Event Count Register 9' ),
'S3_3_c14_c9_2' : ( 'PMEVCNTR10_EL0', 'Performance Monitors Event Count Register 10' ),
'S3_3_c14_c9_3' : ( 'PMEVCNTR11_EL0', 'Performance Monitors Event Count Register 11' ),
'S3_3_c14_c9_4' : ( 'PMEVCNTR12_EL0', 'Performance Monitors Event Count Register 12' ),
'S3_3_c14_c9_5' : ( 'PMEVCNTR13_EL0', 'Performance Monitors Event Count Register 13' ),
'S3_3_c14_c9_6' : ( 'PMEVCNTR14_EL0', 'Performance Monitors Event Count Register 14' ),
'S3_3_c14_c9_7' : ( 'PMEVCNTR15_EL0', 'Performance Monitors Event Count Register 15' ),
'S3_3_c14_c10_0' : ( 'PMEVCNTR16_EL0', 'Performance Monitors Event Count Register 16' ),
'S3_3_c14_c10_1' : ( 'PMEVCNTR17_EL0', 'Performance Monitors Event Count Register 17' ),
'S3_3_c14_c10_2' : ( 'PMEVCNTR18_EL0', 'Performance Monitors Event Count Register 18' ),
'S3_3_c14_c10_3' : ( 'PMEVCNTR19_EL0', 'Performance Monitors Event Count Register 19' ),
'S3_3_c14_c10_4' : ( 'PMEVCNTR20_EL0', 'Performance Monitors Event Count Register 20' ),
'S3_3_c14_c10_5' : ( 'PMEVCNTR21_EL0', 'Performance Monitors Event Count Register 21' ),
'S3_3_c14_c10_6' : ( 'PMEVCNTR22_EL0', 'Performance Monitors Event Count Register 22' ),
'S3_3_c14_c10_7' : ( 'PMEVCNTR23_EL0', 'Performance Monitors Event Count Register 23' ),
'S3_3_c14_c11_0' : ( 'PMEVCNTR24_EL0', 'Performance Monitors Event Count Register 24' ),
'S3_3_c14_c11_1' : ( 'PMEVCNTR25_EL0', 'Performance Monitors Event Count Register 25' ),
'S3_3_c14_c11_2' : ( 'PMEVCNTR26_EL0', 'Performance Monitors Event Count Register 26' ),
'S3_3_c14_c11_3' : ( 'PMEVCNTR27_EL0', 'Performance Monitors Event Count Register 27' ),
'S3_3_c14_c11_4' : ( 'PMEVCNTR28_EL0', 'Performance Monitors Event Count Register 28' ),
'S3_3_c14_c11_5' : ( 'PMEVCNTR29_EL0', 'Performance Monitors Event Count Register 29' ),
'S3_3_c14_c11_6' : ( 'PMEVCNTR30_EL0', 'Performance Monitors Event Count Register 30' ),
'S3_3_c14_c11_7' : ( 'PMEVCNTR31_EL0', 'Performance Monitors Event Count Register 31' ),
'S3_3_c14_c12_0' : ( 'PMEVTYPER0_EL0', 'Performance Monitors Event Type Register 0' ),
'S3_3_c14_c12_1' : ( 'PMEVTYPER1_EL0', 'Performance Monitors Event Type Register 1' ),
'S3_3_c14_c12_2' : ( 'PMEVTYPER2_EL0', 'Performance Monitors Event Type Register 2' ),
'S3_3_c14_c12_3' : ( 'PMEVTYPER3_EL0', 'Performance Monitors Event Type Register 3' ),
'S3_3_c14_c12_4' : ( 'PMEVTYPER4_EL0', 'Performance Monitors Event Type Register 4' ),
'S3_3_c14_c12_5' : ( 'PMEVTYPER5_EL0', 'Performance Monitors Event Type Register 5' ),
'S3_3_c14_c12_6' : ( 'PMEVTYPER6_EL0', 'Performance Monitors Event Type Register 6' ),
'S3_3_c14_c12_7' : ( 'PMEVTYPER7_EL0', 'Performance Monitors Event Type Register 7' ),
'S3_3_c14_c13_0' : ( 'PMEVTYPER8_EL0', 'Performance Monitors Event Type Register 8' ),
'S3_3_c14_c13_1' : ( 'PMEVTYPER9_EL0', 'Performance Monitors Event Type Register 9' ),
'S3_3_c14_c13_2' : ( 'PMEVTYPER10_EL0', 'Performance Monitors Event Type Register 10' ),
'S3_3_c14_c13_3' : ( 'PMEVTYPER11_EL0', 'Performance Monitors Event Type Register 11' ),
'S3_3_c14_c13_4' : ( 'PMEVTYPER12_EL0', 'Performance Monitors Event Type Register 12' ),
'S3_3_c14_c13_5' : ( 'PMEVTYPER13_EL0', 'Performance Monitors Event Type Register 13' ),
'S3_3_c14_c13_6' : ( 'PMEVTYPER14_EL0', 'Performance Monitors Event Type Register 14' ),
'S3_3_c14_c13_7' : ( 'PMEVTYPER15_EL0', 'Performance Monitors Event Type Register 15' ),
'S3_3_c14_c14_0' : ( 'PMEVTYPER16_EL0', 'Performance Monitors Event Type Register 16' ),
'S3_3_c14_c14_1' : ( 'PMEVTYPER17_EL0', 'Performance Monitors Event Type Register 17' ),
'S3_3_c14_c14_2' : ( 'PMEVTYPER18_EL0', 'Performance Monitors Event Type Register 18' ),
'S3_3_c14_c14_3' : ( 'PMEVTYPER19_EL0', 'Performance Monitors Event Type Register 19' ),
'S3_3_c14_c14_4' : ( 'PMEVTYPER20_EL0', 'Performance Monitors Event Type Register 20' ),
'S3_3_c14_c14_5' : ( 'PMEVTYPER21_EL0', 'Performance Monitors Event Type Register 21' ),
'S3_3_c14_c14_6' : ( 'PMEVTYPER22_EL0', 'Performance Monitors Event Type Register 22' ),
'S3_3_c14_c14_7' : ( 'PMEVTYPER23_EL0', 'Performance Monitors Event Type Register 23' ),
'S3_3_c14_c15_0' : ( 'PMEVTYPER24_EL0', 'Performance Monitors Event Type Register 24' ),
'S3_3_c14_c15_1' : ( 'PMEVTYPER25_EL0', 'Performance Monitors Event Type Register 25' ),
'S3_3_c14_c15_2' : ( 'PMEVTYPER26_EL0', 'Performance Monitors Event Type Register 26' ),
'S3_3_c14_c15_3' : ( 'PMEVTYPER27_EL0', 'Performance Monitors Event Type Register 27' ),
'S3_3_c14_c15_4' : ( 'PMEVTYPER28_EL0', 'Performance Monitors Event Type Register 28' ),
'S3_3_c14_c15_5' : ( 'PMEVTYPER29_EL0', 'Performance Monitors Event Type Register 29' ),
'S3_3_c14_c15_6' : ( 'PMEVTYPER30_EL0', 'Performance Monitors Event Type Register 30' ),
'S3_3_c14_c15_7' : ( 'PMCCFILTR_EL0', 'Performance Monitors Cycle Count Filter Register' ),
'S3_3_c14_c15_7' : ( 'PMEVTYPER31_EL0', 'Performance Monitors Event Type Register 31' ),
'S3_4_c0_c0_0' : ( 'VPIDR_EL2', 'Virtualization Processor ID Register' ),
'S3_4_c0_c0_5' : ( 'VMPIDR_EL2', 'Virtualization Multiprocessor ID Register' ),
'S3_4_c1_c0_0' : ( 'SCTLR_EL2', 'System Control Register (EL2)' ),
'S3_4_c1_c0_1' : ( 'ACTLR_EL2', 'Auxiliary Control Register (EL2)' ),
'S3_4_c1_c1_0' : ( 'HCR_EL2', 'Hypervisor Configuration Register' ),
'S3_4_c1_c1_1' : ( 'MDCR_EL2', 'Monitor Debug Configuration Register (EL2)' ),
'S3_4_c1_c1_2' : ( 'CPTR_EL2', 'Architectural Feature Trap Register (EL2)' ),
'S3_4_c1_c1_3' : ( 'HSTR_EL2', 'Hypervisor System Trap Register' ),
'S3_4_c1_c1_4' : ( 'HFGRTR_EL2', 'Hypervisor Fine-Grained Read Trap Register' ),
'S3_4_c1_c1_5' : ( 'HFGWTR_EL2', 'Hypervisor Fine-Grained Write Trap Register' ),
'S3_4_c1_c1_6' : ( 'HFGITR_EL2', 'Hypervisor Fine-Grained Instruction Trap Register' ),
'S3_4_c1_c1_7' : ( 'HACR_EL2', 'Hypervisor Auxiliary Control Register' ),
'S3_4_c1_c2_0' : ( 'ZCR_EL2', 'SVE Control Register for EL2' ),
'S3_4_c1_c2_1' : ( 'TRFCR_EL2', 'Trace Filter Control Register (EL2)' ),
'S3_4_c1_c3_1' : ( 'SDER32_EL2', 'AArch32 Secure Debug Enable Register' ),
'S3_4_c2_c0_0' : ( 'TTBR0_EL2', 'Translation Table Base Register 0 (EL2)' ),
'S3_4_c2_c0_1' : ( 'TTBR1_EL2', 'Translation Table Base Register 1 (EL2)' ),
'S3_4_c2_c0_2' : ( 'TCR_EL2', 'Translation Control Register (EL2)' ),
'S3_4_c2_c1_0' : ( 'VTTBR_EL2', 'Virtualization Translation Table Base Register' ),
'S3_4_c2_c1_2' : ( 'VTCR_EL2', 'Virtualization Translation Control Register' ),
'S3_4_c2_c2_0' : ( 'VNCR_EL2', 'Virtual Nested Control Register' ),
'S3_4_c2_c6_0' : ( 'VSTTBR_EL2', 'Virtualization Secure Translation Table Base Register' ),
'S3_4_c2_c6_2' : ( 'VSTCR_EL2', 'Virtualization Secure Translation Control Register' ),
'S3_4_c3_c0_0' : ( 'DACR32_EL2', 'Domain Access Control Register' ),
'S3_4_c3_c1_4' : ( 'HDFGRTR_EL2', 'Hypervisor Debug Fine-Grained Read Trap Register' ),
'S3_4_c3_c1_5' : ( 'HDFGWTR_EL2', 'Hypervisor Debug Fine-Grained Write Trap Register' ),
'S3_4_c3_c1_6' : ( 'HAFGRTR_EL2', 'Hypervisor Activity Monitors Fine-Grained Read Trap Register' ),
'S3_4_c4_c0_0' : ( 'SPSR_EL2', 'Saved Program Status Register (EL2)' ),
'S3_4_c4_c0_1' : ( 'ELR_EL2', 'Exception Link Register (EL2)' ),
'S3_4_c4_c1_0' : ( 'SP_EL1', 'Stack Pointer (EL1)' ),
'S3_4_c4_c3_0' : ( 'SPSR_irq', 'Saved Program Status Register (IRQ mode)' ),
'S3_4_c4_c3_1' : ( 'SPSR_abt', 'Saved Program Status Register (Abort mode)' ),
'S3_4_c4_c3_2' : ( 'SPSR_und', 'Saved Program Status Register (Undefined mode)' ),
'S3_4_c4_c3_3' : ( 'SPSR_fiq', 'Saved Program Status Register (FIQ mode)' ),
'S3_4_c5_c0_1' : ( 'IFSR32_EL2', 'Instruction Fault Status Register (EL2)' ),
'S3_4_c5_c1_0' : ( 'AFSR0_EL2', 'Auxiliary Fault Status Register 0 (EL2)' ),
'S3_4_c5_c1_1' : ( 'AFSR1_EL2', 'Auxiliary Fault Status Register 1 (EL2)' ),
'S3_4_c5_c2_0' : ( 'ESR_EL2', 'Exception Syndrome Register (EL2)' ),
'S3_4_c5_c2_3' : ( 'VSESR_EL2', 'Virtual SError Exception Syndrome Register' ),
'S3_4_c5_c3_0' : ( 'FPEXC32_EL2', 'Floating-Point Exception Control register' ),
'S3_4_c5_c6_0' : ( 'TFSR_EL2', 'Tag Fault Status Register (EL2)' ),
'S3_4_c6_c0_0' : ( 'FAR_EL2', 'Fault Address Register (EL2)' ),
'S3_4_c6_c0_4' : ( 'HPFAR_EL2', 'Hypervisor IPA Fault Address Register' ),
'S3_4_c9_c9_0' : ( 'PMSCR_EL2', 'Statistical Profiling Control Register (EL2)' ),
'S3_4_c10_c2_0' : ( 'MAIR_EL2', 'Memory Attribute Indirection Register (EL2)' ),
'S3_4_c10_c3_0' : ( 'AMAIR_EL2', 'Auxiliary Memory Attribute Indirection Register (EL2)' ),
'S3_4_c10_c4_0' : ( 'MPAMHCR_EL2', 'MPAM Hypervisor Control Register (EL2)' ),
'S3_4_c10_c4_1' : ( 'MPAMVPMV_EL2', 'MPAM Virtual Partition Mapping Valid Register' ),
'S3_4_c10_c5_0' : ( 'MPAM2_EL2', 'MPAM2 Register (EL2)' ),
'S3_4_c10_c6_0' : ( 'MPAMVPM0_EL2', 'MPAM Virtual PARTID Mapping Register 0' ),
'S3_4_c10_c6_1' : ( 'MPAMVPM1_EL2', 'MPAM Virtual PARTID Mapping Register 1' ),
'S3_4_c10_c6_2' : ( 'MPAMVPM2_EL2', 'MPAM Virtual PARTID Mapping Register 2' ),
'S3_4_c10_c6_3' : ( 'MPAMVPM3_EL2', 'MPAM Virtual PARTID Mapping Register 3' ),
'S3_4_c10_c6_4' : ( 'MPAMVPM4_EL2', 'MPAM Virtual PARTID Mapping Register 4' ),
'S3_4_c10_c6_5' : ( 'MPAMVPM5_EL2', 'MPAM Virtual PARTID Mapping Register 5' ),
'S3_4_c10_c6_6' : ( 'MPAMVPM6_EL2', 'MPAM Virtual PARTID Mapping Register 6' ),
'S3_4_c10_c6_7' : ( 'MPAMVPM7_EL2', 'MPAM Virtual PARTID Mapping Register 7' ),
'S3_4_c12_c0_0' : ( 'VBAR_EL2', 'Vector Base Address Register (EL2)' ),
'S3_4_c12_c0_1' : ( 'RVBAR_EL2', 'Reset Vector Base Address Register (if EL3 not implemented)' ),
'S3_4_c12_c0_2' : ( 'RMR_EL2', 'Reset Management Register (EL2)' ),
'S3_4_c12_c1_1' : ( 'VDISR_EL2', 'Virtual Deferred Interrupt Status Register' ),
'S3_4_c12_c8_0' : ( 'ICH_AP0R0_EL2', 'Interrupt Controller Hyp Active Priorities Group 0 Register 0' ),
'S3_4_c12_c8_1' : ( 'ICH_AP0R1_EL2', 'Interrupt Controller Hyp Active Priorities Group 0 Register 1' ),
'S3_4_c12_c8_2' : ( 'ICH_AP0R2_EL2', 'Interrupt Controller Hyp Active Priorities Group 0 Register 2' ),
'S3_4_c12_c8_3' : ( 'ICH_AP0R3_EL2', 'Interrupt Controller Hyp Active Priorities Group 0 Register 3' ),
'S3_4_c12_c9_0' : ( 'ICH_AP1R0_EL2', 'Interrupt Controller Hyp Active Priorities Group 1 Register 0' ),
'S3_4_c12_c9_1' : ( 'ICH_AP1R1_EL2', 'Interrupt Controller Hyp Active Priorities Group 1 Register 1' ),
'S3_4_c12_c9_2' : ( 'ICH_AP1R2_EL2', 'Interrupt Controller Hyp Active Priorities Group 1 Register 2' ),
'S3_4_c12_c9_3' : ( 'ICH_AP1R3_EL2', 'Interrupt Controller Hyp Active Priorities Group 1 Register 3' ),
'S3_4_c12_c9_5' : ( 'ICC_SRE_EL2', 'Interrupt Controller System Register Enable register (EL2)' ),
'S3_4_c12_c11_0' : ( 'ICH_HCR_EL2', 'Interrupt Controller Hyp Control Register' ),
'S3_4_c12_c11_1' : ( 'ICH_VTR_EL2', 'Interrupt Controller VGIC Type Register' ),
'S3_4_c12_c11_2' : ( 'ICH_MISR_EL2', 'Interrupt Controller Maintenance Interrupt State Register' ),
'S3_4_c12_c11_3' : ( 'ICH_EISR_EL2', 'Interrupt Controller End of Interrupt Status Register' ),
'S3_4_c12_c11_5' : ( 'ICH_ELRSR_EL2', 'Interrupt Controller Empty List Register Status Register' ),
'S3_4_c12_c11_7' : ( 'ICH_VMCR_EL2', 'Interrupt Controller Virtual Machine Control Register' ),
'S3_4_c12_c12_0' : ( 'ICH_LR0_EL2', 'Interrupt Controller List Register 0' ),
'S3_4_c12_c12_1' : ( 'ICH_LR1_EL2', 'Interrupt Controller List Register 1' ),
'S3_4_c12_c12_2' : ( 'ICH_LR2_EL2', 'Interrupt Controller List Register 2' ),
'S3_4_c12_c12_3' : ( 'ICH_LR3_EL2', 'Interrupt Controller List Register 3' ),
'S3_4_c12_c12_4' : ( 'ICH_LR4_EL2', 'Interrupt Controller List Register 4' ),
'S3_4_c12_c12_5' : ( 'ICH_LR5_EL2', 'Interrupt Controller List Register 5' ),
'S3_4_c12_c12_6' : ( 'ICH_LR6_EL2', 'Interrupt Controller List Register 6' ),
'S3_4_c12_c12_7' : ( 'ICH_LR7_EL2', 'Interrupt Controller List Register 7' ),
'S3_4_c12_c13_0' : ( 'ICH_LR8_EL2', 'Interrupt Controller List Register 8' ),
'S3_4_c12_c13_1' : ( 'ICH_LR9_EL2', 'Interrupt Controller List Register 9' ),
'S3_4_c12_c13_2' : ( 'ICH_LR10_EL2', 'Interrupt Controller List Register 10' ),
'S3_4_c12_c13_3' : ( 'ICH_LR11_EL2', 'Interrupt Controller List Register 11' ),
'S3_4_c12_c13_4' : ( 'ICH_LR12_EL2', 'Interrupt Controller List Register 12' ),
'S3_4_c12_c13_5' : ( 'ICH_LR13_EL2', 'Interrupt Controller List Register 13' ),
'S3_4_c12_c13_6' : ( 'ICH_LR14_EL2', 'Interrupt Controller List Register 14' ),
'S3_4_c12_c13_7' : ( 'ICH_LR15_EL2', 'Interrupt Controller List Register 15' ),
'S3_4_c13_c0_1' : ( 'CONTEXTIDR_EL2', 'Context ID Register (EL2)' ),
'S3_4_c13_c0_2' : ( 'TPIDR_EL2', 'EL2 Software Thread ID Register' ),
'S3_4_c13_c0_7' : ( 'SCXTNUM_EL2', 'EL2 Read/Write Software Context Number' ),
'S3_4_c13_c8_0' : ( 'AMEVCNTVOFF00_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 0' ),
'S3_4_c13_c8_1' : ( 'AMEVCNTVOFF01_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 1' ),
'S3_4_c13_c8_2' : ( 'AMEVCNTVOFF02_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 2' ),
'S3_4_c13_c8_3' : ( 'AMEVCNTVOFF03_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 3' ),
'S3_4_c13_c8_4' : ( 'AMEVCNTVOFF04_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 4' ),
'S3_4_c13_c8_5' : ( 'AMEVCNTVOFF05_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 5' ),
'S3_4_c13_c8_6' : ( 'AMEVCNTVOFF06_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 6' ),
'S3_4_c13_c8_7' : ( 'AMEVCNTVOFF07_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 7' ),
'S3_4_c13_c9_0' : ( 'AMEVCNTVOFF08_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 8' ),
'S3_4_c13_c9_1' : ( 'AMEVCNTVOFF09_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 9' ),
'S3_4_c13_c9_2' : ( 'AMEVCNTVOFF010_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 10' ),
'S3_4_c13_c9_3' : ( 'AMEVCNTVOFF011_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 11' ),
'S3_4_c13_c9_4' : ( 'AMEVCNTVOFF012_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 12' ),
'S3_4_c13_c9_5' : ( 'AMEVCNTVOFF013_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 13' ),
'S3_4_c13_c9_6' : ( 'AMEVCNTVOFF014_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 14' ),
'S3_4_c13_c9_7' : ( 'AMEVCNTVOFF015_EL2', 'Activity Monitors Event Counter Virtual Offset Register 0 15' ),
'S3_4_c13_c10_0' : ( 'AMEVCNTVOFF10_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 0' ),
'S3_4_c13_c10_1' : ( 'AMEVCNTVOFF11_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 1' ),
'S3_4_c13_c10_2' : ( 'AMEVCNTVOFF12_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 2' ),
'S3_4_c13_c10_3' : ( 'AMEVCNTVOFF13_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 3' ),
'S3_4_c13_c10_4' : ( 'AMEVCNTVOFF14_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 4' ),
'S3_4_c13_c10_5' : ( 'AMEVCNTVOFF15_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 5' ),
'S3_4_c13_c10_6' : ( 'AMEVCNTVOFF16_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 6' ),
'S3_4_c13_c10_7' : ( 'AMEVCNTVOFF17_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 7' ),
'S3_4_c13_c11_0' : ( 'AMEVCNTVOFF18_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 8' ),
'S3_4_c13_c11_1' : ( 'AMEVCNTVOFF19_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 9' ),
'S3_4_c13_c11_2' : ( 'AMEVCNTVOFF110_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 10' ),
'S3_4_c13_c11_3' : ( 'AMEVCNTVOFF111_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 11' ),
'S3_4_c13_c11_4' : ( 'AMEVCNTVOFF112_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 12' ),
'S3_4_c13_c11_5' : ( 'AMEVCNTVOFF113_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 13' ),
'S3_4_c13_c11_6' : ( 'AMEVCNTVOFF114_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 14' ),
'S3_4_c13_c11_7' : ( 'AMEVCNTVOFF115_EL2', 'Activity Monitors Event Counter Virtual Offset Register 1 15' ),
'S3_4_c14_c0_3' : ( 'CNTVOFF_EL2', 'Counter-timer Virtual Offset register' ),
'S3_4_c14_c0_6' : ( 'CNTPOFF_EL2', 'Counter-timer Physical Offset register' ),
'S3_4_c14_c1_0' : ( 'CNTHCTL_EL2', 'Counter-timer Hypervisor Control register' ),
'S3_4_c14_c2_0' : ( 'CNTHP_TVAL_EL2', 'Counter-timer Physical Timer TimerValue register (EL2)' ),
'S3_4_c14_c2_1' : ( 'CNTHP_CTL_EL2', 'Counter-timer Hypervisor Physical Timer Control register' ),
'S3_4_c14_c2_2' : ( 'CNTHP_CVAL_EL2', 'Counter-timer Physical Timer CompareValue register (EL2)' ),
'S3_4_c14_c3_0' : ( 'CNTHV_TVAL_EL2', 'Counter-timer Virtual Timer TimerValue Register (EL2)' ),
'S3_4_c14_c3_1' : ( 'CNTHV_CTL_EL2', 'Counter-timer Virtual Timer Control register (EL2)' ),
'S3_4_c14_c3_2' : ( 'CNTHV_CVAL_EL2', 'Counter-timer Virtual Timer CompareValue register (EL2)' ),
'S3_4_c14_c4_0' : ( 'CNTHVS_TVAL_EL2', 'Counter-timer Secure Virtual Timer TimerValue register (EL2)' ),
'S3_4_c14_c4_1' : ( 'CNTHVS_CTL_EL2', 'Counter-timer Secure Virtual Timer Control register (EL2)' ),
'S3_4_c14_c4_2' : ( 'CNTHVS_CVAL_EL2', 'Counter-timer Secure Virtual Timer CompareValue register (EL2)' ),
'S3_4_c14_c5_0' : ( 'CNTHPS_TVAL_EL2', 'Counter-timer Secure Physical Timer TimerValue register (EL2)' ),
'S3_4_c14_c5_1' : ( 'CNTHPS_CTL_EL2', 'Counter-timer Secure Physical Timer Control register (EL2)' ),
'S3_4_c14_c5_2' : ( 'CNTHPS_CVAL_EL2', 'Counter-timer Secure Physical Timer CompareValue register (EL2)' ),
'S3_6_c1_c0_0' : ( 'SCTLR_EL3', 'System Control Register (EL3)' ),
'S3_6_c1_c0_1' : ( 'ACTLR_EL3', 'Auxiliary Control Register (EL3)' ),
'S3_6_c1_c1_0' : ( 'SCR_EL3', 'Secure Configuration Register' ),
'S3_6_c1_c1_1' : ( 'SDER32_EL3', 'AArch32 Secure Debug Enable Register' ),
'S3_6_c1_c1_2' : ( 'CPTR_EL3', 'Architectural Feature Trap Register (EL3)' ),
'S3_6_c1_c2_0' : ( 'ZCR_EL3', 'SVE Control Register for EL3' ),
'S3_6_c1_c3_1' : ( 'MDCR_EL3', 'Monitor Debug Configuration Register (EL3)' ),
'S3_6_c2_c0_0' : ( 'TTBR0_EL3', 'Translation Table Base Register 0 (EL3)' ),
'S3_6_c2_c0_2' : ( 'TCR_EL3', 'Translation Control Register (EL3)' ),
'S3_6_c4_c0_0' : ( 'SPSR_EL3', 'Saved Program Status Register (EL3)' ),
'S3_6_c4_c0_1' : ( 'ELR_EL3', 'Exception Link Register (EL3)' ),
'S3_6_c4_c1_0' : ( 'SP_EL2', 'Stack Pointer (EL2)' ),
'S3_6_c5_c1_0' : ( 'AFSR0_EL3', 'Auxiliary Fault Status Register 0 (EL3)' ),
'S3_6_c5_c1_1' : ( 'AFSR1_EL3', 'Auxiliary Fault Status Register 1 (EL3)' ),
'S3_6_c5_c2_0' : ( 'ESR_EL3', 'Exception Syndrome Register (EL3)' ),
'S3_6_c5_c6_0' : ( 'TFSR_EL3', 'Tag Fault Status Register (EL3)' ),
'S3_6_c6_c0_0' : ( 'FAR_EL3', 'Fault Address Register (EL3)' ),
'S3_6_c10_c2_0' : ( 'MAIR_EL3', 'Memory Attribute Indirection Register (EL3)' ),
'S3_6_c10_c3_0' : ( 'AMAIR_EL3', 'Auxiliary Memory Attribute Indirection Register (EL3)' ),
'S3_6_c10_c5_0' : ( 'MPAM3_EL3', 'MPAM3 Register (EL3)' ),
'S3_6_c12_c0_0' : ( 'VBAR_EL3', 'Vector Base Address Register (EL3)' ),
'S3_6_c12_c0_1' : ( 'RVBAR_EL3', 'Reset Vector Base Address Register (if EL3 implemented)' ),
'S3_6_c12_c0_2' : ( 'RMR_EL3', 'Reset Management Register (EL3)' ),
'S3_6_c12_c12_4' : ( 'ICC_CTLR_EL3', 'Interrupt Controller Control Register (EL3)' ),
'S3_6_c12_c12_5' : ( 'ICC_SRE_EL3', 'Interrupt Controller System Register Enable register (EL3)' ),
'S3_6_c12_c12_7' : ( 'ICC_IGRPEN1_EL3', 'Interrupt Controller Interrupt Group 1 Enable register (EL3)' ),
'S3_6_c13_c0_2' : ( 'TPIDR_EL3', 'EL3 Software Thread ID Register' ),
'S3_6_c13_c0_7' : ( 'SCXTNUM_EL3', 'EL3 Read/Write Software Context Number' ),
'S3_7_c14_c2_0' : ( 'CNTPS_TVAL_EL1', 'Counter-timer Physical Secure Timer TimerValue register' ),
'S3_7_c14_c2_1' : ( 'CNTPS_CTL_EL1', 'Counter-timer Physical Secure Timer Control register' ),
'S3_7_c14_c2_2' : ( 'CNTPS_CVAL_EL1', 'Counter-timer Physical Secure Timer CompareValue register' ),
}
def pstate_insn(op2):
pstate = PSTATE_ACCESS.get(op2)
if pstate:
return pstate
else:
return ('#{:b}'.format(op2))
def sysreg_insn(op0, op1, CRn, CRm, op2):
sr = 'S{}_{}_c{}_c{}_{}'.format(op0, op1, CRn, CRm, op2)
#print(sr)
reg = SYSTEM_REGISTERS.get(sr)
if reg:
name = reg[0]
description = reg[1]
return name
else:
return sr
def process_msr(insn):
assert(insn & 0xFFC00000 == 0xD5000000)
L = (insn >> 21) & 0x1
op0 = (insn >> 19) & 0x3
op1 = (insn >> 16) & 0x7
CRn = (insn >> 12) & 0xf
CRm = (insn >> 8) & 0xf
op2 = (insn >> 5) & 0x7
Rt = (insn >> 0) & 0x1f
if L == 0b0 and op0 == 0b00 and CRn == 0b0100 and Rt == 0b11111:
return pstate_insn(op2)
elif op0 != 0b00:
return sysreg_insn(op0, op1, CRn, CRm, op2)
else:
return '{:08x}'.format(insn)
class Aarch64SysRegHook(idaapi.IDP_Hooks):
CUSTOM_INSTRUCTIONS = {idaapi.ARM_mrs, idaapi.ARM_msr, idaapi.ARM_sys}
INDENT = 16
def ev_out_operand(self, outctx, op):
if outctx.insn.itype in self.CUSTOM_INSTRUCTIONS:
insn = outctx.insn
#print("ev_out_operand")
if op.n < 2:
if outctx.insn.itype == idaapi.ARM_mrs:
if op.n == 1:
outctx.out_colored_register_line(sysreg_insn(3, insn.ops[1].value, insn.ops[2].reg, insn.ops[3].reg, insn.ops[4].value))
else:
return 0
elif outctx.insn.itype == idaapi.ARM_msr:
if op.n == 0:
outctx.out_colored_register_line(process_msr(idaapi.get_dword(outctx.insn.ea)))
else:
if insn.ops[2].type == idaapi.o_void:
return 0
else:
insn.itype = ITYPE_MSR
outctx.out_one_operand(4)
insn.itype = idaapi.ARM_msr
elif outctx.insn.itype == idaapi.ARM_sys:
if op.n == 0:
outctx.out_colored_register_line(sysreg_insn(1, insn.ops[0].value, insn.ops[1].reg, insn.ops[2].reg, insn.ops[3].value).split()[1].strip())
else:
insn.itype = ITYPE_SYS
outctx.out_one_operand(4)
insn.itype = idaapi.ARM_sys
'''
for i in range(0, 6):
op = outctx.insn.ops[i]
print(F'Op{op.n}: type: {op.type} reg: {op.reg} value: {op.value}\n')
'''
return 1
return 0
def ev_out_mnem(self, outctx):
if outctx.insn.itype == idaapi.ARM_sys:
#print("ev_out_insn")
insn = outctx.insn
outctx.out_custom_mnem(sysreg_insn(1, insn.ops[0].value, insn.ops[1].reg, insn.ops[2].reg, insn.ops[3].value).split()[0].strip(), self.INDENT)
return 1
return 0
class Aarch64SysRegPlugin(idaapi.plugin_t):
flags = idaapi.PLUGIN_PROC | idaapi.PLUGIN_HIDE
comment = "Aarch64 Apple SysReg extension"
wanted_hotkey = ""
help = "Runs transparently"
wanted_name = "Aarch64 SysReg"
hook = None
enabled = 1
def init(self):
if idaapi.ph_get_id() != idaapi.PLFM_ARM or idaapi.BADADDR <= 0xFFFFFFFF:
return idaapi.PLUGIN_SKIP
if not ida_hexrays.init_hexrays_plugin():
print(("[-] {0} : no decompiler available, skipping".format(self.wanted_name)))
return idaapi.PLUGIN_SKIP
print("%s init"%self.comment)
try:
with open(APPLE_REGS_CFGFILE, "r") as fd:
d = json.load(fd)
except:
d = []
print(("[-] {0} : Loading apple_regs.json failed, skipping".format(self.wanted_name)))
for r in d:
sr = 'S{}_{}_c{}_c{}_{}'.format(*r['enc'])
SYSTEM_REGISTERS[sr] = (r['name'], r['fullname'])
self.hook = Aarch64SysRegHook()
self.hook.hook()
return idaapi.PLUGIN_KEEP
def run():
pass
def term(self):
if self.hook is not None:
self.hook.unhook()
print("%s unloaded"%self.comment)
def PLUGIN_ENTRY():
return Aarch64SysRegPlugin()