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.
This commit is contained in:
Alice Carlotti
2025-09-02 15:45:39 +01:00
parent ab1f841c47
commit 2742455bf4
12 changed files with 498 additions and 547 deletions

View File

@@ -1,3 +1,3 @@
#source: armv8_9-a-sysregs.s #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 #error_output: armv8_9-a-sysregs-bad.l

View File

@@ -2,14 +2,6 @@
.*: Error: selected processor does not support system register name 'pmsdsfr_el1' .*: Error: selected processor does not support system register name 'pmsdsfr_el1'
.*: Error: selected processor does not support system register name '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 '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 'hdfgrtr2_el2' .*: Error: selected processor does not support system register name 'hdfgrtr2_el2'
.*: Error: selected processor does not support system register name 'hdfgwtr2_el2' .*: Error: selected processor does not support system register name '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 '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 '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 'mdselr_el1' .*: Error: selected processor does not support system register name 'mdselr_el1'
.*: Error: selected processor does not support system register name 'pmuacr_el1' .*: Error: selected processor does not support system register name '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 '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'
.*: Error: selected processor does not support system register name 'pmiar_el1' .*: Error: selected processor does not support system register name 'pmiar_el1'

View File

@@ -1,5 +1,5 @@
#source: armv8_9-a-sysregs.s #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 #objdump: -dr
.*: file format .* .*: file format .*

View File

@@ -1,3 +1,3 @@
#source: armv9_5-a-sysregs.s #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 #error_output: armv9_5-a-sysregs-archv9_4-unsupported.l

View File

@@ -8,12 +8,6 @@
[^:]*:[0-9]+: Error: selected processor does not support system register name 'cvadp' [^:]*:[0-9]+: Error: selected processor does not support system register name 'cvadp'
[^:]*:[0-9]+: Error: selected processor does not support system register name 'rndr' [^:]*:[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 '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 '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' [^:]*:[0-9]+: Error: selected processor does not support system register name 'tfsre0_el1'

View File

@@ -13,20 +13,19 @@
roreg lorid_el1 roreg lorid_el1
.arch armv8.2-a .arch armv8.1-a
roreg ccsidr2_el1 roreg ccsidr2_el1
.arch armv8.2-a
rwreg rcwmask_el1 rwreg rcwmask_el1
rwreg rcwsmask_el1 rwreg rcwsmask_el1
.arch armv8.3-a
rwreg trfcr_el1 rwreg trfcr_el1
roreg pmmir_el1 roreg pmmir_el1
rwreg trfcr_el2 rwreg trfcr_el2
rwreg trfcr_el12 rwreg trfcr_el12
rwreg amcr_el0 rwreg amcr_el0
roreg amcfgr_el0 roreg amcfgr_el0
roreg amcgcr_el0 roreg amcgcr_el0
@@ -76,7 +75,7 @@
rwreg amevtyper114_el0 rwreg amevtyper114_el0
rwreg amevtyper115_el0 rwreg amevtyper115_el0
.arch armv8.5-a .arch armv8.4-a
roreg amcg1idr_el0 roreg amcg1idr_el0
roreg cntpctss_el0 roreg cntpctss_el0
@@ -121,7 +120,7 @@
rwreg amevcntvoff115_el2 rwreg amevcntvoff115_el2
rwreg cntpoff_el2 rwreg cntpoff_el2
.arch armv8.6-a .arch armv8.5-a+profile
rwreg pmsnevfr_el1 rwreg pmsnevfr_el1
rwreg hcrx_el2 rwreg hcrx_el2

View File

@@ -1,5 +1,5 @@
#name: SME extension (system registers) #name: SME extension (system registers)
#as: -menable-sysreg-checking -march=armv8-a+sme #as: -menable-sysreg-checking -march=armv8.2-a+sme
#objdump: -dr #objdump: -dr
.*: file format .* .*: file format .*

View File

@@ -1,6 +1,4 @@
.*: Assembler messages: .*: 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' .*:4: Error: selected processor does not support system register name 'zcr_el1'
.*:5: 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' .*:6: Error: selected processor does not support system register name 'zcr_el1'

View File

@@ -172,7 +172,7 @@
rw_sys_reg amevcntvoff115_el2 rw_sys_reg amevcntvoff115_el2
rw_sys_reg cntpoff_el2 rw_sys_reg cntpoff_el2
.arch armv8.7-a .arch armv8.7-a+profile
rw_sys_reg pmsnevfr_el1 rw_sys_reg pmsnevfr_el1
rw_sys_reg hcrx_el2 rw_sys_reg hcrx_el2

View File

@@ -1,10 +1,6 @@
.*: Assembler messages: .*: Assembler messages:
.*: Error: selected processor does not support system register name 'mpuir_el1' .*: Error: selected processor does not support system register name 'mpuir_el1'
.*: Info: macro invoked from here .*: 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' .*: Error: selected processor does not support PSTATE field name 'uao'
.*: Info: macro invoked from here .*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'uao' .*: Error: selected processor does not support system register name 'uao'
@@ -21,12 +17,6 @@
.*: Info: macro invoked from here .*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'vsttbr_el2' .*: Error: selected processor does not support system register name 'vsttbr_el2'
.*: Info: macro invoked from here .*: 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' .*: Error: selected processor does not support system register name 'amcg1idr_el0'
.*: Info: macro invoked from here .*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'hcrx_el2' .*: Error: selected processor does not support system register name 'hcrx_el2'
@@ -83,18 +73,10 @@
.*: Info: macro invoked from here .*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 's2por_el1' .*: Error: selected processor does not support system register name 's2por_el1'
.*: Info: macro invoked from here .*: 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' .*: Error: selected processor does not support system register name 'spmaccessr_el1'
.*: Info: macro invoked from here .*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'spmaccessr_el1' .*: Error: selected processor does not support system register name 'spmaccessr_el1'
.*: Info: macro invoked from here .*: 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' .*: Error: selected processor does not support system register name 'amair2_el1'
.*: Info: macro invoked from here .*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'amair2_el1' .*: Error: selected processor does not support system register name 'amair2_el1'
@@ -125,8 +107,6 @@
.*: Info: macro invoked from here .*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'fpmr' .*: Error: selected processor does not support system register name 'fpmr'
.*: Info: macro invoked from here .*: 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' .*: Error: selected processor does not support system register name 'lorc_el1'
.*: Info: macro invoked from here .*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'lorc_el1' .*: Error: selected processor does not support system register name 'lorc_el1'
@@ -137,8 +117,6 @@
.*: Info: macro invoked from here .*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'gcspr_el0' .*: Error: selected processor does not support system register name 'gcspr_el0'
.*: Info: macro invoked from here .*: 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' .*: Error: selected processor does not support system register name 'trcitecr_el1'
.*: Info: macro invoked from here .*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'trcitecr_el1' .*: Error: selected processor does not support system register name 'trcitecr_el1'
@@ -165,7 +143,3 @@
.*: Info: macro invoked from here .*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'rcwmask_el1' .*: Error: selected processor does not support system register name 'rcwmask_el1'
.*: Info: macro invoked from here .*: 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

View File

@@ -29,7 +29,7 @@
.arch armv8.8-a .arch armv8.8-a
rw_sys_reg allint // V8_8A rw_sys_reg allint // V8_8A
.arch armv8.9-a .arch armv8.9-a+profile
rw_sys_reg pfar_el1 // PFAR rw_sys_reg pfar_el1 // PFAR
rw_sys_reg pir_el1 // S1PIE rw_sys_reg pir_el1 // S1PIE
rw_sys_reg pmecr_el1 // SEBEP rw_sys_reg pmecr_el1 // SEBEP

File diff suppressed because it is too large Load Diff