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
#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

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 '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'
.*: Error: selected processor does not support system register name 'pmiar_el1'

View File

@@ -1,5 +1,5 @@
#source: armv8_9-a-sysregs.s
#as: -menable-sysreg-checking -march=armv8.9-a -I$srcdir/$subdir
#as: -menable-sysreg-checking -march=armv9.4-a+profile -I$srcdir/$subdir
#objdump: -dr
.*: file format .*

View File

@@ -1,3 +1,3 @@
#source: armv9_5-a-sysregs.s
#as: -menable-sysreg-checking -march=armv9.4-a -I$srcdir/$subdir
#as: -menable-sysreg-checking -march=armv9.3-a -I$srcdir/$subdir
#error_output: armv9_5-a-sysregs-archv9_4-unsupported.l

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 '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'

View File

@@ -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

View File

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

View File

@@ -1,6 +1,4 @@
.*: Assembler messages:
.*:1: Error: selected processor does not support system register name 'id_aa64zfr0_el1'
.*:2: Error: selected processor does not support system register name 'id_aa64zfr0_el1'
.*:4: Error: selected processor does not support system register name 'zcr_el1'
.*:5: Error: selected processor does not support system register name 'zcr_el1'
.*:6: Error: selected processor does not support system register name 'zcr_el1'

View File

@@ -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

View File

@@ -1,10 +1,6 @@
.*: Assembler messages:
.*: Error: selected processor does not support system register name 'mpuir_el1'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'afsr0_el12'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'afsr0_el12'
.*: Info: macro invoked from here
.*: Error: selected processor does not support PSTATE field name 'uao'
.*: Info: macro invoked from here
.*: Error: selected processor does not support system register name 'uao'
@@ -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

View File

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

File diff suppressed because it is too large Load Diff