]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
aarch64: Update system register gating
authorAlice Carlotti <alice.carlotti@arm.com>
Tue, 2 Sep 2025 14:45:39 +0000 (15:45 +0100)
committerAlice Carlotti <alice.carlotti@arm.com>
Tue, 23 Sep 2025 18:42:44 +0000 (19:42 +0100)
Historically we have been inconsistent and overly restrictive in our
choice of features to gate system register accesses.  (Originally this
gating was always applied, but now it is disabled unless the
--menable-sysreg-checking option is specified).

This patch updates these constraints, following the principle that we
should only reject a system register access if it requires some
architecture feature or version whose corresponding command line
extension has not been enabled.

The most common change in this patch concerns system registers that
were:
- part of a feature FEAT_X with no corresponding command line extension;
- introduced in a newer architecture version ArmvX.Z;
- permitted to be implemented from an earlier version ArmvX.Y.
Previously these system registers tended to be gated on ArmvX.Z or left
ungated, but following the above principle they are now gated on ArmvX.Y
instead.

12 files changed:
gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.d
gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.l
gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d
gas/testsuite/gas/aarch64/sysreg/armv9_5-a-sysregs-archv9_4-unsupported.d
gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4.l
gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8.s
gas/testsuite/gas/aarch64/sysreg/sme-sysreg.d
gas/testsuite/gas/aarch64/sysreg/sve-sysreg-invalid.l
gas/testsuite/gas/aarch64/sysreg/sysreg-8.s
gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions-bad.l
gas/testsuite/gas/aarch64/sysreg/sysregs_with_restrictions.s
opcodes/aarch64-sys-regs.def

index 862d47475ff7a94d5f82d79aff04936a960cce41..309128876f992019db91857947a5019e59d4b061 100644 (file)
@@ -1,3 +1,3 @@
 #source: armv8_9-a-sysregs.s
-#as: -menable-sysreg-checking -march=armv8.8-a -I$srcdir/$subdir --no-info
+#as: -menable-sysreg-checking -march=armv8.7-a -I$srcdir/$subdir --no-info
 #error_output: armv8_9-a-sysregs-bad.l
index 5df4f461369bfa9b339a8741e0cbbd9a95b4b991..0ba68191e4656fd96c23f52083af6ea3e4d05bd4 100644 (file)
@@ -2,14 +2,6 @@
 .*: Error: selected processor does not support system register name 'pmsdsfr_el1'
 .*: Error: selected processor does not support system register name 'pmsdsfr_el1'
 .*: Error: selected processor does not support system register name 'erxgsr_el1'
-.*: Error: selected processor does not support system register name 'sctlr2_el1'
-.*: Error: selected processor does not support system register name 'sctlr2_el1'
-.*: Error: selected processor does not support system register name 'sctlr2_el12'
-.*: Error: selected processor does not support system register name 'sctlr2_el12'
-.*: Error: selected processor does not support system register name 'sctlr2_el2'
-.*: Error: selected processor does not support system register name 'sctlr2_el2'
-.*: Error: selected processor does not support system register name 'sctlr2_el3'
-.*: Error: selected processor does not support system register name 'sctlr2_el3'
 .*: Error: selected processor does not support system register name 'hdfgrtr2_el2'
 .*: Error: selected processor does not support system register name 'hdfgrtr2_el2'
 .*: Error: selected processor does not support system register name 'hdfgwtr2_el2'
 .*: Error: selected processor does not support system register name 'por_el3'
 .*: Error: selected processor does not support system register name 's2por_el1'
 .*: Error: selected processor does not support system register name 's2por_el1'
-.*: Error: selected processor does not support system register name 'tcr2_el1'
-.*: Error: selected processor does not support system register name 'tcr2_el1'
-.*: Error: selected processor does not support system register name 'tcr2_el12'
-.*: Error: selected processor does not support system register name 'tcr2_el12'
-.*: Error: selected processor does not support system register name 'tcr2_el2'
-.*: Error: selected processor does not support system register name 'tcr2_el2'
 .*: Error: selected processor does not support system register name 'mdselr_el1'
 .*: Error: selected processor does not support system register name 'mdselr_el1'
 .*: Error: selected processor does not support system register name 'pmuacr_el1'
 .*: Error: selected processor does not support system register name 'pmecr_el1'
 .*: Error: selected processor does not support system register name 'pmecr_el1'
 .*: Error: selected processor does not support system register name 'pmiar_el1'
-.*: Error: selected processor does not support system register name 'pmiar_el1'
\ No newline at end of file
+.*: Error: selected processor does not support system register name 'pmiar_el1'
index 91e77bc8b522cb592741d1adb13ff499f4a8b255..3e69aad59e77f5e045b7c3b3a52a9d478cb5b236 100644 (file)
@@ -1,5 +1,5 @@
 #source: armv8_9-a-sysregs.s
-#as: -menable-sysreg-checking -march=armv8.9-a -I$srcdir/$subdir
+#as: -menable-sysreg-checking -march=armv9.4-a+profile -I$srcdir/$subdir
 #objdump: -dr
 
 .*:     file format .*
index 61054aed02a05111134cf2a2d6ae8cebb58b6b57..30180db92e2e8d2b8ca6fa3d53833c79731a5c34 100644 (file)
@@ -1,3 +1,3 @@
 #source: armv9_5-a-sysregs.s
-#as: -menable-sysreg-checking -march=armv9.4-a -I$srcdir/$subdir
+#as: -menable-sysreg-checking -march=armv9.3-a -I$srcdir/$subdir
 #error_output: armv9_5-a-sysregs-archv9_4-unsupported.l
index 590f20e107010a2e531ec6d43b9d2da8fa2ac340..9ac8746461296f598d9a35ef7578e8b387c4375f 100644 (file)
@@ -8,12 +8,6 @@
 [^:]*:[0-9]+: Error: selected processor does not support system register name 'cvadp'
 [^:]*:[0-9]+: Error: selected processor does not support system register name 'rndr'
 [^:]*:[0-9]+: Error: selected processor does not support system register name 'rndrrs'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'scxtnum_el0'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'scxtnum_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'scxtnum_el2'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'scxtnum_el3'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'scxtnum_el12'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'id_pfr2_el1'
 [^:]*:[0-9]+: Error: selected processor does not support system register name 'tco'
 [^:]*:[0-9]+: Error: selected processor does not support system register name 'tco'
 [^:]*:[0-9]+: Error: selected processor does not support system register name 'tfsre0_el1'
index 0ce61ddfe45dad28212916cf4fce0ad9ab1d14f2..1a526a2074b45b24098893b10e50a9c249307de4 100644 (file)
 
        roreg   lorid_el1
 
-       .arch   armv8.2-a
+       .arch   armv8.1-a
 
        roreg   ccsidr2_el1
+
+       .arch   armv8.2-a
+
        rwreg   rcwmask_el1
        rwreg   rcwsmask_el1
 
-       .arch   armv8.3-a
-
        rwreg   trfcr_el1
        roreg   pmmir_el1
        rwreg   trfcr_el2
-
        rwreg   trfcr_el12
-
        rwreg   amcr_el0
        roreg   amcfgr_el0
        roreg   amcgcr_el0
@@ -76,7 +75,7 @@
        rwreg   amevtyper114_el0
        rwreg   amevtyper115_el0
 
-       .arch   armv8.5-a
+       .arch   armv8.4-a
 
        roreg   amcg1idr_el0
        roreg   cntpctss_el0
        rwreg   amevcntvoff115_el2
        rwreg   cntpoff_el2
 
-       .arch   armv8.6-a
+       .arch   armv8.5-a+profile
 
        rwreg   pmsnevfr_el1
        rwreg   hcrx_el2
index f51c56e9c0f130afe006f6ad44ea7d7666109beb..daa273eb06f9d47d4193bfbba895acfb46db567b 100644 (file)
@@ -1,5 +1,5 @@
 #name: SME extension (system registers)
-#as: -menable-sysreg-checking -march=armv8-a+sme
+#as: -menable-sysreg-checking -march=armv8.2-a+sme
 #objdump: -dr
 
 .*:     file format .*
index 0eaefe147dfee28dfc516699e4cc5990624dc8fd..1e553d74b9a67318f6fd8d1173fc95a6ebfac243 100644 (file)
@@ -1,6 +1,4 @@
 .*: Assembler messages:
-.*:1: Error: selected processor does not support system register name 'id_aa64zfr0_el1'
-.*:2: Error: selected processor does not support system register name 'id_aa64zfr0_el1'
 .*:4: Error: selected processor does not support system register name 'zcr_el1'
 .*:5: Error: selected processor does not support system register name 'zcr_el1'
 .*:6: Error: selected processor does not support system register name 'zcr_el1'
index 0cf1178542af7b5d70f2b388b2220621d15ebfe1..8dfb2dc7384ba9b4ffba0ebafca5b269c9d55e50 100644 (file)
        rw_sys_reg      amevcntvoff115_el2
        rw_sys_reg      cntpoff_el2
 
-       .arch   armv8.7-a
+       .arch   armv8.7-a+profile
 
        rw_sys_reg      pmsnevfr_el1
        rw_sys_reg      hcrx_el2
index 415c8a86d1213bd68a6f1d08f3210a378358ccb6..fce23070fd22f8bcd28508318d292c8c13734e6a 100644 (file)
@@ -1,10 +1,6 @@
 .*: Assembler messages:
 .*: Error: selected processor does not support system register name 'mpuir_el1'
 .*:  Info: macro invoked from here
-.*: Error: selected processor does not support system register name 'afsr0_el12'
-.*:  Info: macro invoked from here
-.*: Error: selected processor does not support system register name 'afsr0_el12'
-.*:  Info: macro invoked from here
 .*: Error: selected processor does not support PSTATE field name 'uao'
 .*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'uao'
 .*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'vsttbr_el2'
 .*:  Info: macro invoked from here
-.*: Error: selected processor does not support system register name 'scxtnum_el0'
-.*:  Info: macro invoked from here
-.*: Error: selected processor does not support system register name 'scxtnum_el0'
-.*:  Info: macro invoked from here
-.*: Error: selected processor does not support system register name 'id_pfr2_el1'
-.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'amcg1idr_el0'
 .*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'hcrx_el2'
 .*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 's2por_el1'
 .*:  Info: macro invoked from here
-.*: Error: selected processor does not support system register name 'sctlr2_el1'
-.*:  Info: macro invoked from here
-.*: Error: selected processor does not support system register name 'sctlr2_el1'
-.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'spmaccessr_el1'
 .*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'spmaccessr_el1'
 .*:  Info: macro invoked from here
-.*: Error: selected processor does not support system register name 'tcr2_el1'
-.*:  Info: macro invoked from here
-.*: Error: selected processor does not support system register name 'tcr2_el1'
-.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'amair2_el1'
 .*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'amair2_el1'
 .*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'fpmr'
 .*:  Info: macro invoked from here
-.*: Error: selected processor does not support system register name 'id_aa64zfr0_el1'
-.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'lorc_el1'
 .*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'lorc_el1'
 .*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'gcspr_el0'
 .*:  Info: macro invoked from here
-.*: Error: selected processor does not support system register name 'id_aa64smfr0_el1'
-.*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'trcitecr_el1'
 .*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'trcitecr_el1'
 .*:  Info: macro invoked from here
 .*: Error: selected processor does not support system register name 'rcwmask_el1'
 .*:  Info: macro invoked from here
-.*: Error: selected processor does not support system register name 'ttbr1_el2'
-.*:  Info: macro invoked from here
-.*: Error: selected processor does not support system register name 'ttbr1_el2'
-.*:  Info: macro invoked from here
index 7f95777144b92f012ee53ae86d1ca3b6d0c3c488..3ad53e94f21b2df8c254fa1ac38db4253f8cffb6 100644 (file)
@@ -29,7 +29,7 @@
        .arch armv8.8-a
        rw_sys_reg allint   // V8_8A
 
-       .arch armv8.9-a
+       .arch armv8.9-a+profile
        rw_sys_reg pfar_el1   // PFAR
        rw_sys_reg pir_el1   // S1PIE
        rw_sys_reg pmecr_el1   // SEBEP
index 47713e678955ae7cc6288f467e4015bed7149948..51aab230bfabeeead38681ff1e7a514c12995698 100644 (file)
@@ -36,7 +36,7 @@
   The FEATURES field maps onto ISA flags and specifies the architectural
   feature requirements of the system register.  */
 
-  SYSREG ("accdata_el1",       CPENC (3,0,13,0,5),     0,              AARCH64_NO_FEATURES)
+  SYSREG ("accdata_el1",       CPENC (3,0,13,0,5),     0,              AARCH64_FEATURE (LS64)) /* LS64_ACCDATA */
   SYSREG ("actlr_el1",         CPENC (3,0,1,0,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("actlr_el12",                CPENC (3,5,1,0,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("actlr_el2",         CPENC (3,4,1,0,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("actlrmask_el12",    CPENC (3,5,1,4,1),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
   SYSREG ("actlrmask_el2",     CPENC (3,4,1,4,1),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
   SYSREG ("afsr0_el1",         CPENC (3,0,5,1,0),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("afsr0_el12",                CPENC (3,5,5,1,0),      0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("afsr0_el12",                CPENC (3,5,5,1,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("afsr0_el2",         CPENC (3,4,5,1,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("afsr0_el3",         CPENC (3,6,5,1,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("afsr1_el1",         CPENC (3,0,5,1,1),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("afsr1_el12",                CPENC (3,5,5,1,1),      0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("afsr1_el12",                CPENC (3,5,5,1,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("afsr1_el2",         CPENC (3,4,5,1,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("afsr1_el3",         CPENC (3,6,5,1,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("aidr_el1",          CPENC (3,1,0,0,7),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("allint",            CPENC (3,0,4,3,0),      0,              AARCH64_FEATURE (V8_8A))
+  SYSREG ("allint",            CPENC (3,0,4,3,0),      0,              AARCH64_FEATURE (V8_7A)) /* NMI */
   SYSREG ("amair_el1",         CPENC (3,0,10,3,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("amair_el12",                CPENC (3,5,10,3,0),     0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("amair_el12",                CPENC (3,5,10,3,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("amair_el2",         CPENC (3,4,10,3,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("amair_el3",         CPENC (3,6,10,3,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("amair2_el1",                CPENC (3,0,10,3,1),     0,              AARCH64_FEATURE (AIE))
-  SYSREG ("amair2_el12",       CPENC (3,5,10,3,1),     0,              AARCH64_FEATURE (AIE))
-  SYSREG ("amair2_el2",                CPENC (3,4,10,3,1),     0,              AARCH64_FEATURE (AIE))
-  SYSREG ("amair2_el3",                CPENC (3,6,10,3,1),     0,              AARCH64_FEATURE (AIE))
-  SYSREG ("amcfgr_el0",                CPENC (3,3,13,2,1),     F_REG_READ,     AARCH64_FEATURE (V8_4A))
-  SYSREG ("amcg1idr_el0",      CPENC (3,3,13,2,6),     F_REG_READ,     AARCH64_FEATURE (V8_6A))
-  SYSREG ("amcgcr_el0",                CPENC (3,3,13,2,2),     F_REG_READ,     AARCH64_FEATURE (V8_4A))
-  SYSREG ("amcntenclr0_el0",   CPENC (3,3,13,2,4),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amcntenclr1_el0",   CPENC (3,3,13,3,0),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amcntenset0_el0",   CPENC (3,3,13,2,5),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amcntenset1_el0",   CPENC (3,3,13,3,1),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amcr_el0",          CPENC (3,3,13,2,0),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr00_el0",    CPENC (3,3,13,4,0),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr01_el0",    CPENC (3,3,13,4,1),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr02_el0",    CPENC (3,3,13,4,2),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr03_el0",    CPENC (3,3,13,4,3),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr10_el0",    CPENC (3,3,13,12,0),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr110_el0",   CPENC (3,3,13,13,2),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr111_el0",   CPENC (3,3,13,13,3),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr112_el0",   CPENC (3,3,13,13,4),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr113_el0",   CPENC (3,3,13,13,5),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr114_el0",   CPENC (3,3,13,13,6),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr115_el0",   CPENC (3,3,13,13,7),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr11_el0",    CPENC (3,3,13,12,1),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr12_el0",    CPENC (3,3,13,12,2),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr13_el0",    CPENC (3,3,13,12,3),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr14_el0",    CPENC (3,3,13,12,4),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr15_el0",    CPENC (3,3,13,12,5),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr16_el0",    CPENC (3,3,13,12,6),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr17_el0",    CPENC (3,3,13,12,7),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr18_el0",    CPENC (3,3,13,13,0),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntr19_el0",    CPENC (3,3,13,13,1),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevcntvoff00_el2", CPENC (3,4,13,8,0),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff010_el2",        CPENC (3,4,13,9,2),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff011_el2",        CPENC (3,4,13,9,3),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff012_el2",        CPENC (3,4,13,9,4),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff013_el2",        CPENC (3,4,13,9,5),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff014_el2",        CPENC (3,4,13,9,6),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff015_el2",        CPENC (3,4,13,9,7),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff01_el2", CPENC (3,4,13,8,1),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff02_el2", CPENC (3,4,13,8,2),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff03_el2", CPENC (3,4,13,8,3),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff04_el2", CPENC (3,4,13,8,4),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff05_el2", CPENC (3,4,13,8,5),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff06_el2", CPENC (3,4,13,8,6),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff07_el2", CPENC (3,4,13,8,7),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff08_el2", CPENC (3,4,13,9,0),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff09_el2", CPENC (3,4,13,9,1),     0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff10_el2", CPENC (3,4,13,10,0),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff110_el2",        CPENC (3,4,13,11,2),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff111_el2",        CPENC (3,4,13,11,3),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff112_el2",        CPENC (3,4,13,11,4),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff113_el2",        CPENC (3,4,13,11,5),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff114_el2",        CPENC (3,4,13,11,6),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff115_el2",        CPENC (3,4,13,11,7),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff11_el2", CPENC (3,4,13,10,1),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff12_el2", CPENC (3,4,13,10,2),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff13_el2", CPENC (3,4,13,10,3),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff14_el2", CPENC (3,4,13,10,4),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff15_el2", CPENC (3,4,13,10,5),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff16_el2", CPENC (3,4,13,10,6),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff17_el2", CPENC (3,4,13,10,7),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff18_el2", CPENC (3,4,13,11,0),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevcntvoff19_el2", CPENC (3,4,13,11,1),    0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("amevtyper00_el0",   CPENC (3,3,13,6,0),     F_REG_READ,     AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper01_el0",   CPENC (3,3,13,6,1),     F_REG_READ,     AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper02_el0",   CPENC (3,3,13,6,2),     F_REG_READ,     AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper03_el0",   CPENC (3,3,13,6,3),     F_REG_READ,     AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper10_el0",   CPENC (3,3,13,14,0),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper110_el0",  CPENC (3,3,13,15,2),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper111_el0",  CPENC (3,3,13,15,3),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper112_el0",  CPENC (3,3,13,15,4),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper113_el0",  CPENC (3,3,13,15,5),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper114_el0",  CPENC (3,3,13,15,6),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper115_el0",  CPENC (3,3,13,15,7),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper11_el0",   CPENC (3,3,13,14,1),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper12_el0",   CPENC (3,3,13,14,2),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper13_el0",   CPENC (3,3,13,14,3),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper14_el0",   CPENC (3,3,13,14,4),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper15_el0",   CPENC (3,3,13,14,5),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper16_el0",   CPENC (3,3,13,14,6),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper17_el0",   CPENC (3,3,13,14,7),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper18_el0",   CPENC (3,3,13,15,0),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amevtyper19_el0",   CPENC (3,3,13,15,1),    0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("amuserenr_el0",     CPENC (3,3,13,2,3),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("apdakeyhi_el1",     CPENC (3,0,2,2,1),      0,              AARCH64_FEATURE (V8_3A))
-  SYSREG ("apdakeylo_el1",     CPENC (3,0,2,2,0),      0,              AARCH64_FEATURE (V8_3A))
-  SYSREG ("apdbkeyhi_el1",     CPENC (3,0,2,2,3),      0,              AARCH64_FEATURE (V8_3A))
-  SYSREG ("apdbkeylo_el1",     CPENC (3,0,2,2,2),      0,              AARCH64_FEATURE (V8_3A))
-  SYSREG ("apgakeyhi_el1",     CPENC (3,0,2,3,1),      0,              AARCH64_FEATURE (V8_3A))
-  SYSREG ("apgakeylo_el1",     CPENC (3,0,2,3,0),      0,              AARCH64_FEATURE (V8_3A))
-  SYSREG ("apiakeyhi_el1",     CPENC (3,0,2,1,1),      0,              AARCH64_FEATURE (V8_3A))
-  SYSREG ("apiakeylo_el1",     CPENC (3,0,2,1,0),      0,              AARCH64_FEATURE (V8_3A))
-  SYSREG ("apibkeyhi_el1",     CPENC (3,0,2,1,3),      0,              AARCH64_FEATURE (V8_3A))
-  SYSREG ("apibkeylo_el1",     CPENC (3,0,2,1,2),      0,              AARCH64_FEATURE (V8_3A))
-  SYSREG ("brbcr_el1",         CPENC (2,1,9,0,0),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("brbcr_el12",                CPENC (2,5,9,0,0),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("brbcr_el2",         CPENC (2,4,9,0,0),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("brbfcr_el1",                CPENC (2,1,9,0,1),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("brbidr0_el1",       CPENC (2,1,9,2,0),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf0_el1",       CPENC (2,1,8,0,0),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf10_el1",      CPENC (2,1,8,10,0),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf11_el1",      CPENC (2,1,8,11,0),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf12_el1",      CPENC (2,1,8,12,0),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf13_el1",      CPENC (2,1,8,13,0),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf14_el1",      CPENC (2,1,8,14,0),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf15_el1",      CPENC (2,1,8,15,0),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf16_el1",      CPENC (2,1,8,0,4),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf17_el1",      CPENC (2,1,8,1,4),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf18_el1",      CPENC (2,1,8,2,4),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf19_el1",      CPENC (2,1,8,3,4),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf1_el1",       CPENC (2,1,8,1,0),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf20_el1",      CPENC (2,1,8,4,4),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf21_el1",      CPENC (2,1,8,5,4),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf22_el1",      CPENC (2,1,8,6,4),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf23_el1",      CPENC (2,1,8,7,4),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf24_el1",      CPENC (2,1,8,8,4),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf25_el1",      CPENC (2,1,8,9,4),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf26_el1",      CPENC (2,1,8,10,4),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf27_el1",      CPENC (2,1,8,11,4),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf28_el1",      CPENC (2,1,8,12,4),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf29_el1",      CPENC (2,1,8,13,4),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf2_el1",       CPENC (2,1,8,2,0),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf30_el1",      CPENC (2,1,8,14,4),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf31_el1",      CPENC (2,1,8,15,4),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf3_el1",       CPENC (2,1,8,3,0),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf4_el1",       CPENC (2,1,8,4,0),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf5_el1",       CPENC (2,1,8,5,0),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf6_el1",       CPENC (2,1,8,6,0),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf7_el1",       CPENC (2,1,8,7,0),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf8_el1",       CPENC (2,1,8,8,0),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinf9_el1",       CPENC (2,1,8,9,0),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbinfinj_el1",     CPENC (2,1,9,1,0),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc0_el1",       CPENC (2,1,8,0,1),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc10_el1",      CPENC (2,1,8,10,1),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc11_el1",      CPENC (2,1,8,11,1),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc12_el1",      CPENC (2,1,8,12,1),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc13_el1",      CPENC (2,1,8,13,1),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc14_el1",      CPENC (2,1,8,14,1),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc15_el1",      CPENC (2,1,8,15,1),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc16_el1",      CPENC (2,1,8,0,5),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc17_el1",      CPENC (2,1,8,1,5),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc18_el1",      CPENC (2,1,8,2,5),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc19_el1",      CPENC (2,1,8,3,5),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc1_el1",       CPENC (2,1,8,1,1),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc20_el1",      CPENC (2,1,8,4,5),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc21_el1",      CPENC (2,1,8,5,5),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc22_el1",      CPENC (2,1,8,6,5),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc23_el1",      CPENC (2,1,8,7,5),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc24_el1",      CPENC (2,1,8,8,5),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc25_el1",      CPENC (2,1,8,9,5),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc26_el1",      CPENC (2,1,8,10,5),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc27_el1",      CPENC (2,1,8,11,5),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc28_el1",      CPENC (2,1,8,12,5),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc29_el1",      CPENC (2,1,8,13,5),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc2_el1",       CPENC (2,1,8,2,1),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc30_el1",      CPENC (2,1,8,14,5),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc31_el1",      CPENC (2,1,8,15,5),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc3_el1",       CPENC (2,1,8,3,1),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc4_el1",       CPENC (2,1,8,4,1),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc5_el1",       CPENC (2,1,8,5,1),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc6_el1",       CPENC (2,1,8,6,1),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc7_el1",       CPENC (2,1,8,7,1),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc8_el1",       CPENC (2,1,8,8,1),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrc9_el1",       CPENC (2,1,8,9,1),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbsrcinj_el1",     CPENC (2,1,9,1,1),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt0_el1",       CPENC (2,1,8,0,2),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt10_el1",      CPENC (2,1,8,10,2),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt11_el1",      CPENC (2,1,8,11,2),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt12_el1",      CPENC (2,1,8,12,2),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt13_el1",      CPENC (2,1,8,13,2),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt14_el1",      CPENC (2,1,8,14,2),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt15_el1",      CPENC (2,1,8,15,2),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt16_el1",      CPENC (2,1,8,0,6),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt17_el1",      CPENC (2,1,8,1,6),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt18_el1",      CPENC (2,1,8,2,6),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt19_el1",      CPENC (2,1,8,3,6),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt1_el1",       CPENC (2,1,8,1,2),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt20_el1",      CPENC (2,1,8,4,6),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt21_el1",      CPENC (2,1,8,5,6),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt22_el1",      CPENC (2,1,8,6,6),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt23_el1",      CPENC (2,1,8,7,6),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt24_el1",      CPENC (2,1,8,8,6),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt25_el1",      CPENC (2,1,8,9,6),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt26_el1",      CPENC (2,1,8,10,6),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt27_el1",      CPENC (2,1,8,11,6),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt28_el1",      CPENC (2,1,8,12,6),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt29_el1",      CPENC (2,1,8,13,6),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt2_el1",       CPENC (2,1,8,2,2),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt30_el1",      CPENC (2,1,8,14,6),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt31_el1",      CPENC (2,1,8,15,6),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt3_el1",       CPENC (2,1,8,3,2),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt4_el1",       CPENC (2,1,8,4,2),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt5_el1",       CPENC (2,1,8,5,2),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt6_el1",       CPENC (2,1,8,6,2),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt7_el1",       CPENC (2,1,8,7,2),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt8_el1",       CPENC (2,1,8,8,2),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgt9_el1",       CPENC (2,1,8,9,2),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("brbtgtinj_el1",     CPENC (2,1,9,1,2),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("brbts_el1",         CPENC (2,1,9,0,2),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("ccsidr2_el1",       CPENC (3,1,0,0,2),      F_REG_READ,     AARCH64_FEATURE (V8_3A))
+  SYSREG ("amair2_el1",                CPENC (3,0,10,3,1),     0,              AARCH64_FEATURE (V8_8A)) /* AIE */
+  SYSREG ("amair2_el12",       CPENC (3,5,10,3,1),     0,              AARCH64_FEATURE (V8_8A)) /* AIE */
+  SYSREG ("amair2_el2",                CPENC (3,4,10,3,1),     0,              AARCH64_FEATURE (V8_8A)) /* AIE */
+  SYSREG ("amair2_el3",                CPENC (3,6,10,3,1),     0,              AARCH64_FEATURE (V8_8A)) /* AIE */
+  SYSREG ("amcfgr_el0",                CPENC (3,3,13,2,1),     F_REG_READ,     AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amcg1idr_el0",      CPENC (3,3,13,2,6),     F_REG_READ,     AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amcgcr_el0",                CPENC (3,3,13,2,2),     F_REG_READ,     AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amcntenclr0_el0",   CPENC (3,3,13,2,4),     0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amcntenclr1_el0",   CPENC (3,3,13,3,0),     0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amcntenset0_el0",   CPENC (3,3,13,2,5),     0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amcntenset1_el0",   CPENC (3,3,13,3,1),     0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amcr_el0",          CPENC (3,3,13,2,0),     0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr00_el0",    CPENC (3,3,13,4,0),     0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr01_el0",    CPENC (3,3,13,4,1),     0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr02_el0",    CPENC (3,3,13,4,2),     0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr03_el0",    CPENC (3,3,13,4,3),     0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr10_el0",    CPENC (3,3,13,12,0),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr110_el0",   CPENC (3,3,13,13,2),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr111_el0",   CPENC (3,3,13,13,3),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr112_el0",   CPENC (3,3,13,13,4),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr113_el0",   CPENC (3,3,13,13,5),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr114_el0",   CPENC (3,3,13,13,6),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr115_el0",   CPENC (3,3,13,13,7),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr11_el0",    CPENC (3,3,13,12,1),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr12_el0",    CPENC (3,3,13,12,2),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr13_el0",    CPENC (3,3,13,12,3),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr14_el0",    CPENC (3,3,13,12,4),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr15_el0",    CPENC (3,3,13,12,5),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr16_el0",    CPENC (3,3,13,12,6),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr17_el0",    CPENC (3,3,13,12,7),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr18_el0",    CPENC (3,3,13,13,0),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntr19_el0",    CPENC (3,3,13,13,1),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevcntvoff00_el2", CPENC (3,4,13,8,0),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff010_el2",        CPENC (3,4,13,9,2),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff011_el2",        CPENC (3,4,13,9,3),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff012_el2",        CPENC (3,4,13,9,4),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff013_el2",        CPENC (3,4,13,9,5),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff014_el2",        CPENC (3,4,13,9,6),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff015_el2",        CPENC (3,4,13,9,7),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff01_el2", CPENC (3,4,13,8,1),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff02_el2", CPENC (3,4,13,8,2),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff03_el2", CPENC (3,4,13,8,3),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff04_el2", CPENC (3,4,13,8,4),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff05_el2", CPENC (3,4,13,8,5),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff06_el2", CPENC (3,4,13,8,6),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff07_el2", CPENC (3,4,13,8,7),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff08_el2", CPENC (3,4,13,9,0),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff09_el2", CPENC (3,4,13,9,1),     0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff10_el2", CPENC (3,4,13,10,0),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff110_el2",        CPENC (3,4,13,11,2),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff111_el2",        CPENC (3,4,13,11,3),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff112_el2",        CPENC (3,4,13,11,4),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff113_el2",        CPENC (3,4,13,11,5),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff114_el2",        CPENC (3,4,13,11,6),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff115_el2",        CPENC (3,4,13,11,7),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff11_el2", CPENC (3,4,13,10,1),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff12_el2", CPENC (3,4,13,10,2),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff13_el2", CPENC (3,4,13,10,3),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff14_el2", CPENC (3,4,13,10,4),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff15_el2", CPENC (3,4,13,10,5),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff16_el2", CPENC (3,4,13,10,6),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff17_el2", CPENC (3,4,13,10,7),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff18_el2", CPENC (3,4,13,11,0),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevcntvoff19_el2", CPENC (3,4,13,11,1),    0,              AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
+  SYSREG ("amevtyper00_el0",   CPENC (3,3,13,6,0),     F_REG_READ,     AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper01_el0",   CPENC (3,3,13,6,1),     F_REG_READ,     AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper02_el0",   CPENC (3,3,13,6,2),     F_REG_READ,     AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper03_el0",   CPENC (3,3,13,6,3),     F_REG_READ,     AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper10_el0",   CPENC (3,3,13,14,0),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper110_el0",  CPENC (3,3,13,15,2),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper111_el0",  CPENC (3,3,13,15,3),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper112_el0",  CPENC (3,3,13,15,4),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper113_el0",  CPENC (3,3,13,15,5),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper114_el0",  CPENC (3,3,13,15,6),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper115_el0",  CPENC (3,3,13,15,7),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper11_el0",   CPENC (3,3,13,14,1),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper12_el0",   CPENC (3,3,13,14,2),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper13_el0",   CPENC (3,3,13,14,3),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper14_el0",   CPENC (3,3,13,14,4),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper15_el0",   CPENC (3,3,13,14,5),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper16_el0",   CPENC (3,3,13,14,6),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper17_el0",   CPENC (3,3,13,14,7),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper18_el0",   CPENC (3,3,13,15,0),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amevtyper19_el0",   CPENC (3,3,13,15,1),    0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("amuserenr_el0",     CPENC (3,3,13,2,3),     0,              AARCH64_FEATURE (V8_3A)) /* AMUv1 */
+  SYSREG ("apdakeyhi_el1",     CPENC (3,0,2,2,1),      0,              AARCH64_FEATURE (PAUTH))
+  SYSREG ("apdakeylo_el1",     CPENC (3,0,2,2,0),      0,              AARCH64_FEATURE (PAUTH))
+  SYSREG ("apdbkeyhi_el1",     CPENC (3,0,2,2,3),      0,              AARCH64_FEATURE (PAUTH))
+  SYSREG ("apdbkeylo_el1",     CPENC (3,0,2,2,2),      0,              AARCH64_FEATURE (PAUTH))
+  SYSREG ("apgakeyhi_el1",     CPENC (3,0,2,3,1),      0,              AARCH64_FEATURE (PAUTH))
+  SYSREG ("apgakeylo_el1",     CPENC (3,0,2,3,0),      0,              AARCH64_FEATURE (PAUTH))
+  SYSREG ("apiakeyhi_el1",     CPENC (3,0,2,1,1),      0,              AARCH64_FEATURE (PAUTH))
+  SYSREG ("apiakeylo_el1",     CPENC (3,0,2,1,0),      0,              AARCH64_FEATURE (PAUTH))
+  SYSREG ("apibkeyhi_el1",     CPENC (3,0,2,1,3),      0,              AARCH64_FEATURE (PAUTH))
+  SYSREG ("apibkeylo_el1",     CPENC (3,0,2,1,2),      0,              AARCH64_FEATURE (PAUTH))
+  SYSREG ("brbcr_el1",         CPENC (2,1,9,0,0),      0,              AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbcr_el12",                CPENC (2,5,9,0,0),      0,              AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbcr_el2",         CPENC (2,4,9,0,0),      0,              AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbfcr_el1",                CPENC (2,1,9,0,1),      0,              AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbidr0_el1",       CPENC (2,1,9,2,0),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf0_el1",       CPENC (2,1,8,0,0),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf10_el1",      CPENC (2,1,8,10,0),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf11_el1",      CPENC (2,1,8,11,0),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf12_el1",      CPENC (2,1,8,12,0),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf13_el1",      CPENC (2,1,8,13,0),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf14_el1",      CPENC (2,1,8,14,0),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf15_el1",      CPENC (2,1,8,15,0),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf16_el1",      CPENC (2,1,8,0,4),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf17_el1",      CPENC (2,1,8,1,4),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf18_el1",      CPENC (2,1,8,2,4),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf19_el1",      CPENC (2,1,8,3,4),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf1_el1",       CPENC (2,1,8,1,0),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf20_el1",      CPENC (2,1,8,4,4),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf21_el1",      CPENC (2,1,8,5,4),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf22_el1",      CPENC (2,1,8,6,4),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf23_el1",      CPENC (2,1,8,7,4),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf24_el1",      CPENC (2,1,8,8,4),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf25_el1",      CPENC (2,1,8,9,4),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf26_el1",      CPENC (2,1,8,10,4),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf27_el1",      CPENC (2,1,8,11,4),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf28_el1",      CPENC (2,1,8,12,4),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf29_el1",      CPENC (2,1,8,13,4),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf2_el1",       CPENC (2,1,8,2,0),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf30_el1",      CPENC (2,1,8,14,4),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf31_el1",      CPENC (2,1,8,15,4),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf3_el1",       CPENC (2,1,8,3,0),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf4_el1",       CPENC (2,1,8,4,0),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf5_el1",       CPENC (2,1,8,5,0),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf6_el1",       CPENC (2,1,8,6,0),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf7_el1",       CPENC (2,1,8,7,0),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf8_el1",       CPENC (2,1,8,8,0),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinf9_el1",       CPENC (2,1,8,9,0),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbinfinj_el1",     CPENC (2,1,9,1,0),      0,              AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc0_el1",       CPENC (2,1,8,0,1),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc10_el1",      CPENC (2,1,8,10,1),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc11_el1",      CPENC (2,1,8,11,1),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc12_el1",      CPENC (2,1,8,12,1),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc13_el1",      CPENC (2,1,8,13,1),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc14_el1",      CPENC (2,1,8,14,1),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc15_el1",      CPENC (2,1,8,15,1),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc16_el1",      CPENC (2,1,8,0,5),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc17_el1",      CPENC (2,1,8,1,5),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc18_el1",      CPENC (2,1,8,2,5),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc19_el1",      CPENC (2,1,8,3,5),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc1_el1",       CPENC (2,1,8,1,1),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc20_el1",      CPENC (2,1,8,4,5),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc21_el1",      CPENC (2,1,8,5,5),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc22_el1",      CPENC (2,1,8,6,5),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc23_el1",      CPENC (2,1,8,7,5),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc24_el1",      CPENC (2,1,8,8,5),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc25_el1",      CPENC (2,1,8,9,5),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc26_el1",      CPENC (2,1,8,10,5),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc27_el1",      CPENC (2,1,8,11,5),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc28_el1",      CPENC (2,1,8,12,5),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc29_el1",      CPENC (2,1,8,13,5),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc2_el1",       CPENC (2,1,8,2,1),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc30_el1",      CPENC (2,1,8,14,5),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc31_el1",      CPENC (2,1,8,15,5),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc3_el1",       CPENC (2,1,8,3,1),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc4_el1",       CPENC (2,1,8,4,1),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc5_el1",       CPENC (2,1,8,5,1),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc6_el1",       CPENC (2,1,8,6,1),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc7_el1",       CPENC (2,1,8,7,1),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc8_el1",       CPENC (2,1,8,8,1),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrc9_el1",       CPENC (2,1,8,9,1),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbsrcinj_el1",     CPENC (2,1,9,1,1),      0,              AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt0_el1",       CPENC (2,1,8,0,2),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt10_el1",      CPENC (2,1,8,10,2),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt11_el1",      CPENC (2,1,8,11,2),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt12_el1",      CPENC (2,1,8,12,2),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt13_el1",      CPENC (2,1,8,13,2),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt14_el1",      CPENC (2,1,8,14,2),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt15_el1",      CPENC (2,1,8,15,2),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt16_el1",      CPENC (2,1,8,0,6),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt17_el1",      CPENC (2,1,8,1,6),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt18_el1",      CPENC (2,1,8,2,6),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt19_el1",      CPENC (2,1,8,3,6),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt1_el1",       CPENC (2,1,8,1,2),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt20_el1",      CPENC (2,1,8,4,6),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt21_el1",      CPENC (2,1,8,5,6),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt22_el1",      CPENC (2,1,8,6,6),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt23_el1",      CPENC (2,1,8,7,6),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt24_el1",      CPENC (2,1,8,8,6),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt25_el1",      CPENC (2,1,8,9,6),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt26_el1",      CPENC (2,1,8,10,6),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt27_el1",      CPENC (2,1,8,11,6),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt28_el1",      CPENC (2,1,8,12,6),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt29_el1",      CPENC (2,1,8,13,6),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt2_el1",       CPENC (2,1,8,2,2),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt30_el1",      CPENC (2,1,8,14,6),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt31_el1",      CPENC (2,1,8,15,6),     F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt3_el1",       CPENC (2,1,8,3,2),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt4_el1",       CPENC (2,1,8,4,2),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt5_el1",       CPENC (2,1,8,5,2),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt6_el1",       CPENC (2,1,8,6,2),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt7_el1",       CPENC (2,1,8,7,2),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt8_el1",       CPENC (2,1,8,8,2),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgt9_el1",       CPENC (2,1,8,9,2),      F_REG_READ,     AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbtgtinj_el1",     CPENC (2,1,9,1,2),      0,              AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("brbts_el1",         CPENC (2,1,9,0,2),      0,              AARCH64_FEATURE (V9_1A)) /* BRBE */
+  SYSREG ("ccsidr2_el1",       CPENC (3,1,0,0,2),      F_REG_READ,     AARCH64_FEATURE (V8_2A)) /* CCIDX */
   SYSREG ("ccsidr_el1",                CPENC (3,1,0,0,0),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("clidr_el1",         CPENC (3,1,0,0,1),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("cntfrq_el0",                CPENC (3,3,14,0,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("cnthp_ctl_el2",     CPENC (3,4,14,2,1),     0,              AARCH64_NO_FEATURES)
   SYSREG ("cnthp_cval_el2",    CPENC (3,4,14,2,2),     0,              AARCH64_NO_FEATURES)
   SYSREG ("cnthp_tval_el2",    CPENC (3,4,14,2,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("cnthps_ctl_el2",    CPENC (3,4,14,5,1),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("cnthps_cval_el2",   CPENC (3,4,14,5,2),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("cnthps_tval_el2",   CPENC (3,4,14,5,0),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("cnthv_ctl_el2",     CPENC (3,4,14,3,1),     0,              AARCH64_FEATURE (V8_1A))
-  SYSREG ("cnthv_cval_el2",    CPENC (3,4,14,3,2),     0,              AARCH64_FEATURE (V8_1A))
-  SYSREG ("cnthv_tval_el2",    CPENC (3,4,14,3,0),     0,              AARCH64_FEATURE (V8_1A))
-  SYSREG ("cnthvs_ctl_el2",    CPENC (3,4,14,4,1),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("cnthvs_cval_el2",   CPENC (3,4,14,4,2),     0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("cnthvs_tval_el2",   CPENC (3,4,14,4,0),     0,              AARCH64_FEATURE (V8_4A))
+  SYSREG ("cnthps_ctl_el2",    CPENC (3,4,14,5,1),     0,              AARCH64_FEATURE (V8_3A)) /* SEL2 */
+  SYSREG ("cnthps_cval_el2",   CPENC (3,4,14,5,2),     0,              AARCH64_FEATURE (V8_3A)) /* SEL2 */
+  SYSREG ("cnthps_tval_el2",   CPENC (3,4,14,5,0),     0,              AARCH64_FEATURE (V8_3A)) /* SEL2 */
+  SYSREG ("cnthv_ctl_el2",     CPENC (3,4,14,3,1),     0,              AARCH64_NO_FEATURES)
+  SYSREG ("cnthv_cval_el2",    CPENC (3,4,14,3,2),     0,              AARCH64_NO_FEATURES)
+  SYSREG ("cnthv_tval_el2",    CPENC (3,4,14,3,0),     0,              AARCH64_NO_FEATURES)
+  SYSREG ("cnthvs_ctl_el2",    CPENC (3,4,14,4,1),     0,              AARCH64_FEATURE (V8_3A)) /* SEL2 */
+  SYSREG ("cnthvs_cval_el2",   CPENC (3,4,14,4,2),     0,              AARCH64_FEATURE (V8_3A)) /* SEL2 */
+  SYSREG ("cnthvs_tval_el2",   CPENC (3,4,14,4,0),     0,              AARCH64_FEATURE (V8_3A)) /* SEL2 */
   SYSREG ("cntkctl_el1",       CPENC (3,0,14,1,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("cntkctl_el12",      CPENC (3,5,14,1,0),     0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("cntkctl_el12",      CPENC (3,5,14,1,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("cntp_ctl_el0",      CPENC (3,3,14,2,1),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("cntp_ctl_el02",     CPENC (3,5,14,2,1),     0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("cntp_ctl_el02",     CPENC (3,5,14,2,1),     0,              AARCH64_NO_FEATURES)
   SYSREG ("cntp_cval_el0",     CPENC (3,3,14,2,2),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("cntp_cval_el02",    CPENC (3,5,14,2,2),     0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("cntp_cval_el02",    CPENC (3,5,14,2,2),     0,              AARCH64_NO_FEATURES)
   SYSREG ("cntp_tval_el0",     CPENC (3,3,14,2,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("cntp_tval_el02",    CPENC (3,5,14,2,0),     0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("cntp_tval_el02",    CPENC (3,5,14,2,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("cntpct_el0",                CPENC (3,3,14,0,1),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("cntpctss_el0",      CPENC (3,3,14,0,5),     F_REG_READ,     AARCH64_FEATURE (V8_6A))
-  SYSREG ("cntpoff_el2",       CPENC (3,4,14,0,6),     0,              AARCH64_FEATURE (V8_6A))
+  SYSREG ("cntpctss_el0",      CPENC (3,3,14,0,5),     F_REG_READ,     AARCH64_FEATURE (V8_5A)) /* ECV */
+  SYSREG ("cntpoff_el2",       CPENC (3,4,14,0,6),     0,              AARCH64_FEATURE (V8_5A)) /* ECV_POFF */
   SYSREG ("cntps_ctl_el1",     CPENC (3,7,14,2,1),     0,              AARCH64_NO_FEATURES)
   SYSREG ("cntps_cval_el1",    CPENC (3,7,14,2,2),     0,              AARCH64_NO_FEATURES)
   SYSREG ("cntps_tval_el1",    CPENC (3,7,14,2,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("cntv_ctl_el0",      CPENC (3,3,14,3,1),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("cntv_ctl_el02",     CPENC (3,5,14,3,1),     0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("cntv_ctl_el02",     CPENC (3,5,14,3,1),     0,              AARCH64_NO_FEATURES)
   SYSREG ("cntv_cval_el0",     CPENC (3,3,14,3,2),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("cntv_cval_el02",    CPENC (3,5,14,3,2),     0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("cntv_cval_el02",    CPENC (3,5,14,3,2),     0,              AARCH64_NO_FEATURES)
   SYSREG ("cntv_tval_el0",     CPENC (3,3,14,3,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("cntv_tval_el02",    CPENC (3,5,14,3,0),     0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("cntv_tval_el02",    CPENC (3,5,14,3,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("cntvct_el0",                CPENC (3,3,14,0,2),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("cntvctss_el0",      CPENC (3,3,14,0,6),     F_REG_READ,     AARCH64_FEATURE (V8_6A))
+  SYSREG ("cntvctss_el0",      CPENC (3,3,14,0,6),     F_REG_READ,     AARCH64_FEATURE (V8_5A)) /* ECV */
   SYSREG ("cntvoff_el2",       CPENC (3,4,14,0,3),     0,              AARCH64_NO_FEATURES)
   SYSREG ("contextidr_el1",    CPENC (3,0,13,0,1),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("contextidr_el12",   CPENC (3,5,13,0,1),     0,              AARCH64_FEATURE (V8_1A))
-  SYSREG ("contextidr_el2",    CPENC (3,4,13,0,1),     0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("contextidr_el12",   CPENC (3,5,13,0,1),     0,              AARCH64_NO_FEATURES)
+  SYSREG ("contextidr_el2",    CPENC (3,4,13,0,1),     0,              AARCH64_NO_FEATURES)
   SYSREG ("cpacr_el1",         CPENC (3,0,1,0,2),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("cpacr_el12",                CPENC (3,5,1,0,2),      0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("cpacr_el12",                CPENC (3,5,1,0,2),      0,              AARCH64_NO_FEATURES)
   SYSREG ("cpacralias_el1",    CPENC (3,0,1,4,4),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
   SYSREG ("cpacrmask_el1",     CPENC (3,0,1,4,2),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
   SYSREG ("cpacrmask_el12",    CPENC (3,5,1,4,2),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
   SYSREG ("cptr_el2",          CPENC (3,4,1,1,2),      0,              AARCH64_NO_FEATURES)
   SYSREG ("cptr_el3",          CPENC (3,6,1,1,2),      0,              AARCH64_NO_FEATURES)
   SYSREG ("cptrmask_el2",      CPENC (3,4,1,4,2),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
-  SYSREG ("csselr_el1",                CPENC (3,2,0,0,0),      0,              AARCH64_NO_FEATURES)
+  SYSREG ("csselr_el1",                CPENC (3,2,0,0,0),      0,              AARCH64_NO_FEATURES) 
   SYSREG ("ctr_el0",           CPENC (3,3,0,0,1),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("currentel",         CPENC (3,0,4,2,2),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("dacr32_el2",                CPENC (3,4,3,0,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("dbgwvr9_el1",       CPENC (2,0,0,9,6),      0,              AARCH64_NO_FEATURES)
   SYSREG ("dczid_el0",         CPENC (3,3,0,0,7),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("disr_el1",          CPENC (3,0,12,1,1),     0,              AARCH64_FEATURE (RAS))
-  SYSREG ("dit",               CPENC (3,3,4,2,5),      0,              AARCH64_FEATURE (V8_4A))
+  SYSREG ("dit",               CPENC (3,3,4,2,5),      0,              AARCH64_FEATURE (V8_3A)) /* DIT */
   SYSREG ("dlr_el0",           CPENC (3,3,4,5,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("dspsr_el0",         CPENC (3,3,4,5,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("elr_el1",           CPENC (3,0,4,0,1),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("elr_el12",          CPENC (3,5,4,0,1),      0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("elr_el12",          CPENC (3,5,4,0,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("elr_el2",           CPENC (3,4,4,0,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("elr_el3",           CPENC (3,6,4,0,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("erridr_el1",                CPENC (3,0,5,3,0),      F_REG_READ,     AARCH64_FEATURE (RAS))
   SYSREG ("erxgsr_el1",                CPENC (3,0,5,3,2),      F_REG_READ,     AARCH64_FEATURE (RASv2))
   SYSREG ("erxmisc0_el1",      CPENC (3,0,5,5,0),      0,              AARCH64_FEATURE (RAS))
   SYSREG ("erxmisc1_el1",      CPENC (3,0,5,5,1),      0,              AARCH64_FEATURE (RAS))
-  SYSREG ("erxmisc2_el1",      CPENC (3,0,5,5,2),      0,              AARCH64_FEATURE (RAS))
-  SYSREG ("erxmisc3_el1",      CPENC (3,0,5,5,3),      0,              AARCH64_FEATURE (RAS))
-  SYSREG ("erxpfgcdn_el1",     CPENC (3,0,5,4,6),      0,              AARCH64_FEATURE (RAS))
-  SYSREG ("erxpfgctl_el1",     CPENC (3,0,5,4,5),      0,              AARCH64_FEATURE (RAS))
-  SYSREG ("erxpfgf_el1",       CPENC (3,0,5,4,4),      F_REG_READ,     AARCH64_FEATURE (RAS))
+  SYSREG ("erxmisc2_el1",      CPENC (3,0,5,5,2),      0,              AARCH64_FEATURE (RAS)) /* RASv1p1 */
+  SYSREG ("erxmisc3_el1",      CPENC (3,0,5,5,3),      0,              AARCH64_FEATURE (RAS)) /* RASv1p1 */
+  SYSREG ("erxpfgcdn_el1",     CPENC (3,0,5,4,6),      0,              AARCH64_FEATURE (RAS)) /* RASv1p1 */
+  SYSREG ("erxpfgctl_el1",     CPENC (3,0,5,4,5),      0,              AARCH64_FEATURE (RAS)) /* RASv1p1 */
+  SYSREG ("erxpfgf_el1",       CPENC (3,0,5,4,4),      F_REG_READ,     AARCH64_FEATURE (RAS)) /* RASv1p1 */
   SYSREG ("erxstatus_el1",     CPENC (3,0,5,4,2),      0,              AARCH64_FEATURE (RAS))
   SYSREG ("esr_el1",           CPENC (3,0,5,2,0),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("esr_el12",          CPENC (3,5,5,2,0),      0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("esr_el12",          CPENC (3,5,5,2,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("esr_el2",           CPENC (3,4,5,2,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("esr_el3",           CPENC (3,6,5,2,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("far_el1",           CPENC (3,0,6,0,0),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("far_el12",          CPENC (3,5,6,0,0),      0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("far_el12",          CPENC (3,5,6,0,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("far_el2",           CPENC (3,4,6,0,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("far_el3",           CPENC (3,6,6,0,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("fgwte3_el3",                CPENC (3,6,1,1,5),      0,              AARCH64_FEATURE (V9_4A)) /* FGWTE3 */
   SYSREG ("gcspr_el2",         CPENC (3,4,2,5,1),      0,              AARCH64_FEATURE (GCS))
   SYSREG ("gcspr_el3",         CPENC (3,6,2,5,1),      0,              AARCH64_FEATURE (GCS))
   SYSREG ("gmid_el1",          CPENC (3,1,0,0,4),      F_REG_READ,     AARCH64_FEATURE (MEMTAG))
-  SYSREG ("gpcbw_el3",         CPENC (3,6,2,1,5),      0,              AARCH64_FEATURE (V9_5A))
-  SYSREG ("gpccr_el3",         CPENC (3,6,2,1,6),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("gptbr_el3",         CPENC (3,6,2,1,4),      0,              AARCH64_NO_FEATURES)
+  SYSREG ("gpcbw_el3",         CPENC (3,6,2,1,5),      0,              AARCH64_FEATURE (V9_5A)) /* RME_GPC3 */
+  SYSREG ("gpccr_el3",         CPENC (3,6,2,1,6),      0,              AARCH64_FEATURE (V9_1A)) /* RME */
+  SYSREG ("gptbr_el3",         CPENC (3,6,2,1,4),      0,              AARCH64_FEATURE (V9_1A)) /* RME */
   SYSREG ("hacdbsbr_el2",      CPENC (3,4,2,3,4),      0,              AARCH64_FEATURE (V9_4A)) /* HACDBS */
   SYSREG ("hacdbscons_el2",    CPENC (3,4,2,3,5),      0,              AARCH64_FEATURE (V9_4A)) /* HACDBS */
   SYSREG ("hacr_el2",          CPENC (3,4,1,1,7),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("hafgrtr_el2",       CPENC (3,4,3,1,6),      0,              AARCH64_FEATURE (V8_6A))
+  SYSREG ("hafgrtr_el2",       CPENC (3,4,3,1,6),      0,              AARCH64_FEATURE (V8_5A)) /* AMUv1 && FGT */
   SYSREG ("hcr_el2",           CPENC (3,4,1,1,0),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("hcrx_el2",          CPENC (3,4,1,2,2),      0,              AARCH64_FEATURE (V8_7A))
+  SYSREG ("hcrx_el2",          CPENC (3,4,1,2,2),      0,              AARCH64_FEATURE (V8_6A)) /* HCX */
   SYSREG ("hdbssbr_el2",       CPENC (3,4,2,3,2),      0,              AARCH64_FEATURE (V9_4A)) /* HDBSS */
   SYSREG ("hdbssprod_el2",     CPENC (3,4,2,3,3),      0,              AARCH64_FEATURE (V9_4A)) /* HDBSS */
-  SYSREG ("hdfgrtr_el2",       CPENC (3,4,3,1,4),      0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("hdfgrtr2_el2",      CPENC (3,4,3,1,0),      0,              AARCH64_FEATURE (FGT2))
-  SYSREG ("hdfgwtr_el2",       CPENC (3,4,3,1,5),      0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("hdfgwtr2_el2",      CPENC (3,4,3,1,1),      0,              AARCH64_FEATURE (FGT2))
-  SYSREG ("hfgitr_el2",                CPENC (3,4,1,1,6),      0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("hfgitr2_el2",       CPENC (3,4,3,1,7),      0,              AARCH64_FEATURE (V8_8A))
-  SYSREG ("hfgrtr_el2",                CPENC (3,4,1,1,4),      0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("hfgrtr2_el2",       CPENC (3,4,3,1,2),      0,              AARCH64_FEATURE (FGT2))
-  SYSREG ("hfgwtr_el2",                CPENC (3,4,1,1,5),      0,              AARCH64_FEATURE (V8_6A))
-  SYSREG ("hfgwtr2_el2",       CPENC (3,4,3,1,3),      0,              AARCH64_FEATURE (FGT2))
+  SYSREG ("hdfgrtr_el2",       CPENC (3,4,3,1,4),      0,              AARCH64_FEATURE (V8_5A)) /* FGT */
+  SYSREG ("hdfgrtr2_el2",      CPENC (3,4,3,1,0),      0,              AARCH64_FEATURE (V8_8A)) /* FGT2 */
+  SYSREG ("hdfgwtr_el2",       CPENC (3,4,3,1,5),      0,              AARCH64_FEATURE (V8_5A)) /* FGT */
+  SYSREG ("hdfgwtr2_el2",      CPENC (3,4,3,1,1),      0,              AARCH64_FEATURE (V8_8A)) /* FGT2 */
+  SYSREG ("hfgitr_el2",                CPENC (3,4,1,1,6),      0,              AARCH64_FEATURE (V8_5A)) /* FGT */
+  SYSREG ("hfgitr2_el2",       CPENC (3,4,3,1,7),      0,              AARCH64_FEATURE (V8_8A)) /* FGT2 */
+  SYSREG ("hfgrtr_el2",                CPENC (3,4,1,1,4),      0,              AARCH64_FEATURE (V8_5A)) /* FGT */
+  SYSREG ("hfgrtr2_el2",       CPENC (3,4,3,1,2),      0,              AARCH64_FEATURE (V8_8A)) /* FGT2 */
+  SYSREG ("hfgwtr_el2",                CPENC (3,4,1,1,5),      0,              AARCH64_FEATURE (V8_5A)) /* FGT */
+  SYSREG ("hfgwtr2_el2",       CPENC (3,4,3,1,3),      0,              AARCH64_FEATURE (V8_8A)) /* FGT2 */
   SYSREG ("hpfar_el2",         CPENC (3,4,6,0,4),      0,              AARCH64_NO_FEATURES)
   SYSREG ("hstr_el2",          CPENC (3,4,1,1,3),      0,              AARCH64_NO_FEATURES)
   SYSREG ("icc_ap0r0_el1",     CPENC (3,0,12,8,4),     0,              AARCH64_NO_FEATURES)
   SYSREG ("icc_igrpen0_el1",   CPENC (3,0,12,12,6),    0,              AARCH64_NO_FEATURES)
   SYSREG ("icc_igrpen1_el1",   CPENC (3,0,12,12,7),    0,              AARCH64_NO_FEATURES)
   SYSREG ("icc_igrpen1_el3",   CPENC (3,6,12,12,7),    0,              AARCH64_NO_FEATURES)
-  SYSREG ("icc_nmiar1_el1",    CPENC (3,0,12,9,5),     F_REG_READ,     AARCH64_FEATURE (V8_8A))
+  SYSREG ("icc_nmiar1_el1",    CPENC (3,0,12,9,5),     F_REG_READ,     AARCH64_FEATURE (V8_7A)) /* GICv3_NMI */
   SYSREG ("icc_pmr_el1",       CPENC (3,0,4,6,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("icc_rpr_el1",       CPENC (3,0,12,11,3),    F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("icc_sgi0r_el1",     CPENC (3,0,12,11,7),    F_REG_WRITE,    AARCH64_NO_FEATURES)
   SYSREG ("id_aa64pfr0_el1",   CPENC (3,0,0,4,0),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("id_aa64pfr1_el1",   CPENC (3,0,0,4,1),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("id_aa64pfr2_el1",   CPENC (3,0,0,4,2),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("id_aa64smfr0_el1",  CPENC (3,0,0,4,5),      F_REG_READ,     AARCH64_FEATURE (SME))
-  SYSREG ("id_aa64zfr0_el1",   CPENC (3,0,0,4,4),      F_REG_READ,     AARCH64_FEATURE (SVE))
+  SYSREG ("id_aa64smfr0_el1",  CPENC (3,0,0,4,5),      F_REG_READ,     AARCH64_NO_FEATURES)
+  SYSREG ("id_aa64zfr0_el1",   CPENC (3,0,0,4,4),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("id_afr0_el1",       CPENC (3,0,0,1,3),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("id_dfr0_el1",       CPENC (3,0,0,1,2),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("id_dfr1_el1",       CPENC (3,0,0,3,5),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("id_mmfr5_el1",      CPENC (3,0,0,3,6),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("id_pfr0_el1",       CPENC (3,0,0,1,0),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("id_pfr1_el1",       CPENC (3,0,0,1,1),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("id_pfr2_el1",       CPENC (3,0,0,3,4),      F_REG_READ,     AARCH64_FEATURE (ID_PFR2))
+  SYSREG ("id_pfr2_el1",       CPENC (3,0,0,3,4),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("ifsr32_el2",                CPENC (3,4,5,0,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("isr_el1",           CPENC (3,0,12,1,0),     F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("lorc_el1",          CPENC (3,0,10,4,3),     0,              AARCH64_FEATURE (LOR))
   SYSREG ("lorn_el1",          CPENC (3,0,10,4,2),     0,              AARCH64_FEATURE (LOR))
   SYSREG ("lorsa_el1",         CPENC (3,0,10,4,0),     0,              AARCH64_FEATURE (LOR))
   SYSREG ("mair_el1",          CPENC (3,0,10,2,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mair_el12",         CPENC (3,5,10,2,0),     0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("mair_el12",         CPENC (3,5,10,2,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("mair_el2",          CPENC (3,4,10,2,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("mair_el3",          CPENC (3,6,10,2,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mair2_el1",         CPENC (3,0,10,2,1),     0,              AARCH64_FEATURE (AIE))
-  SYSREG ("mair2_el12",                CPENC (3,5,10,2,1),     0,              AARCH64_FEATURE (AIE))
-  SYSREG ("mair2_el2",         CPENC (3,4,10,1,1),     0,              AARCH64_FEATURE (AIE))
-  SYSREG ("mair2_el3",         CPENC (3,6,10,1,1),     0,              AARCH64_FEATURE (AIE))
+  SYSREG ("mair2_el1",         CPENC (3,0,10,2,1),     0,              AARCH64_FEATURE (V8_8A)) /* AIE */
+  SYSREG ("mair2_el12",                CPENC (3,5,10,2,1),     0,              AARCH64_FEATURE (V8_8A)) /* AIE */
+  SYSREG ("mair2_el2",         CPENC (3,4,10,1,1),     0,              AARCH64_FEATURE (V8_8A)) /* AIE */
+  SYSREG ("mair2_el3",         CPENC (3,6,10,1,1),     0,              AARCH64_FEATURE (V8_8A)) /* AIE */
   SYSREG ("mdccint_el1",       CPENC (2,0,0,2,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("mdccsr_el0",                CPENC (2,3,0,1,0),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("mdcr_el2",          CPENC (3,4,1,1,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("mdcr_el3",          CPENC (3,6,1,3,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("mdrar_el1",         CPENC (2,0,1,0,0),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("mdscr_el1",         CPENC (2,0,0,2,2),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("mdselr_el1",                CPENC (2,0,0,4,2),      0,              AARCH64_FEATURE (DEBUGv8p9))
-  SYSREG ("mdstepop_el1",      CPENC (2,0,0,5,2),      0,              AARCH64_FEATURE (STEP2))
-  SYSREG ("mecid_a0_el2",      CPENC (3,4,10,8,1),     0,              AARCH64_FEATURE (V8_7A))
-  SYSREG ("mecid_a1_el2",      CPENC (3,4,10,8,3),     0,              AARCH64_FEATURE (V8_7A))
-  SYSREG ("mecid_p0_el2",      CPENC (3,4,10,8,0),     0,              AARCH64_FEATURE (V8_7A))
-  SYSREG ("mecid_p1_el2",      CPENC (3,4,10,8,2),     0,              AARCH64_FEATURE (V8_7A))
-  SYSREG ("mecid_rl_a_el3",    CPENC (3,6,10,10,1),    0,              AARCH64_FEATURE (V8_7A))
-  SYSREG ("mecidr_el2",                CPENC (3,4,10,8,7),     F_REG_READ,     AARCH64_FEATURE (V8_7A))
-  SYSREG ("mfar_el3",          CPENC (3,6,6,0,5),      0,              AARCH64_NO_FEATURES)
+  SYSREG ("mdselr_el1",                CPENC (2,0,0,4,2),      0,              AARCH64_FEATURE (V8_8A)) /* Debugv8p9 */
+  SYSREG ("mdstepop_el1",      CPENC (2,0,0,5,2),      0,              AARCH64_FEATURE (V9_4A)) /* STEP2 */
+  SYSREG ("mecid_a0_el2",      CPENC (3,4,10,8,1),     0,              AARCH64_FEATURE (V9_2A)) /* MEC */
+  SYSREG ("mecid_a1_el2",      CPENC (3,4,10,8,3),     0,              AARCH64_FEATURE (V9_2A)) /* MEC */
+  SYSREG ("mecid_p0_el2",      CPENC (3,4,10,8,0),     0,              AARCH64_FEATURE (V9_2A)) /* MEC */
+  SYSREG ("mecid_p1_el2",      CPENC (3,4,10,8,2),     0,              AARCH64_FEATURE (V9_2A)) /* MEC */
+  SYSREG ("mecid_rl_a_el3",    CPENC (3,6,10,10,1),    0,              AARCH64_FEATURE (V9_2A)) /* MEC */
+  SYSREG ("mecidr_el2",                CPENC (3,4,10,8,7),     F_REG_READ,     AARCH64_FEATURE (V9_2A)) /* MEC */
+  SYSREG ("mfar_el3",          CPENC (3,6,6,0,5),      0,              AARCH64_FEATURE (V8_6A)) /* PFAR=>8.8 || RME=>9.1 */
   SYSREG ("midr_el1",          CPENC (3,0,0,0,0),      F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("mpam0_el1",         CPENC (3,0,10,5,1),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mpam1_el1",         CPENC (3,0,10,5,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mpam1_el12",                CPENC (3,5,10,5,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mpam2_el2",         CPENC (3,4,10,5,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mpam3_el3",         CPENC (3,6,10,5,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mpambw0_el1",       CPENC (3,0,10,5,5),     0,              AARCH64_FEATURE (V9_3A))
-  SYSREG ("mpambw1_el1",       CPENC (3,0,10,5,4),     0,              AARCH64_FEATURE (V9_3A))
-  SYSREG ("mpambw1_el12",      CPENC (3,5,10,5,4),     0,              AARCH64_FEATURE (V9_3A))
-  SYSREG ("mpambw2_el2",       CPENC (3,4,10,5,4),     0,              AARCH64_FEATURE (V9_3A))
-  SYSREG ("mpambw3_el3",       CPENC (3,6,10,5,4),     0,              AARCH64_FEATURE (V9_3A))
-  SYSREG ("mpambwcap_el2",     CPENC (3,4,10,5,6),     0,              AARCH64_FEATURE (V9_3A))
-  SYSREG ("mpambwidr_el1",     CPENC (3,0,10,4,5),     F_REG_READ,     AARCH64_FEATURE (V9_3A))
-  SYSREG ("mpambwsm_el1",      CPENC (3,0,10,5,7),     0,              AARCH64_FEATURES (2, SME, V9_3A))
-  SYSREG ("mpamhcr_el2",       CPENC (3,4,10,4,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mpamidr_el1",       CPENC (3,0,10,4,4),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("mpamsm_el1",                CPENC (3,0,10,5,3),     0,              AARCH64_FEATURE (SME))
-  SYSREG ("mpamvpm0_el2",      CPENC (3,4,10,6,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mpamvpm1_el2",      CPENC (3,4,10,6,1),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mpamvpm2_el2",      CPENC (3,4,10,6,2),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mpamvpm3_el2",      CPENC (3,4,10,6,3),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mpamvpm4_el2",      CPENC (3,4,10,6,4),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mpamvpm5_el2",      CPENC (3,4,10,6,5),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mpamvpm6_el2",      CPENC (3,4,10,6,6),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mpamvpm7_el2",      CPENC (3,4,10,6,7),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("mpamvpmv_el2",      CPENC (3,4,10,4,1),     0,              AARCH64_NO_FEATURES)
+  SYSREG ("mpam0_el1",         CPENC (3,0,10,5,1),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpam1_el1",         CPENC (3,0,10,5,0),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpam1_el12",                CPENC (3,5,10,5,0),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpam2_el2",         CPENC (3,4,10,5,0),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpam3_el3",         CPENC (3,6,10,5,0),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpambw0_el1",       CPENC (3,0,10,5,5),     0,              AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
+  SYSREG ("mpambw1_el1",       CPENC (3,0,10,5,4),     0,              AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
+  SYSREG ("mpambw1_el12",      CPENC (3,5,10,5,4),     0,              AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
+  SYSREG ("mpambw2_el2",       CPENC (3,4,10,5,4),     0,              AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
+  SYSREG ("mpambw3_el3",       CPENC (3,6,10,5,4),     0,              AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
+  SYSREG ("mpambwcap_el2",     CPENC (3,4,10,5,6),     0,              AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
+  SYSREG ("mpambwidr_el1",     CPENC (3,0,10,4,5),     F_REG_READ,     AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
+  SYSREG ("mpambwsm_el1",      CPENC (3,0,10,5,7),     0,              AARCH64_FEATURES (2, SME, V9_3A)) /* SME && MPAM_PE_BW_CTRL */
+  SYSREG ("mpamhcr_el2",       CPENC (3,4,10,4,0),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpamidr_el1",       CPENC (3,0,10,4,4),     F_REG_READ,     AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpamsm_el1",                CPENC (3,0,10,5,3),     0,              AARCH64_FEATURES (2, SME, V8_2A)) /* SME && MPAM */
+  SYSREG ("mpamvpm0_el2",      CPENC (3,4,10,6,0),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpamvpm1_el2",      CPENC (3,4,10,6,1),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpamvpm2_el2",      CPENC (3,4,10,6,2),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpamvpm3_el2",      CPENC (3,4,10,6,3),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpamvpm4_el2",      CPENC (3,4,10,6,4),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpamvpm5_el2",      CPENC (3,4,10,6,5),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpamvpm6_el2",      CPENC (3,4,10,6,6),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpamvpm7_el2",      CPENC (3,4,10,6,7),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
+  SYSREG ("mpamvpmv_el2",      CPENC (3,4,10,4,1),     0,              AARCH64_FEATURE (V8_2A)) /* MPAM */
   SYSREG ("mpidr_el1",         CPENC (3,0,0,0,5),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("mpuir_el1",         CPENC (3,0,0,0,4),      F_REG_READ,     AARCH64_FEATURE (V8R))
   SYSREG ("mpuir_el2",         CPENC (3,4,0,0,4),      F_REG_READ,     AARCH64_FEATURE (V8R))
   SYSREG ("oslsr_el1",         CPENC (2,0,1,1,4),      F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("pan",               CPENC (3,0,4,2,3),      0,              AARCH64_FEATURE (PAN))
   SYSREG ("par_el1",           CPENC (3,0,7,4,0),      F_REG_128,      AARCH64_NO_FEATURES)
-  SYSREG ("pfar_el1",          CPENC (3,0,6,0,5),      0,              AARCH64_FEATURE (PFAR))
-  SYSREG ("pfar_el12",         CPENC (3,5,6,0,5),      0,              AARCH64_FEATURE (PFAR))
-  SYSREG ("pfar_el2",          CPENC (3,4,6,0,5),      0,              AARCH64_FEATURE (PFAR))
-  SYSREG ("pir_el1",           CPENC (3,0,10,2,3),     0,              AARCH64_FEATURE (S1PIE))
-  SYSREG ("pir_el12",          CPENC (3,5,10,2,3),     0,              AARCH64_FEATURE (S1PIE))
-  SYSREG ("pir_el2",           CPENC (3,4,10,2,3),     0,              AARCH64_FEATURE (S1PIE))
-  SYSREG ("pir_el3",           CPENC (3,6,10,2,3),     0,              AARCH64_FEATURE (S1PIE))
-  SYSREG ("pire0_el1",         CPENC (3,0,10,2,2),     0,              AARCH64_FEATURE (S1PIE))
-  SYSREG ("pire0_el12",                CPENC (3,5,10,2,2),     0,              AARCH64_FEATURE (S1PIE))
-  SYSREG ("pire0_el2",         CPENC (3,4,10,2,2),     0,              AARCH64_FEATURE (S1PIE))
+  SYSREG ("pfar_el1",          CPENC (3,0,6,0,5),      0,              AARCH64_FEATURE (V8_8A)) /* PFAR */
+  SYSREG ("pfar_el12",         CPENC (3,5,6,0,5),      0,              AARCH64_FEATURE (V8_8A)) /* PFAR */
+  SYSREG ("pfar_el2",          CPENC (3,4,6,0,5),      0,              AARCH64_FEATURE (V8_8A)) /* PFAR */
+  SYSREG ("pir_el1",           CPENC (3,0,10,2,3),     0,              AARCH64_FEATURE (V8_8A)) /* S1PIE */
+  SYSREG ("pir_el12",          CPENC (3,5,10,2,3),     0,              AARCH64_FEATURE (V8_8A)) /* S1PIE */
+  SYSREG ("pir_el2",           CPENC (3,4,10,2,3),     0,              AARCH64_FEATURE (V8_8A)) /* S1PIE */
+  SYSREG ("pir_el3",           CPENC (3,6,10,2,3),     0,              AARCH64_FEATURE (V8_8A)) /* S1PIE */
+  SYSREG ("pire0_el1",         CPENC (3,0,10,2,2),     0,              AARCH64_FEATURE (V8_8A)) /* S1PIE */
+  SYSREG ("pire0_el12",                CPENC (3,5,10,2,2),     0,              AARCH64_FEATURE (V8_8A)) /* S1PIE */
+  SYSREG ("pire0_el2",         CPENC (3,4,10,2,2),     0,              AARCH64_FEATURE (V8_8A)) /* S1PIE */
   SYSREG ("pm",                        CPENC (3,0,4,3,1),      0,              AARCH64_FEATURE (V9_3A)) /* EBEP */
   SYSREG ("pmbidr_el1",                CPENC (3,0,9,10,7),     F_REG_READ,     AARCH64_FEATURE (PROFILE))
   SYSREG ("pmblimitr_el1",     CPENC (3,0,9,10,0),     0,              AARCH64_FEATURE (PROFILE))
-  SYSREG ("pmbmar_el1",                CPENC (3,0,9,10,5),     0,              AARCH64_FEATURES (2, PROFILE, V9_5A))
+  SYSREG ("pmbmar_el1",                CPENC (3,0,9,10,5),     0,              AARCH64_FEATURES (2, PROFILE, V9_5A)) /* SPE_nVM */
   SYSREG ("pmbptr_el1",                CPENC (3,0,9,10,1),     0,              AARCH64_FEATURE (PROFILE))
   SYSREG ("pmbsr_el1",         CPENC (3,0,9,10,3),     0,              AARCH64_FEATURE (PROFILE))
-  SYSREG ("pmbsr_el12",                CPENC (3,5,9,10,3),     0,              AARCH64_FEATURES (2, V9_5A, PROFILE))
-  SYSREG ("pmbsr_el2",         CPENC (3,4,9,10,3),     0,              AARCH64_FEATURES (2, V9_5A, PROFILE))
-  SYSREG ("pmbsr_el3",         CPENC (3,6,9,10,3),     0,              AARCH64_FEATURES (2, V9_5A, PROFILE))
+  SYSREG ("pmbsr_el12",                CPENC (3,5,9,10,3),     0,              AARCH64_FEATURES (2, V9_5A, PROFILE)) /* SPE_EXC */
+  SYSREG ("pmbsr_el2",         CPENC (3,4,9,10,3),     0,              AARCH64_FEATURES (2, V9_5A, PROFILE)) /* SPE_EXC */
+  SYSREG ("pmbsr_el3",         CPENC (3,6,9,10,3),     0,              AARCH64_FEATURES (2, V9_5A, PROFILE)) /* SPE_EXC */
   SYSREG ("pmccfiltr_el0",     CPENC (3,3,14,15,7),    0,              AARCH64_NO_FEATURES)
   SYSREG ("pmccntr_el0",       CPENC (3,3,9,13,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("pmccntsvr_el1",     CPENC (2,0,14,11,7),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
+  SYSREG ("pmccntsvr_el1",     CPENC (2,0,14,11,7),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
   SYSREG ("pmceid0_el0",       CPENC (3,3,9,12,6),     F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("pmceid1_el0",       CPENC (3,3,9,12,7),     F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("pmcntenclr_el0",    CPENC (3,3,9,12,2),     0,              AARCH64_NO_FEATURES)
   SYSREG ("pmcntenset_el0",    CPENC (3,3,9,12,1),     0,              AARCH64_NO_FEATURES)
   SYSREG ("pmcr_el0",          CPENC (3,3,9,12,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("pmecr_el1",         CPENC (3,0,9,14,5),     0,              AARCH64_FEATURE (SEBEP))
+  SYSREG ("pmecr_el1",         CPENC (3,0,9,14,5),     0,              AARCH64_FEATURE (V8_8A)) /* EBEP || PMUv3_SS */
   SYSREG ("pmevcntr0_el0",     CPENC (3,3,14,8,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("pmevcntr10_el0",    CPENC (3,3,14,9,2),     0,              AARCH64_NO_FEATURES)
   SYSREG ("pmevcntr11_el0",    CPENC (3,3,14,9,3),     0,              AARCH64_NO_FEATURES)
   SYSREG ("pmevcntr7_el0",     CPENC (3,3,14,8,7),     0,              AARCH64_NO_FEATURES)
   SYSREG ("pmevcntr8_el0",     CPENC (3,3,14,9,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("pmevcntr9_el0",     CPENC (3,3,14,9,1),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("pmevcntsvr0_el1",   CPENC (2,0,14,8,0),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr10_el1",  CPENC (2,0,14,9,2),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr11_el1",  CPENC (2,0,14,9,3),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr12_el1",  CPENC (2,0,14,9,4),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr13_el1",  CPENC (2,0,14,9,5),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr14_el1",  CPENC (2,0,14,9,6),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr15_el1",  CPENC (2,0,14,9,7),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr16_el1",  CPENC (2,0,14,10,0),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr17_el1",  CPENC (2,0,14,10,1),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr18_el1",  CPENC (2,0,14,10,2),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr19_el1",  CPENC (2,0,14,10,3),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr1_el1",   CPENC (2,0,14,8,1),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr20_el1",  CPENC (2,0,14,10,4),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr21_el1",  CPENC (2,0,14,10,5),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr22_el1",  CPENC (2,0,14,10,6),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr23_el1",  CPENC (2,0,14,10,7),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr24_el1",  CPENC (2,0,14,11,0),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr25_el1",  CPENC (2,0,14,11,1),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr26_el1",  CPENC (2,0,14,11,2),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr27_el1",  CPENC (2,0,14,11,3),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr28_el1",  CPENC (2,0,14,11,4),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr29_el1",  CPENC (2,0,14,11,5),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr2_el1",   CPENC (2,0,14,8,2),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr30_el1",  CPENC (2,0,14,11,6),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr3_el1",   CPENC (2,0,14,8,3),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr4_el1",   CPENC (2,0,14,8,4),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr5_el1",   CPENC (2,0,14,8,5),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr6_el1",   CPENC (2,0,14,8,6),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr7_el1",   CPENC (2,0,14,8,7),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr8_el1",   CPENC (2,0,14,9,0),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
-  SYSREG ("pmevcntsvr9_el1",   CPENC (2,0,14,9,1),     F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
+  SYSREG ("pmevcntsvr0_el1",   CPENC (2,0,14,8,0),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr10_el1",  CPENC (2,0,14,9,2),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr11_el1",  CPENC (2,0,14,9,3),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr12_el1",  CPENC (2,0,14,9,4),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr13_el1",  CPENC (2,0,14,9,5),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr14_el1",  CPENC (2,0,14,9,6),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr15_el1",  CPENC (2,0,14,9,7),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr16_el1",  CPENC (2,0,14,10,0),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr17_el1",  CPENC (2,0,14,10,1),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr18_el1",  CPENC (2,0,14,10,2),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr19_el1",  CPENC (2,0,14,10,3),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr1_el1",   CPENC (2,0,14,8,1),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr20_el1",  CPENC (2,0,14,10,4),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr21_el1",  CPENC (2,0,14,10,5),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr22_el1",  CPENC (2,0,14,10,6),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr23_el1",  CPENC (2,0,14,10,7),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr24_el1",  CPENC (2,0,14,11,0),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr25_el1",  CPENC (2,0,14,11,1),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr26_el1",  CPENC (2,0,14,11,2),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr27_el1",  CPENC (2,0,14,11,3),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr28_el1",  CPENC (2,0,14,11,4),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr29_el1",  CPENC (2,0,14,11,5),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr2_el1",   CPENC (2,0,14,8,2),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr30_el1",  CPENC (2,0,14,11,6),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr3_el1",   CPENC (2,0,14,8,3),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr4_el1",   CPENC (2,0,14,8,4),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr5_el1",   CPENC (2,0,14,8,5),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr6_el1",   CPENC (2,0,14,8,6),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr7_el1",   CPENC (2,0,14,8,7),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr8_el1",   CPENC (2,0,14,9,0),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
+  SYSREG ("pmevcntsvr9_el1",   CPENC (2,0,14,9,1),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
   SYSREG ("pmevtyper0_el0",    CPENC (3,3,14,12,0),    0,              AARCH64_NO_FEATURES)
   SYSREG ("pmevtyper10_el0",   CPENC (3,3,14,13,2),    0,              AARCH64_NO_FEATURES)
   SYSREG ("pmevtyper11_el0",   CPENC (3,3,14,13,3),    0,              AARCH64_NO_FEATURES)
   SYSREG ("pmevtyper7_el0",    CPENC (3,3,14,12,7),    0,              AARCH64_NO_FEATURES)
   SYSREG ("pmevtyper8_el0",    CPENC (3,3,14,13,0),    0,              AARCH64_NO_FEATURES)
   SYSREG ("pmevtyper9_el0",    CPENC (3,3,14,13,1),    0,              AARCH64_NO_FEATURES)
-  SYSREG ("pmiar_el1",         CPENC (3,0,9,14,7),     0,              AARCH64_FEATURE (SEBEP))
-  SYSREG ("pmicfiltr_el0",     CPENC (3,3,9,6,0),      0,              AARCH64_FEATURE (PMUv3_ICNTR))
-  SYSREG ("pmicntr_el0",       CPENC (3,3,9,4,0),      0,              AARCH64_FEATURE (PMUv3_ICNTR))
-  SYSREG ("pmicntsvr_el1",     CPENC (2,0,14,12,0),    F_REG_READ,     AARCH64_FEATURE (PMUv3_SS))
+  SYSREG ("pmiar_el1",         CPENC (3,0,9,14,7),     0,              AARCH64_FEATURE (V9_3A)) /* SEBEP */
+  SYSREG ("pmicfiltr_el0",     CPENC (3,3,9,6,0),      0,              AARCH64_FEATURE (V8_8A)) /* PMUv3_ICNTR */
+  SYSREG ("pmicntr_el0",       CPENC (3,3,9,4,0),      0,              AARCH64_FEATURE (V8_8A)) /* PMUv3_ICNTR */
+  SYSREG ("pmicntsvr_el1",     CPENC (2,0,14,12,0),    F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* PMUv3_ICNTR && PMUv3_SS */
   SYSREG ("pmintenclr_el1",    CPENC (3,0,9,14,2),     0,              AARCH64_NO_FEATURES)
   SYSREG ("pmintenset_el1",    CPENC (3,0,9,14,1),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("pmmir_el1",         CPENC (3,0,9,14,6),     F_REG_READ,     AARCH64_FEATURE (V8_4A))
+  SYSREG ("pmmir_el1",         CPENC (3,0,9,14,6),     F_REG_READ,     AARCH64_FEATURE (V8_3A)) /* PMUv3p4 */
   SYSREG ("pmovsclr_el0",      CPENC (3,3,9,12,3),     0,              AARCH64_NO_FEATURES)
   SYSREG ("pmovsset_el0",      CPENC (3,3,9,14,3),     0,              AARCH64_NO_FEATURES)
   SYSREG ("pmscr_el1",         CPENC (3,0,9,9,0),      0,              AARCH64_FEATURE (PROFILE))
   SYSREG ("pmscr_el12",                CPENC (3,5,9,9,0),      0,              AARCH64_FEATURE (PROFILE))
   SYSREG ("pmscr_el2",         CPENC (3,4,9,9,0),      0,              AARCH64_FEATURE (PROFILE))
-  SYSREG ("pmsdsfr_el1",       CPENC (3,0,9,10,4),     0,              AARCH64_FEATURE (SPE_FDS))
+  SYSREG ("pmsdsfr_el1",       CPENC (3,0,9,10,4),     0,              AARCH64_FEATURES (2, PROFILE, V8_8A)) /* SPE_FDS */
   SYSREG ("pmselr_el0",                CPENC (3,3,9,12,5),     0,              AARCH64_NO_FEATURES)
   SYSREG ("pmsevfr_el1",       CPENC (3,0,9,9,5),      0,              AARCH64_FEATURE (PROFILE))
   SYSREG ("pmsfcr_el1",                CPENC (3,0,9,9,4),      0,              AARCH64_FEATURE (PROFILE))
   SYSREG ("pmsidr_el1",                CPENC (3,0,9,9,7),      F_REG_READ,     AARCH64_FEATURE (PROFILE))
   SYSREG ("pmsirr_el1",                CPENC (3,0,9,9,3),      0,              AARCH64_FEATURE (PROFILE))
   SYSREG ("pmslatfr_el1",      CPENC (3,0,9,9,6),      0,              AARCH64_FEATURE (PROFILE))
-  SYSREG ("pmsnevfr_el1",      CPENC (3,0,9,9,1),      0,              AARCH64_FEATURE (V8_7A))
-  SYSREG ("pmsscr_el1",                CPENC (3,0,9,13,3),     0,              AARCH64_FEATURE (PMUv3_SS))
+  SYSREG ("pmsnevfr_el1",      CPENC (3,0,9,9,1),      0,              AARCH64_FEATURES (2, PROFILE, V8_6A)) /* SPE_FnE */
+  SYSREG ("pmsscr_el1",                CPENC (3,0,9,13,3),     0,              AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
   SYSREG ("pmswinc_el0",       CPENC (3,3,9,12,4),     F_REG_WRITE,    AARCH64_NO_FEATURES)
-  SYSREG ("pmuacr_el1",                CPENC (3,0,9,14,4),     0,              AARCH64_FEATURE (PMUv3p9))
+  SYSREG ("pmuacr_el1",                CPENC (3,0,9,14,4),     0,              AARCH64_FEATURE (V8_8A)) /* PMUv3p9 */
   SYSREG ("pmuserenr_el0",     CPENC (3,3,9,14,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("pmxevcntr_el0",     CPENC (3,3,9,13,2),     0,              AARCH64_NO_FEATURES)
   SYSREG ("pmxevtyper_el0",    CPENC (3,3,9,13,1),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("pmzr_el0",          CPENC (3,3,9,13,4),     F_REG_WRITE,    AARCH64_FEATURE (PMUv3_ICNTR))
-  SYSREG ("por_el0",           CPENC (3,3,10,2,4),     0,              AARCH64_FEATURE (S1POE))
-  SYSREG ("por_el1",           CPENC (3,0,10,2,4),     0,              AARCH64_FEATURE (S1POE))
-  SYSREG ("por_el12",          CPENC (3,5,10,2,4),     0,              AARCH64_FEATURE (S1POE))
-  SYSREG ("por_el2",           CPENC (3,4,10,2,4),     0,              AARCH64_FEATURE (S1POE))
-  SYSREG ("por_el3",           CPENC (3,6,10,2,4),     0,              AARCH64_FEATURE (S1POE))
+  SYSREG ("pmzr_el0",          CPENC (3,3,9,13,4),     F_REG_WRITE,    AARCH64_FEATURE (V8_8A)) /* PMUv3p9 */
+  SYSREG ("por_el0",           CPENC (3,3,10,2,4),     0,              AARCH64_FEATURE (V8_8A)) /* S1POE */
+  SYSREG ("por_el1",           CPENC (3,0,10,2,4),     0,              AARCH64_FEATURE (V8_8A)) /* S1POE */
+  SYSREG ("por_el12",          CPENC (3,5,10,2,4),     0,              AARCH64_FEATURE (V8_8A)) /* S1POE */
+  SYSREG ("por_el2",           CPENC (3,4,10,2,4),     0,              AARCH64_FEATURE (V8_8A)) /* S1POE */
+  SYSREG ("por_el3",           CPENC (3,6,10,2,4),     0,              AARCH64_FEATURE (V8_8A)) /* S1POE */
   SYSREG ("prbar10_el1",       CPENC (3,0,6,13,0),     0,              AARCH64_FEATURE (V8R))
   SYSREG ("prbar10_el2",       CPENC (3,4,6,13,0),     0,              AARCH64_FEATURE (V8R))
   SYSREG ("prbar11_el1",       CPENC (3,0,6,13,4),     0,              AARCH64_FEATURE (V8R))
   SYSREG ("rvbar_el1",         CPENC (3,0,12,0,1),     F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("rvbar_el2",         CPENC (3,4,12,0,1),     F_REG_READ,     AARCH64_NO_FEATURES)
   SYSREG ("rvbar_el3",         CPENC (3,6,12,0,1),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("s2pir_el2",         CPENC (3,4,10,2,5),     0,              AARCH64_FEATURE (S2PIE))
-  SYSREG ("s2por_el1",         CPENC (3,0,10,2,5),     0,              AARCH64_FEATURE (S2POE))
+  SYSREG ("s2pir_el2",         CPENC (3,4,10,2,5),     0,              AARCH64_FEATURE (V8_8A)) /* S2PIE */
+  SYSREG ("s2por_el1",         CPENC (3,0,10,2,5),     0,              AARCH64_FEATURE (V8_8A)) /* S2POE */
   SYSREG ("scr_el3",           CPENC (3,6,1,1,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("sctlr_el1",         CPENC (3,0,1,0,0),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("sctlr_el12",                CPENC (3,5,1,0,0),      0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("sctlr_el12",                CPENC (3,5,1,0,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("sctlr_el2",         CPENC (3,4,1,0,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("sctlr_el3",         CPENC (3,6,1,0,0),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("sctlr2_el1",                CPENC (3,0,1,0,3),      0,              AARCH64_FEATURE (SCTLR2))
-  SYSREG ("sctlr2_el12",       CPENC (3,5,1,0,3),      0,              AARCH64_FEATURE (SCTLR2))
-  SYSREG ("sctlr2_el2",                CPENC (3,4,1,0,3),      0,              AARCH64_FEATURE (SCTLR2))
-  SYSREG ("sctlr2_el3",                CPENC (3,6,1,0,3),      0,              AARCH64_FEATURE (SCTLR2))
+  SYSREG ("sctlr2_el1",                CPENC (3,0,1,0,3),      0,              AARCH64_NO_FEATURES)
+  SYSREG ("sctlr2_el12",       CPENC (3,5,1,0,3),      0,              AARCH64_NO_FEATURES)
+  SYSREG ("sctlr2_el2",                CPENC (3,4,1,0,3),      0,              AARCH64_NO_FEATURES)
+  SYSREG ("sctlr2_el3",                CPENC (3,6,1,0,3),      0,              AARCH64_NO_FEATURES)
   SYSREG ("sctlr2alias_el1",   CPENC (3,0,1,4,7),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
   SYSREG ("sctlr2mask_el1",    CPENC (3,0,1,4,3),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
   SYSREG ("sctlr2mask_el12",   CPENC (3,5,1,4,3),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
   SYSREG ("sctlrmask_el1",     CPENC (3,0,1,4,0),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
   SYSREG ("sctlrmask_el12",    CPENC (3,5,1,4,0),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
   SYSREG ("sctlrmask_el2",     CPENC (3,4,1,4,0),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
-  SYSREG ("scxtnum_el0",       CPENC (3,3,13,0,7),     0,              AARCH64_FEATURE (SCXTNUM))
-  SYSREG ("scxtnum_el1",       CPENC (3,0,13,0,7),     0,              AARCH64_FEATURE (SCXTNUM))
-  SYSREG ("scxtnum_el12",      CPENC (3,5,13,0,7),     0,              AARCH64_FEATURE (SCXTNUM))
-  SYSREG ("scxtnum_el2",       CPENC (3,4,13,0,7),     0,              AARCH64_FEATURE (SCXTNUM))
-  SYSREG ("scxtnum_el3",       CPENC (3,6,13,0,7),     0,              AARCH64_FEATURE (SCXTNUM))
-  SYSREG ("sder32_el2",                CPENC (3,4,1,3,1),      0,              AARCH64_FEATURE (V8_4A))
+  SYSREG ("scxtnum_el0",       CPENC (3,3,13,0,7),     0,              AARCH64_NO_FEATURES) /* CSV2_2 || CSV2_1p2 */
+  SYSREG ("scxtnum_el1",       CPENC (3,0,13,0,7),     0,              AARCH64_NO_FEATURES) /* CSV2_2 || CSV2_1p2 */
+  SYSREG ("scxtnum_el12",      CPENC (3,5,13,0,7),     0,              AARCH64_NO_FEATURES) /* CSV2_2 || CSV2_1p2 */
+  SYSREG ("scxtnum_el2",       CPENC (3,4,13,0,7),     0,              AARCH64_NO_FEATURES) /* CSV2_2 || CSV2_1p2 */
+  SYSREG ("scxtnum_el3",       CPENC (3,6,13,0,7),     0,              AARCH64_NO_FEATURES) /* CSV2_2 || CSV2_1p2 */
+  SYSREG ("sder32_el2",                CPENC (3,4,1,3,1),      0,              AARCH64_FEATURE (V8_3A)) /* SEL2 */
   SYSREG ("sder32_el3",                CPENC (3,6,1,1,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("smcr_el1",          CPENC (3,0,1,2,6),      0,              AARCH64_FEATURE (SME))
   SYSREG ("smcr_el12",         CPENC (3,5,1,2,6),      0,              AARCH64_FEATURE (SME))
   SYSREG ("sp_el0",            CPENC (3,0,4,1,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("sp_el1",            CPENC (3,4,4,1,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("sp_el2",            CPENC (3,6,4,1,0),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("spmaccessr_el1",    CPENC (2,0,9,13,3),     0,              AARCH64_FEATURE (SPMU))
+  SYSREG ("spmaccessr_el1",    CPENC (2,0,9,13,3),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
   SYSREG ("spmaccessr_el12",   CPENC (2,5,9,13,3),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
-  SYSREG ("spmaccessr_el2",    CPENC (2,4,9,13,3),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmaccessr_el3",    CPENC (2,6,9,13,3),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmcfgr_el1",       CPENC (2,0,9,13,7),     F_REG_READ,     AARCH64_FEATURE (SPMU))
-  SYSREG ("spmcgcr0_el1",      CPENC (2,0,9,13,0),     F_REG_READ,     AARCH64_FEATURE (SPMU))
-  SYSREG ("spmcgcr1_el1",      CPENC (2,0,9,13,1),     F_REG_READ,     AARCH64_FEATURE (SPMU))
-  SYSREG ("spmcntenclr_el0",   CPENC (2,3,9,12,2),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmcntenset_el0",   CPENC (2,3,9,12,1),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmcr_el0",         CPENC (2,3,9,12,0),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmdevaff_el1",     CPENC (2,0,9,13,6),     F_REG_READ,     AARCH64_FEATURE (SPMU))
-  SYSREG ("spmdevarch_el1",    CPENC (2,0,9,13,5),     F_REG_READ,     AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr0_el0",    CPENC (2,3,14,0,0),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr1_el0",    CPENC (2,3,14,0,1),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr2_el0",    CPENC (2,3,14,0,2),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr3_el0",    CPENC (2,3,14,0,3),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr4_el0",    CPENC (2,3,14,0,4),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr5_el0",    CPENC (2,3,14,0,5),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr6_el0",    CPENC (2,3,14,0,6),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr7_el0",    CPENC (2,3,14,0,7),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr8_el0",    CPENC (2,3,14,1,0),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr9_el0",    CPENC (2,3,14,1,1),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr10_el0",   CPENC (2,3,14,1,2),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr11_el0",   CPENC (2,3,14,1,3),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr12_el0",   CPENC (2,3,14,1,4),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr13_el0",   CPENC (2,3,14,1,5),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr14_el0",   CPENC (2,3,14,1,6),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevcntr15_el0",   CPENC (2,3,14,1,7),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r0_el0",  CPENC (2,3,14,6,0),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r1_el0",  CPENC (2,3,14,6,1),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r2_el0",  CPENC (2,3,14,6,2),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r3_el0",  CPENC (2,3,14,6,3),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r4_el0",  CPENC (2,3,14,6,4),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r5_el0",  CPENC (2,3,14,6,5),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r6_el0",  CPENC (2,3,14,6,6),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r7_el0",  CPENC (2,3,14,6,7),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r8_el0",  CPENC (2,3,14,7,0),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r9_el0",  CPENC (2,3,14,7,1),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r10_el0", CPENC (2,3,14,7,2),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r11_el0", CPENC (2,3,14,7,3),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r12_el0", CPENC (2,3,14,7,4),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r13_el0", CPENC (2,3,14,7,5),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r14_el0", CPENC (2,3,14,7,6),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfilt2r15_el0", CPENC (2,3,14,7,7),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr0_el0",   CPENC (2,3,14,4,0),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr1_el0",   CPENC (2,3,14,4,1),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr2_el0",   CPENC (2,3,14,4,2),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr3_el0",   CPENC (2,3,14,4,3),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr4_el0",   CPENC (2,3,14,4,4),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr5_el0",   CPENC (2,3,14,4,5),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr6_el0",   CPENC (2,3,14,4,6),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr7_el0",   CPENC (2,3,14,4,7),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr8_el0",   CPENC (2,3,14,5,0),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr9_el0",   CPENC (2,3,14,5,1),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr10_el0",  CPENC (2,3,14,5,2),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr11_el0",  CPENC (2,3,14,5,3),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr12_el0",  CPENC (2,3,14,5,4),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr13_el0",  CPENC (2,3,14,5,5),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr14_el0",  CPENC (2,3,14,5,6),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevfiltr15_el0",  CPENC (2,3,14,5,7),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper0_el0",   CPENC (2,3,14,2,0),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper1_el0",   CPENC (2,3,14,2,1),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper2_el0",   CPENC (2,3,14,2,2),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper3_el0",   CPENC (2,3,14,2,3),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper4_el0",   CPENC (2,3,14,2,4),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper5_el0",   CPENC (2,3,14,2,5),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper6_el0",   CPENC (2,3,14,2,6),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper7_el0",   CPENC (2,3,14,2,7),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper8_el0",   CPENC (2,3,14,3,0),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper9_el0",   CPENC (2,3,14,3,1),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper10_el0",  CPENC (2,3,14,3,2),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper11_el0",  CPENC (2,3,14,3,3),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper12_el0",  CPENC (2,3,14,3,4),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper13_el0",  CPENC (2,3,14,3,5),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper14_el0",  CPENC (2,3,14,3,6),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmevtyper15_el0",  CPENC (2,3,14,3,7),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmiidr_el1",       CPENC (2,0,9,13,4),     F_REG_READ,     AARCH64_FEATURE (SPMU))
-  SYSREG ("spmintenclr_el1",   CPENC (2,0,9,14,2),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmintenset_el1",   CPENC (2,0,9,14,1),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmovsclr_el0",     CPENC (2,3,9,12,3),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmovsset_el0",     CPENC (2,3,9,14,3),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmrootcr_el3",     CPENC (2,6,9,14,7),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmscr_el1",                CPENC (2,7,9,14,7),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmselr_el0",       CPENC (2,3,9,12,5),     0,              AARCH64_FEATURE (SPMU))
-  SYSREG ("spmzr_el0",         CPENC (2,3,9,12,4),     F_REG_WRITE,    AARCH64_FEATURE (SPMU2))
+  SYSREG ("spmaccessr_el2",    CPENC (2,4,9,13,3),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmaccessr_el3",    CPENC (2,6,9,13,3),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmcfgr_el1",       CPENC (2,0,9,13,7),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmcgcr0_el1",      CPENC (2,0,9,13,0),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmcgcr1_el1",      CPENC (2,0,9,13,1),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmcntenclr_el0",   CPENC (2,3,9,12,2),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmcntenset_el0",   CPENC (2,3,9,12,1),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmcr_el0",         CPENC (2,3,9,12,0),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmdevaff_el1",     CPENC (2,0,9,13,6),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmdevarch_el1",    CPENC (2,0,9,13,5),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr0_el0",    CPENC (2,3,14,0,0),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr1_el0",    CPENC (2,3,14,0,1),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr2_el0",    CPENC (2,3,14,0,2),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr3_el0",    CPENC (2,3,14,0,3),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr4_el0",    CPENC (2,3,14,0,4),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr5_el0",    CPENC (2,3,14,0,5),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr6_el0",    CPENC (2,3,14,0,6),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr7_el0",    CPENC (2,3,14,0,7),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr8_el0",    CPENC (2,3,14,1,0),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr9_el0",    CPENC (2,3,14,1,1),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr10_el0",   CPENC (2,3,14,1,2),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr11_el0",   CPENC (2,3,14,1,3),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr12_el0",   CPENC (2,3,14,1,4),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr13_el0",   CPENC (2,3,14,1,5),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr14_el0",   CPENC (2,3,14,1,6),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevcntr15_el0",   CPENC (2,3,14,1,7),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r0_el0",  CPENC (2,3,14,6,0),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r1_el0",  CPENC (2,3,14,6,1),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r2_el0",  CPENC (2,3,14,6,2),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r3_el0",  CPENC (2,3,14,6,3),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r4_el0",  CPENC (2,3,14,6,4),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r5_el0",  CPENC (2,3,14,6,5),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r6_el0",  CPENC (2,3,14,6,6),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r7_el0",  CPENC (2,3,14,6,7),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r8_el0",  CPENC (2,3,14,7,0),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r9_el0",  CPENC (2,3,14,7,1),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r10_el0", CPENC (2,3,14,7,2),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r11_el0", CPENC (2,3,14,7,3),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r12_el0", CPENC (2,3,14,7,4),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r13_el0", CPENC (2,3,14,7,5),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r14_el0", CPENC (2,3,14,7,6),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfilt2r15_el0", CPENC (2,3,14,7,7),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr0_el0",   CPENC (2,3,14,4,0),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr1_el0",   CPENC (2,3,14,4,1),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr2_el0",   CPENC (2,3,14,4,2),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr3_el0",   CPENC (2,3,14,4,3),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr4_el0",   CPENC (2,3,14,4,4),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr5_el0",   CPENC (2,3,14,4,5),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr6_el0",   CPENC (2,3,14,4,6),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr7_el0",   CPENC (2,3,14,4,7),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr8_el0",   CPENC (2,3,14,5,0),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr9_el0",   CPENC (2,3,14,5,1),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr10_el0",  CPENC (2,3,14,5,2),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr11_el0",  CPENC (2,3,14,5,3),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr12_el0",  CPENC (2,3,14,5,4),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr13_el0",  CPENC (2,3,14,5,5),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr14_el0",  CPENC (2,3,14,5,6),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevfiltr15_el0",  CPENC (2,3,14,5,7),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper0_el0",   CPENC (2,3,14,2,0),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper1_el0",   CPENC (2,3,14,2,1),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper2_el0",   CPENC (2,3,14,2,2),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper3_el0",   CPENC (2,3,14,2,3),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper4_el0",   CPENC (2,3,14,2,4),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper5_el0",   CPENC (2,3,14,2,5),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper6_el0",   CPENC (2,3,14,2,6),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper7_el0",   CPENC (2,3,14,2,7),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper8_el0",   CPENC (2,3,14,3,0),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper9_el0",   CPENC (2,3,14,3,1),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper10_el0",  CPENC (2,3,14,3,2),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper11_el0",  CPENC (2,3,14,3,3),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper12_el0",  CPENC (2,3,14,3,4),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper13_el0",  CPENC (2,3,14,3,5),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper14_el0",  CPENC (2,3,14,3,6),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmevtyper15_el0",  CPENC (2,3,14,3,7),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmiidr_el1",       CPENC (2,0,9,13,4),     F_REG_READ,     AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmintenclr_el1",   CPENC (2,0,9,14,2),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmintenset_el1",   CPENC (2,0,9,14,1),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmovsclr_el0",     CPENC (2,3,9,12,3),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmovsset_el0",     CPENC (2,3,9,14,3),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmrootcr_el3",     CPENC (2,6,9,14,7),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmscr_el1",                CPENC (2,7,9,14,7),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmselr_el0",       CPENC (2,3,9,12,5),     0,              AARCH64_FEATURE (V8_8A)) /* SPMU */
+  SYSREG ("spmzr_el0",         CPENC (2,3,9,12,4),     F_REG_WRITE,    AARCH64_FEATURE (V9_4A)) /* SPMU2 */
   SYSREG ("spsel",             CPENC (3,0,4,2,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("spsr_abt",          CPENC (3,4,4,3,1),      0,              AARCH64_NO_FEATURES)
   SYSREG ("spsr_el1",          CPENC (3,0,4,0,0),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("spsr_el12",         CPENC (3,5,4,0,0),      0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("spsr_el12",         CPENC (3,5,4,0,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("spsr_el2",          CPENC (3,4,4,0,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("spsr_el3",          CPENC (3,6,4,0,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("spsr_fiq",          CPENC (3,4,4,3,3),      0,              AARCH64_NO_FEATURES)
   SYSREG ("svcr",              CPENC (3,3,4,2,2),      0,              AARCH64_FEATURE (SME))
   SYSREG ("tco",               CPENC (3,3,4,2,7),      0,              AARCH64_FEATURE (MEMTAG))
   SYSREG ("tcr_el1",           CPENC (3,0,2,0,2),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("tcr_el12",          CPENC (3,5,2,0,2),      0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("tcr_el12",          CPENC (3,5,2,0,2),      0,              AARCH64_NO_FEATURES)
   SYSREG ("tcr_el2",           CPENC (3,4,2,0,2),      0,              AARCH64_NO_FEATURES)
   SYSREG ("tcr_el3",           CPENC (3,6,2,0,2),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("tcr2_el1",          CPENC (3,0,2,0,3),      0,              AARCH64_FEATURE (TCR2))
-  SYSREG ("tcr2_el12",         CPENC (3,5,2,0,3),      0,              AARCH64_FEATURE (TCR2))
-  SYSREG ("tcr2_el2",          CPENC (3,4,2,0,3),      0,              AARCH64_FEATURE (TCR2))
+  SYSREG ("tcr2_el1",          CPENC (3,0,2,0,3),      0,              AARCH64_NO_FEATURES)
+  SYSREG ("tcr2_el12",         CPENC (3,5,2,0,3),      0,              AARCH64_NO_FEATURES)
+  SYSREG ("tcr2_el2",          CPENC (3,4,2,0,3),      0,              AARCH64_NO_FEATURES)
   SYSREG ("tcr2alias_el1",     CPENC (3,0,2,7,7),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
   SYSREG ("tcr2mask_el1",      CPENC (3,0,2,7,3),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
   SYSREG ("tcr2mask_el12",     CPENC (3,5,2,7,3),      0,              AARCH64_FEATURE (V9_5A)) /* SRMASK */
   SYSREG ("tpidr_el2",         CPENC (3,4,13,0,2),     0,              AARCH64_NO_FEATURES)
   SYSREG ("tpidr_el3",         CPENC (3,6,13,0,2),     0,              AARCH64_NO_FEATURES)
   SYSREG ("tpidrro_el0",       CPENC (3,3,13,0,3),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("trbbaser_el1",      CPENC (3,0,9,11,2),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("trbidr_el1",                CPENC (3,0,9,11,7),     F_REG_READ,     AARCH64_NO_FEATURES)
-  SYSREG ("trblimitr_el1",     CPENC (3,0,9,11,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("trbmar_el1",                CPENC (3,0,9,11,4),     0,              AARCH64_NO_FEATURES)
+  SYSREG ("trbbaser_el1",      CPENC (3,0,9,11,2),     0,              AARCH64_FEATURE (V9A)) /* TRBE */
+  SYSREG ("trbidr_el1",                CPENC (3,0,9,11,7),     F_REG_READ,     AARCH64_FEATURE (V9A)) /* TRBE */
+  SYSREG ("trblimitr_el1",     CPENC (3,0,9,11,0),     0,              AARCH64_FEATURE (V9A)) /* TRBE */
+  SYSREG ("trbmar_el1",                CPENC (3,0,9,11,4),     0,              AARCH64_FEATURE (V9A)) /* TRBE */
   SYSREG ("trbmpam_el1",       CPENC (3,0,9,11,5),     0,              AARCH64_FEATURE (V9_3A)) /* TRBE_MPAM */
-  SYSREG ("trbptr_el1",                CPENC (3,0,9,11,1),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("trbsr_el1",         CPENC (3,0,9,11,3),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("trbsr_el12",                CPENC (3,5,9,11,3),     0,              AARCH64_FEATURE (V9_5A))
-  SYSREG ("trbsr_el2",         CPENC (3,4,9,11,3),     0,              AARCH64_FEATURE (V9_5A))
-  SYSREG ("trbsr_el3",         CPENC (3,6,9,11,3),     0,              AARCH64_FEATURE (V9_5A))
-  SYSREG ("trbtrg_el1",                CPENC (3,0,9,11,6),     0,              AARCH64_NO_FEATURES)
+  SYSREG ("trbptr_el1",                CPENC (3,0,9,11,1),     0,              AARCH64_FEATURE (V9A)) /* TRBE */
+  SYSREG ("trbsr_el1",         CPENC (3,0,9,11,3),     0,              AARCH64_FEATURE (V9A)) /* TRBE */
+  SYSREG ("trbsr_el12",                CPENC (3,5,9,11,3),     0,              AARCH64_FEATURE (V9_5A)) /* TRBE_EXC */
+  SYSREG ("trbsr_el2",         CPENC (3,4,9,11,3),     0,              AARCH64_FEATURE (V9_5A)) /* TRBE_EXC */
+  SYSREG ("trbsr_el3",         CPENC (3,6,9,11,3),     0,              AARCH64_FEATURE (V9_5A)) /* TRBE_EXC */
+  SYSREG ("trbtrg_el1",                CPENC (3,0,9,11,6),     0,              AARCH64_FEATURE (V9A)) /* TRBE */
   SYSREG ("trcacatr0",         CPENC (2,1,2,0,2),      0,              AARCH64_NO_FEATURES)
   SYSREG ("trcacatr1",         CPENC (2,1,2,2,2),      0,              AARCH64_NO_FEATURES)
   SYSREG ("trcacatr10",                CPENC (2,1,2,4,3),      0,              AARCH64_NO_FEATURES)
   SYSREG ("trcvmidcvr5",       CPENC (2,1,3,10,1),     0,              AARCH64_NO_FEATURES)
   SYSREG ("trcvmidcvr6",       CPENC (2,1,3,12,1),     0,              AARCH64_NO_FEATURES)
   SYSREG ("trcvmidcvr7",       CPENC (2,1,3,14,1),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("trfcr_el1",         CPENC (3,0,1,2,1),      0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("trfcr_el12",                CPENC (3,5,1,2,1),      0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("trfcr_el2",         CPENC (3,4,1,2,1),      0,              AARCH64_FEATURE (V8_4A))
+  SYSREG ("trfcr_el1",         CPENC (3,0,1,2,1),      0,              AARCH64_FEATURE (V8_3A)) /* TRF */
+  SYSREG ("trfcr_el12",                CPENC (3,5,1,2,1),      0,              AARCH64_FEATURE (V8_3A)) /* TRF */
+  SYSREG ("trfcr_el2",         CPENC (3,4,1,2,1),      0,              AARCH64_FEATURE (V8_3A)) /* TRF */
   SYSREG ("ttbr0_el1",         CPENC (3,0,2,0,0),      F_REG_128,      AARCH64_NO_FEATURES)
-  SYSREG ("ttbr0_el12",                CPENC (3,5,2,0,0),      F_REG_128,      AARCH64_FEATURE (V8_1A))
+  SYSREG ("ttbr0_el12",                CPENC (3,5,2,0,0),      F_REG_128,      AARCH64_NO_FEATURES)
   SYSREG ("ttbr0_el2",         CPENC (3,4,2,0,0),      F_REG_128,      AARCH64_FEATURE (V8A))
   SYSREG ("ttbr0_el3",         CPENC (3,6,2,0,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("ttbr1_el1",         CPENC (3,0,2,0,1),      F_REG_128,      AARCH64_NO_FEATURES)
-  SYSREG ("ttbr1_el12",                CPENC (3,5,2,0,1),      F_REG_128,      AARCH64_FEATURE (V8_1A))
-  SYSREG ("ttbr1_el2",         CPENC (3,4,2,0,1),      F_REG_128,      AARCH64_FEATURES (2, V8A, V8_1A))
-  SYSREG ("uao",               CPENC (3,0,4,2,4),      0,              AARCH64_FEATURE (V8_2A))
+  SYSREG ("ttbr1_el12",                CPENC (3,5,2,0,1),      F_REG_128,      AARCH64_NO_FEATURES)
+  SYSREG ("ttbr1_el2",         CPENC (3,4,2,0,1),      F_REG_128,      AARCH64_FEATURE (V8A))
+  SYSREG ("uao",               CPENC (3,0,4,2,4),      0,              AARCH64_FEATURE (V8_1A)) /* UAO */
   SYSREG ("vbar_el1",          CPENC (3,0,12,0,0),     0,              AARCH64_NO_FEATURES)
-  SYSREG ("vbar_el12",         CPENC (3,5,12,0,0),     0,              AARCH64_FEATURE (V8_1A))
+  SYSREG ("vbar_el12",         CPENC (3,5,12,0,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("vbar_el2",          CPENC (3,4,12,0,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("vbar_el3",          CPENC (3,6,12,0,0),     0,              AARCH64_NO_FEATURES)
   SYSREG ("vdisr_el2",         CPENC (3,4,12,1,1),     0,              AARCH64_FEATURE (RAS))
-  SYSREG ("vdisr_el3",         CPENC (3,6,12,1,1),     0,              AARCH64_FEATURE (E3DSE))
-  SYSREG ("vmecid_a_el2",      CPENC (3,4,10,9,1),     0,              AARCH64_FEATURE (V8_7A))
-  SYSREG ("vmecid_p_el2",      CPENC (3,4,10,9,0),     0,              AARCH64_FEATURE (V8_7A))
+  SYSREG ("vdisr_el3",         CPENC (3,6,12,1,1),     0,              AARCH64_FEATURE (V9_4A)) /* E3DSE */
+  SYSREG ("vmecid_a_el2",      CPENC (3,4,10,9,1),     0,              AARCH64_FEATURE (V9_2A)) /* MEC */
+  SYSREG ("vmecid_p_el2",      CPENC (3,4,10,9,0),     0,              AARCH64_FEATURE (V9_2A)) /* MEC */
   SYSREG ("vmpidr_el2",                CPENC (3,4,0,0,5),      0,              AARCH64_NO_FEATURES)
-  SYSREG ("vncr_el2",          CPENC (3,4,2,2,0),      0,              AARCH64_FEATURE (V8_4A))
+  SYSREG ("vncr_el2",          CPENC (3,4,2,2,0),      0,              AARCH64_FEATURE (V8_3A)) /* NV2 */
   SYSREG ("vpidr_el2",         CPENC (3,4,0,0,0),      0,              AARCH64_NO_FEATURES)
   SYSREG ("vsctlr_el2",                CPENC (3,4,2,0,0),      0,              AARCH64_FEATURE (V8R))
   SYSREG ("vsesr_el2",         CPENC (3,4,5,2,3),      0,              AARCH64_FEATURE (RAS))
-  SYSREG ("vsesr_el3",         CPENC (3,6,5,2,3),      0,              AARCH64_FEATURE (E3DSE))
-  SYSREG ("vstcr_el2",         CPENC (3,4,2,6,2),      0,              AARCH64_FEATURE (V8_4A))
-  SYSREG ("vsttbr_el2",                CPENC (3,4,2,6,0),      0,              AARCH64_FEATURES (2, V8A, V8_4A))
+  SYSREG ("vsesr_el3",         CPENC (3,6,5,2,3),      0,              AARCH64_FEATURE (V9_4A)) /* E3DSE */
+  SYSREG ("vstcr_el2",         CPENC (3,4,2,6,2),      0,              AARCH64_FEATURE (V8_3A)) /* SEL2 */
+  SYSREG ("vsttbr_el2",                CPENC (3,4,2,6,0),      0,              AARCH64_FEATURES (2, V8A, V8_3A)) /* SEL2 */
   SYSREG ("vtcr_el2",          CPENC (3,4,2,1,2),      0,              AARCH64_NO_FEATURES)
   SYSREG ("vttbr_el2",         CPENC (3,4,2,1,0),      F_REG_128,      AARCH64_FEATURE (V8A))
   SYSREG ("zcr_el1",           CPENC (3,0,1,2,0),      0,              AARCH64_FEATURE (SVE))