aarch64: Update system register gating

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.
diff --git a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.d b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.d
index 862d474..3091288 100644
--- a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.d
+++ b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.d
@@ -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
diff --git a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.l b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.l
index 5df4f46..0ba6819 100644
--- a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.l
+++ b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.l
@@ -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'
@@ -71,12 +63,6 @@
 .*: 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'
@@ -283,4 +269,4 @@
 .*: 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'
diff --git a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d
index 91e77bc..3e69aad 100644
--- a/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d
+++ b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d
@@ -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 .*
diff --git a/gas/testsuite/gas/aarch64/sysreg/armv9_5-a-sysregs-archv9_4-unsupported.d b/gas/testsuite/gas/aarch64/sysreg/armv9_5-a-sysregs-archv9_4-unsupported.d
index 61054ae..30180db 100644
--- a/gas/testsuite/gas/aarch64/sysreg/armv9_5-a-sysregs-archv9_4-unsupported.d
+++ b/gas/testsuite/gas/aarch64/sysreg/armv9_5-a-sysregs-archv9_4-unsupported.d
@@ -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
diff --git a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4.l b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4.l
index 590f20e..9ac8746 100644
--- a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4.l
+++ b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4.l
@@ -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'
diff --git a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8.s b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8.s
index 0ce61dd..1a526a2 100644
--- a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8.s
+++ b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8.s
@@ -13,20 +13,19 @@
 
 	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
@@ -121,7 +120,7 @@
 	rwreg	amevcntvoff115_el2
 	rwreg	cntpoff_el2
 
-	.arch	armv8.6-a
+	.arch	armv8.5-a+profile
 
 	rwreg	pmsnevfr_el1
 	rwreg	hcrx_el2
diff --git a/gas/testsuite/gas/aarch64/sysreg/sme-sysreg.d b/gas/testsuite/gas/aarch64/sysreg/sme-sysreg.d
index f51c56e..daa273e 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sme-sysreg.d
+++ b/gas/testsuite/gas/aarch64/sysreg/sme-sysreg.d
@@ -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 .*
diff --git a/gas/testsuite/gas/aarch64/sysreg/sve-sysreg-invalid.l b/gas/testsuite/gas/aarch64/sysreg/sve-sysreg-invalid.l
index 0eaefe1..1e553d7 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sve-sysreg-invalid.l
+++ b/gas/testsuite/gas/aarch64/sysreg/sve-sysreg-invalid.l
@@ -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'
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s
index 0cf1178..8dfb2dc 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.s
@@ -172,7 +172,7 @@
 	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
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions-bad.l b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions-bad.l
index 415c8a8..fce2307 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions-bad.l
+++ b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions-bad.l
@@ -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'
@@ -21,12 +17,6 @@
 .*:  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'
@@ -83,18 +73,10 @@
 .*:  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'
@@ -125,8 +107,6 @@
 .*:  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'
@@ -137,8 +117,6 @@
 .*:  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'
@@ -165,7 +143,3 @@
 .*:  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
diff --git a/gas/testsuite/gas/aarch64/sysreg/sysregs_with_restrictions.s b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_restrictions.s
index 7f95777..3ad53e9 100644
--- a/gas/testsuite/gas/aarch64/sysreg/sysregs_with_restrictions.s
+++ b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_restrictions.s
@@ -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
diff --git a/opcodes/aarch64-sys-regs.def b/opcodes/aarch64-sys-regs.def
index 47713e6..51aab23 100644
--- a/opcodes/aarch64-sys-regs.def
+++ b/opcodes/aarch64-sys-regs.def
@@ -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)
@@ -46,220 +46,220 @@
   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)
@@ -267,50 +267,50 @@
   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)
@@ -389,11 +389,11 @@
   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))
@@ -404,18 +404,18 @@
   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 */
@@ -435,27 +435,27 @@
   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)
@@ -481,7 +481,7 @@
   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)
@@ -537,8 +537,8 @@
   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)
@@ -557,7 +557,7 @@
   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))
@@ -566,54 +566,54 @@
   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))
@@ -629,34 +629,34 @@
   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)
@@ -688,37 +688,37 @@
   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)
@@ -750,19 +750,19 @@
   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))
@@ -770,19 +770,19 @@
   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))
@@ -863,17 +863,17 @@
   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 */
@@ -882,12 +882,12 @@
   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))
@@ -899,95 +899,95 @@
   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)
@@ -999,12 +999,12 @@
   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 */
@@ -1024,17 +1024,17 @@
   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)
@@ -1254,33 +1254,33 @@
   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))