diff options
author | Alice Carlotti <alice.carlotti@arm.com> | 2025-07-09 22:59:11 +0100 |
---|---|---|
committer | Alice Carlotti <alice.carlotti@arm.com> | 2025-07-12 10:04:27 +0100 |
commit | 7c684dc6a1f8afc95f150bc821a2c1451b18852f (patch) | |
tree | 28b8c8abd76c8ec0619349aa64b905598145e3e5 | |
parent | 5bf6d4cd7eb01c54e5ffccc2374aa2a671934c75 (diff) | |
download | binutils-7c684dc6a1f8afc95f150bc821a2c1451b18852f.zip binutils-7c684dc6a1f8afc95f150bc821a2c1451b18852f.tar.gz binutils-7c684dc6a1f8afc95f150bc821a2c1451b18852f.tar.bz2 |
aarch64: Disable sysreg guards by default
Add a new flag -menable-sysreg-checking to restore previous behaviour.
This existing behaviour is quite inconsistent, so the gating will
probably be updated in the future. (In particular, many system
registers are currently gated with the architecture version they were
released with instead of the lower architecture version that they
actually require).
This patch retains the +d128 requirement for msrr/mrrs.
Co-Authored-By: Srinath Parvathaneni <srinath.parvathaneni@arm.com>
69 files changed, 594 insertions, 62 deletions
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 51874da..20b3f61 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -4956,6 +4956,10 @@ parse_sme_sm_za (char **str) return TOLOWER (p[0]); } +/* By default, system register accesses are unguarded (apart from the + requirement of +d128 for mrrs/msrr). */ +static int sysreg_checking_p = 0; + /* Parse a system register or a PSTATE field name for an MSR/MRS instruction. Returns the encoding for the option, or PARSE_FAIL. @@ -5010,10 +5014,11 @@ parse_sys_reg (char **str, htab_t sys_regs, } else { - if (pstatefield_p && !aarch64_pstatefield_supported_p (cpu_variant, o)) + if (pstatefield_p && sysreg_checking_p + && !aarch64_pstatefield_supported_p (cpu_variant, o)) as_bad (_("selected processor does not support PSTATE field " "name '%s'"), buf); - if (!pstatefield_p + if (!pstatefield_p && sysreg_checking_p && !aarch64_sys_ins_reg_supported_p (cpu_variant, o->name, o->flags, &o->features)) as_bad (_("selected processor does not support system register " @@ -10603,6 +10608,9 @@ static struct aarch64_option_table aarch64_opts[] = { NULL}, {"mno-verbose-error", N_("do not output verbose error messages"), &verbose_error_p, 0, NULL}, + {"menable-sysreg-checking", + N_("enable feature flag gating for system registers"), + &sysreg_checking_p, 1, NULL}, {NULL, NULL, NULL, 0, NULL} }; diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi index d300ab2..edd9e9c 100644 --- a/gas/doc/c-aarch64.texi +++ b/gas/doc/c-aarch64.texi @@ -136,6 +136,12 @@ is enabled by default. @item -mno-verbose-error This option disables verbose error messages in AArch64 gas. +@cindex @code{-menable-sysreg-checking} command-line option, AArch64 +@item -menable-sysreg-checking +This option enables error messages that are issued if an attempt is made to +assemble a system register access which will not execute on the target +architecture. + @end table @c man end diff --git a/gas/testsuite/gas/aarch64/armv8-ras-1.d b/gas/testsuite/gas/aarch64/armv8-ras-1.d index b10495f..21596c0 100644 --- a/gas/testsuite/gas/aarch64/armv8-ras-1.d +++ b/gas/testsuite/gas/aarch64/armv8-ras-1.d @@ -1,4 +1,4 @@ -#as: -march=armv8-a+ras +#as: -menable-sysreg-checking -march=armv8-a+ras #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.d b/gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.d index 2c00b65..a429d2d 100644 --- a/gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.d +++ b/gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.d @@ -1,3 +1,3 @@ -#as: -march=armv8.4-a+crypto+sm4+sha3 +#as: -menable-sysreg-checking -march=armv8.4-a+crypto+sm4+sha3 #source: armv8_4-a-registers-illegal.s #error_output: armv8_4-a-registers-illegal.l diff --git a/gas/testsuite/gas/aarch64/armv8_4-a-registers.d b/gas/testsuite/gas/aarch64/armv8_4-a-registers.d index f643c89..f8768c3 100644 --- a/gas/testsuite/gas/aarch64/armv8_4-a-registers.d +++ b/gas/testsuite/gas/aarch64/armv8_4-a-registers.d @@ -1,4 +1,4 @@ -#as: -march=armv8.4-a +#as: -menable-sysreg-checking -march=armv8.4-a #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/gpc3.d b/gas/testsuite/gas/aarch64/gpc3.d index 2535aef..749a0ae 100644 --- a/gas/testsuite/gas/aarch64/gpc3.d +++ b/gas/testsuite/gas/aarch64/gpc3.d @@ -1,5 +1,5 @@ #name: RME_GPC3 System register -#as: -march=armv9.5-a +#as: -menable-sysreg-checking -march=armv9.5-a #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/illegal-ite1-1.d b/gas/testsuite/gas/aarch64/illegal-ite1-1.d index 99ef4d4..d655d2d 100644 --- a/gas/testsuite/gas/aarch64/illegal-ite1-1.d +++ b/gas/testsuite/gas/aarch64/illegal-ite1-1.d @@ -1,3 +1,3 @@ -#as: -march=armv8-a +#as: -menable-sysreg-checking -march=armv8-a #source: ite1.s -#error_output: illegal-ite1-1.l
\ No newline at end of file +#error_output: illegal-ite1-1.l diff --git a/gas/testsuite/gas/aarch64/illegal-predres2-1.d b/gas/testsuite/gas/aarch64/illegal-predres2-1.d index f858afd..ff73ac8 100644 --- a/gas/testsuite/gas/aarch64/illegal-predres2-1.d +++ b/gas/testsuite/gas/aarch64/illegal-predres2-1.d @@ -1,3 +1,3 @@ -#as: -march=armv8-a +#as: -menable-sysreg-checking -march=armv8-a #source: predres2.s -#error_output: illegal-predres2-1.l
\ No newline at end of file +#error_output: illegal-predres2-1.l diff --git a/gas/testsuite/gas/aarch64/illegal.d b/gas/testsuite/gas/aarch64/illegal.d index 33bbb0c..7367f9b 100644 --- a/gas/testsuite/gas/aarch64/illegal.d +++ b/gas/testsuite/gas/aarch64/illegal.d @@ -1,4 +1,4 @@ #name: Illegal Instructions -#as: -mno-verbose-error +#as: -menable-sysreg-checking -mno-verbose-error #source: illegal.s #error_output: illegal.l diff --git a/gas/testsuite/gas/aarch64/ite1.d b/gas/testsuite/gas/aarch64/ite1.d index 10ccbda..a0d2b62 100644 --- a/gas/testsuite/gas/aarch64/ite1.d +++ b/gas/testsuite/gas/aarch64/ite1.d @@ -1,4 +1,4 @@ -#as: -march=armv9.4-a+ite +#as: -menable-sysreg-checking -march=armv9.4-a+ite #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/mec-arch-bad.d b/gas/testsuite/gas/aarch64/mec-arch-bad.d index d2e6416..8538b7d 100644 --- a/gas/testsuite/gas/aarch64/mec-arch-bad.d +++ b/gas/testsuite/gas/aarch64/mec-arch-bad.d @@ -1,4 +1,4 @@ #name: MEC unavailable for architecture below armv9.2-a -#as: -march=armv9.1-a +#as: -menable-sysreg-checking -march=armv9.1-a #source: mec.s #error_output: mec-arch-bad.l diff --git a/gas/testsuite/gas/aarch64/mec.d b/gas/testsuite/gas/aarch64/mec.d index 070f831..7a16791 100644 --- a/gas/testsuite/gas/aarch64/mec.d +++ b/gas/testsuite/gas/aarch64/mec.d @@ -1,5 +1,5 @@ #name: MEC System registers -#as: -march=armv9.2-a +#as: -menable-sysreg-checking -march=armv9.2-a #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/msr.d b/gas/testsuite/gas/aarch64/msr.d index fedf2ee..815c778 100644 --- a/gas/testsuite/gas/aarch64/msr.d +++ b/gas/testsuite/gas/aarch64/msr.d @@ -1,4 +1,4 @@ -#as: -march=armv8.2-a+profile +#as: -menable-sysreg-checking -march=armv8.2-a+profile #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/pan-directive.d b/gas/testsuite/gas/aarch64/pan-directive.d index b7e4378..51fac24 100644 --- a/gas/testsuite/gas/aarch64/pan-directive.d +++ b/gas/testsuite/gas/aarch64/pan-directive.d @@ -1,5 +1,5 @@ #objdump: -dr -#as: --defsym DIRECTIVE=1 +#as: -menable-sysreg-checking --defsym DIRECTIVE=1 #source: pan.s .*: file format .* diff --git a/gas/testsuite/gas/aarch64/pan.d b/gas/testsuite/gas/aarch64/pan.d index 46c3631..e79602b 100644 --- a/gas/testsuite/gas/aarch64/pan.d +++ b/gas/testsuite/gas/aarch64/pan.d @@ -1,5 +1,5 @@ #objdump: -dr -#as: -march=armv8-a+pan +#as: -menable-sysreg-checking -march=armv8-a+pan .*: file format .* diff --git a/gas/testsuite/gas/aarch64/sme-8.d b/gas/testsuite/gas/aarch64/sme-8.d index c956baa..e550d0a 100644 --- a/gas/testsuite/gas/aarch64/sme-8.d +++ b/gas/testsuite/gas/aarch64/sme-8.d @@ -1,5 +1,5 @@ #name: SME mode selection and state access instructions -#as: -march=armv8-a+sme +#as: -menable-sysreg-checking -march=armv8-a+sme #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/ssbs-illegal2.d b/gas/testsuite/gas/aarch64/ssbs-illegal2.d index d35757c..aeef026 100644 --- a/gas/testsuite/gas/aarch64/ssbs-illegal2.d +++ b/gas/testsuite/gas/aarch64/ssbs-illegal2.d @@ -1,3 +1,3 @@ -#as: -march=armv8-a --defsym ERROR2=1 +#as: -menable-sysreg-checking -march=armv8-a --defsym ERROR2=1 #source: ssbs.s #error_output: ssbs-illegal2.l diff --git a/gas/testsuite/gas/aarch64/ssbs1.d b/gas/testsuite/gas/aarch64/ssbs1.d index daeda76..6dfa178 100644 --- a/gas/testsuite/gas/aarch64/ssbs1.d +++ b/gas/testsuite/gas/aarch64/ssbs1.d @@ -1,6 +1,6 @@ #source: ssbs.s #objdump: -dr -#as: -march=armv8-a+ssbs --defsym SUCCESS=1 +#as: -menable-sysreg-checking -march=armv8-a+ssbs --defsym SUCCESS=1 .*: file format .* diff --git a/gas/testsuite/gas/aarch64/ssbs2.d b/gas/testsuite/gas/aarch64/ssbs2.d index 0027026..68eef6b 100644 --- a/gas/testsuite/gas/aarch64/ssbs2.d +++ b/gas/testsuite/gas/aarch64/ssbs2.d @@ -1,6 +1,6 @@ #source: ssbs.s #objdump: -dr -#as: -march=armv8.5-a --defsym SUCCESS=1 +#as: -menable-sysreg-checking -march=armv8.5-a --defsym SUCCESS=1 .*: file format .* diff --git a/gas/testsuite/gas/aarch64/sysreg/armv8_8-a-sysregs.d b/gas/testsuite/gas/aarch64/sysreg/armv8_8-a-sysregs.d index 294fed2..8b66bcf 100644 --- a/gas/testsuite/gas/aarch64/sysreg/armv8_8-a-sysregs.d +++ b/gas/testsuite/gas/aarch64/sysreg/armv8_8-a-sysregs.d @@ -1,4 +1,4 @@ -#as: -march=armv8.8-a +#as: -menable-sysreg-checking -march=armv8.8-a #objdump: -dr .*: file format .* 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 a2cb5fe..862d474 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: -march=armv8.8-a -I$srcdir/$subdir --no-info +#as: -menable-sysreg-checking -march=armv8.8-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.d b/gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d index ca675c4..91e77bc 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: -march=armv8.9-a -I$srcdir/$subdir +#as: -menable-sysreg-checking -march=armv8.9-a -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 8ad01bc..61054ae 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: -march=armv9.4-a -I$srcdir/$subdir +#as: -menable-sysreg-checking -march=armv9.4-a -I$srcdir/$subdir #error_output: armv9_5-a-sysregs-archv9_4-unsupported.l diff --git a/gas/testsuite/gas/aarch64/sysreg/armv9_5-a-sysregs.d b/gas/testsuite/gas/aarch64/sysreg/armv9_5-a-sysregs.d index c52142d..55a534e 100644 --- a/gas/testsuite/gas/aarch64/sysreg/armv9_5-a-sysregs.d +++ b/gas/testsuite/gas/aarch64/sysreg/armv9_5-a-sysregs.d @@ -1,5 +1,5 @@ #source: armv9_5-a-sysregs.s -#as: -march=armv9.5-a -I$srcdir/$subdir +#as: -menable-sysreg-checking -march=armv9.5-a -I$srcdir/$subdir #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/sysreg/fp8-feature-enables-fpmr.d b/gas/testsuite/gas/aarch64/sysreg/fp8-feature-enables-fpmr.d index edef376..b6a4706 100644 --- a/gas/testsuite/gas/aarch64/sysreg/fp8-feature-enables-fpmr.d +++ b/gas/testsuite/gas/aarch64/sysreg/fp8-feature-enables-fpmr.d @@ -1,6 +1,6 @@ #name: Test that fpmr register is gated and available via the fp8 feature #source: fpmr.s -#as: -march=armv9.2-a+fp8 +#as: -menable-sysreg-checking -march=armv9.2-a+fp8 #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/sysreg/fpmr-unsupported-by-default.d b/gas/testsuite/gas/aarch64/sysreg/fpmr-unsupported-by-default.d index c0b30c2..5f116e6 100644 --- a/gas/testsuite/gas/aarch64/sysreg/fpmr-unsupported-by-default.d +++ b/gas/testsuite/gas/aarch64/sysreg/fpmr-unsupported-by-default.d @@ -1,4 +1,4 @@ #name: Test that fpmr register is not supported by default #source: fpmr.s -#as: -march=armv9.2-a +#as: -menable-sysreg-checking -march=armv9.2-a #error_output: fpmr-unsupported-by-default.l diff --git a/gas/testsuite/gas/aarch64/sysreg/gcs-sysregs-bad.d b/gas/testsuite/gas/aarch64/sysreg/gcs-sysregs-bad.d index 439c1bd..3201a84 100644 --- a/gas/testsuite/gas/aarch64/sysreg/gcs-sysregs-bad.d +++ b/gas/testsuite/gas/aarch64/sysreg/gcs-sysregs-bad.d @@ -1,3 +1,3 @@ -#as: -march=armv8-a +#as: -menable-sysreg-checking -march=armv8-a #source: gcs-sysregs.s #error_output: gcs-sysregs-bad.l diff --git a/gas/testsuite/gas/aarch64/sysreg/gcs-sysregs.d b/gas/testsuite/gas/aarch64/sysreg/gcs-sysregs.d index f75c270..9d8082d 100644 --- a/gas/testsuite/gas/aarch64/sysreg/gcs-sysregs.d +++ b/gas/testsuite/gas/aarch64/sysreg/gcs-sysregs.d @@ -1,5 +1,5 @@ #name: Test of Guarded Control Stack system registers -#as: -march=armv8.8-a+gcs +#as: -menable-sysreg-checking -march=armv8.8-a+gcs #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-3.d b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-3.d index 1c5c9d9..b07919d 100644 --- a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-3.d +++ b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-3.d @@ -1,3 +1,3 @@ #source: sysreg-3.s -#as: -march=armv8-a -I$srcdir/$subdir --no-info +#as: -menable-sysreg-checking -march=armv8-a -I$srcdir/$subdir --no-info #error_output: illegal-sysreg-3.l diff --git a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4.d b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4.d index 34dd4e4..5a11d2e 100644 --- a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4.d +++ b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4.d @@ -1,3 +1,3 @@ #source: sysreg-4.s -#as: -march=armv8-a +#as: -menable-sysreg-checking -march=armv8-a #error_output: illegal-sysreg-4.l diff --git a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4b.d b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4b.d index 1504f5f..d32c1a2 100644 --- a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4b.d +++ b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4b.d @@ -1,2 +1,2 @@ -#as: -march=armv8-a +#as: -menable-sysreg-checking -march=armv8-a #error_output: illegal-sysreg-4b.l diff --git a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-5.d b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-5.d index d108d0f..4815663 100644 --- a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-5.d +++ b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-5.d @@ -1,3 +1,3 @@ -#as: -march=armv8.3-a +#as: -menable-sysreg-checking -march=armv8.3-a #source: sysreg-5.s #error_output: illegal-sysreg-5.l diff --git a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-7.d b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-7.d index 98bc9a0..72311a7 100644 --- a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-7.d +++ b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-7.d @@ -1,2 +1,3 @@ +#as: -menable-sysreg-checking #source: illegal-sysreg-7.s #error_output: illegal-sysreg-7.l diff --git a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8.d b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8.d index 1e91d49..5b88d3e 100644 --- a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8.d +++ b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8.d @@ -1,2 +1,2 @@ -#as: --no-info +#as: -menable-sysreg-checking --no-info #error_output: illegal-sysreg-8.l diff --git a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8b.d b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8b.d index aed5b17..9d3f32b 100644 --- a/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8b.d +++ b/gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8b.d @@ -1,2 +1,2 @@ -#as: --no-info +#as: -menable-sysreg-checking --no-info #warning_output: illegal-sysreg-8b.l diff --git a/gas/testsuite/gas/aarch64/sysreg/mpam-bad.d b/gas/testsuite/gas/aarch64/sysreg/mpam-bad.d index c3ec372..7d9938e 100644 --- a/gas/testsuite/gas/aarch64/sysreg/mpam-bad.d +++ b/gas/testsuite/gas/aarch64/sysreg/mpam-bad.d @@ -1,3 +1,3 @@ -#as: -march=armv9.3-a +#as: -march=armv9.3-a -menable-sysreg-checking #source: mpam-bad.s #error_output: mpam-bad.l diff --git a/gas/testsuite/gas/aarch64/sysreg/pops-sysregs-bad.d b/gas/testsuite/gas/aarch64/sysreg/pops-sysregs-bad.d index 61a6b21..58d05bf 100644 --- a/gas/testsuite/gas/aarch64/sysreg/pops-sysregs-bad.d +++ b/gas/testsuite/gas/aarch64/sysreg/pops-sysregs-bad.d @@ -1,3 +1,3 @@ #source: pops-sysregs-bad.s -#as: -I$srcdir/$subdir +#as: -menable-sysreg-checking -I$srcdir/$subdir #error_output: pops-sysregs-bad.l diff --git a/gas/testsuite/gas/aarch64/sysreg/pops-sysregs.d b/gas/testsuite/gas/aarch64/sysreg/pops-sysregs.d index db04ab8..83729b4 100644 --- a/gas/testsuite/gas/aarch64/sysreg/pops-sysregs.d +++ b/gas/testsuite/gas/aarch64/sysreg/pops-sysregs.d @@ -1,5 +1,5 @@ #source: pops-sysregs.s -#as: -I$srcdir/$subdir +#as: -menable-sysreg-checking -I$srcdir/$subdir #objdump: -dr [^:]+: file format .* diff --git a/gas/testsuite/gas/aarch64/sysreg/sme-sysreg-illegal.d b/gas/testsuite/gas/aarch64/sysreg/sme-sysreg-illegal.d index ff0e855..6eae656 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sme-sysreg-illegal.d +++ b/gas/testsuite/gas/aarch64/sysreg/sme-sysreg-illegal.d @@ -1,3 +1,3 @@ -#as: -march=armv8-a+sme +#as: -menable-sysreg-checking -march=armv8-a+sme #source: sme-sysreg-illegal.s #warning_output: sme-sysreg-illegal.l diff --git a/gas/testsuite/gas/aarch64/sysreg/sme-sysreg.d b/gas/testsuite/gas/aarch64/sysreg/sme-sysreg.d index 8eaf73c..f51c56e 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: -march=armv8-a+sme +#as: -menable-sysreg-checking -march=armv8-a+sme #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/sysreg/sve-sysreg-invalid.d b/gas/testsuite/gas/aarch64/sysreg/sve-sysreg-invalid.d index bfe2d27..03a72b7 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sve-sysreg-invalid.d +++ b/gas/testsuite/gas/aarch64/sysreg/sve-sysreg-invalid.d @@ -1,3 +1,3 @@ -#as: -march=armv8-a+nosve +#as: -menable-sysreg-checking -march=armv8-a+nosve #source: sve-sysreg.s #error_output: sve-sysreg-invalid.l diff --git a/gas/testsuite/gas/aarch64/sysreg/sve-sysreg.d b/gas/testsuite/gas/aarch64/sysreg/sve-sysreg.d index 22d9e5ac..2b3a24b 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sve-sysreg.d +++ b/gas/testsuite/gas/aarch64/sysreg/sve-sysreg.d @@ -1,4 +1,4 @@ -#as: -march=armv8-a+sve +#as: -menable-sysreg-checking -march=armv8-a+sve #objdump: -dr diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-1.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-1.d index cecb1ad..d770133 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sysreg-1.d +++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-1.d @@ -1,5 +1,5 @@ #source: sysreg-1.s -#as: -I$srcdir/$subdir +#as: -menable-sysreg-checking -I$srcdir/$subdir #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-10-bad.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-10-bad.d index 628de52..b47e92c 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sysreg-10-bad.d +++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-10-bad.d @@ -1,3 +1,3 @@ #source: sysreg-10.s -#as: -march=armv8.7-a -I$srcdir/$subdir +#as: -menable-sysreg-checking -march=armv8.7-a -I$srcdir/$subdir #error_output: sysreg-10-bad.l diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-10.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-10.d index f07df91..55ab50e 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sysreg-10.d +++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-10.d @@ -1,5 +1,5 @@ #source: sysreg-10.s -#as: -march=armv8.8-a -I$srcdir/$subdir +#as: -menable-sysreg-checking -march=armv8.8-a -I$srcdir/$subdir #objdump: -dr [^:]+: file format .* diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-2.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-2.d index 1845902..140d462 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sysreg-2.d +++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-2.d @@ -1,5 +1,5 @@ #source: sysreg-2.s -#as: -march=armv8.2-a+profile -I$srcdir/$subdir +#as: -menable-sysreg-checking -march=armv8.2-a+profile -I$srcdir/$subdir #objdump: -dr .*: file .* diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-3.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-3.d index 0135762..7f2ece1 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sysreg-3.d +++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-3.d @@ -1,5 +1,5 @@ #source: sysreg-3.s -#as: -march=armv8.3-a -I$srcdir/$subdir +#as: -menable-sysreg-checking -march=armv8.3-a -I$srcdir/$subdir #objdump: -dr .*: file .* diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-4.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-4.d index f0fffbe..dd832c2 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sysreg-4.d +++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-4.d @@ -1,5 +1,5 @@ #source: sysreg-4.s -#as: -march=armv8.5-a+rng+memtag +#as: -menable-sysreg-checking -march=armv8.5-a+rng+memtag #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-6.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-6.d index cb9c46e..ef8560f 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sysreg-6.d +++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-6.d @@ -1,5 +1,5 @@ #source: sysreg-6.s -#as: -I$srcdir/$subdir +#as: -menable-sysreg-checking -I$srcdir/$subdir #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-7.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-7.d index 846ab8b..df65924 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sysreg-7.d +++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-7.d @@ -1,5 +1,5 @@ #source: sysreg-7.s -#as: -I$srcdir/$subdir +#as: -menable-sysreg-checking -I$srcdir/$subdir #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d index 4ee851f..8a1b07f 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d +++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-8.d @@ -1,5 +1,5 @@ #source: sysreg-8.s -#as: -I$srcdir/$subdir +#as: -menable-sysreg-checking -I$srcdir/$subdir #objdump: -dr .* diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-9-bad.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-9-bad.d index a1ebac6..72d188e 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sysreg-9-bad.d +++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-9-bad.d @@ -1,3 +1,3 @@ #source: sysreg-9-bad.s -#as: -I$srcdir/$subdir +#as: -menable-sysreg-checking -I$srcdir/$subdir #error_output: sysreg-9-bad.l diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-9.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-9.d index 61b63ce..a7fa07e 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sysreg-9.d +++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-9.d @@ -1,5 +1,5 @@ #source: sysreg-9.s -#as: -I$srcdir/$subdir +#as: -menable-sysreg-checking -I$srcdir/$subdir #objdump: -dr diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg-diagnostic.d b/gas/testsuite/gas/aarch64/sysreg/sysreg-diagnostic.d index 55cdf09..35267f5 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sysreg-diagnostic.d +++ b/gas/testsuite/gas/aarch64/sysreg/sysreg-diagnostic.d @@ -1,5 +1,5 @@ #objdump: -dr -M notes -#as: -march=armv8-a +#as: -menable-sysreg-checking -march=armv8-a #warning_output: sysreg-diagnostic.l .*: file format .* diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg.d b/gas/testsuite/gas/aarch64/sysreg/sysreg.d index 9aba548..d17c77f 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sysreg.d +++ b/gas/testsuite/gas/aarch64/sysreg/sysreg.d @@ -1,5 +1,5 @@ #source: sysreg.s -#as: -I$srcdir/$subdir +#as: -menable-sysreg-checking -I$srcdir/$subdir #objdump: -dr .*: file format .* diff --git a/gas/testsuite/gas/aarch64/sysreg/sysreg128.d b/gas/testsuite/gas/aarch64/sysreg/sysreg128.d index 22df5e2..ffd7517 100644 --- a/gas/testsuite/gas/aarch64/sysreg/sysreg128.d +++ b/gas/testsuite/gas/aarch64/sysreg/sysreg128.d @@ -1,5 +1,5 @@ #source: sysreg128.s -#as: -I$srcdir/$subdir +#as: -menable-sysreg-checking -I$srcdir/$subdir #objdump: -dr .* diff --git a/gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions-bad.d b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions-bad.d new file mode 100644 index 0000000..95ddd32 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions-bad.d @@ -0,0 +1,3 @@ +#source: sysregs_with_no_restrictions.s +#as: -menable-sysreg-checking -I$srcdir/$subdir +#error_output: sysregs_with_no_restrictions-bad.l 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 new file mode 100644 index 0000000..f70dba9 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions-bad.l @@ -0,0 +1,173 @@ +.*: Assembler messages: +.*: Error: selected processor does not support system register name 'mpuir_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'afsr0_el12' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'afsr0_el12' +.*: Info: macro invoked from here +.*: Error: selected processor does not support PSTATE field name 'uao' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'uao' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'uao' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'apdakeyhi_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'apdakeyhi_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'amcfgr_el0' +.*: 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 'vsttbr_el2' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'scxtnum_el0' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'scxtnum_el0' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'id_pfr2_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'amcg1idr_el0' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'hcrx_el2' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'hcrx_el2' +.*: Info: macro invoked from here +.*: Error: selected processor does not support PSTATE field name 'allint' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'allint' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'allint' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pfar_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pfar_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pir_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pir_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pmecr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pmecr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'hdfgrtr2_el2' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'hdfgrtr2_el2' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'mdselr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'mdselr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pmicfiltr_el0' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pmicfiltr_el0' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pmsdsfr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pmsdsfr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pmuacr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pmuacr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'por_el0' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'por_el0' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 's2pir_el2' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 's2pir_el2' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 's2por_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 's2por_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'sctlr2_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'sctlr2_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'spmaccessr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'spmaccessr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'tcr2_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'tcr2_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'amair2_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'amair2_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pmccntsvr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'vdisr_el3' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'vdisr_el3' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'spmzr_el0' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'spmzr_el0' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'mdstepop_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'mdstepop_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'gpcbw_el3' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'gpcbw_el3' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pmbmar_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pmbmar_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'erxgsr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'fpmr' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'fpmr' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'id_aa64zfr0_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'lorc_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'lorc_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pmbidr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'gcspr_el0' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'gcspr_el0' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'id_aa64smfr0_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'trcitecr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'trcitecr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'gcr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'gcr_el1' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'rndr' +.*: Info: macro invoked from here +.*: Error: selected processor does not support PSTATE field name 'pan' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pan' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'pan' +.*: Info: macro invoked from here +.*: Error: selected processor does not support PSTATE field name 'ssbs' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'ssbs' +.*: Info: macro invoked from here +.*: Error: selected processor does not support system register name 'ssbs' +.*: 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 '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_no_restrictions.d b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions.d new file mode 100644 index 0000000..f311c23 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions.d @@ -0,0 +1,95 @@ +#as: -I$srcdir/$subdir +#objdump: -dr + +[^:]+: file format .* + + +[^:]+: + +[^:]+: +.*: d5380080 mrs x0, mpuir_el1 +.*: d51d5100 msr afsr0_el12, x0 +.*: d53d5100 mrs x0, afsr0_el12 +.*: d5184280 msr uao, x0 +.*: d5384280 mrs x0, uao +.*: d5182220 msr apdakeyhi_el1, x0 +.*: d5382220 mrs x0, apdakeyhi_el1 +.*: d53bd220 mrs x0, amcfgr_el0 +.*: d51c2600 msr vsttbr_el2, x0 +.*: d53c2600 mrs x0, vsttbr_el2 +.*: d51bd0e0 msr scxtnum_el0, x0 +.*: d53bd0e0 mrs x0, scxtnum_el0 +.*: d5380380 mrs x0, id_pfr2_el1 +.*: d53bd2c0 mrs x0, amcg1idr_el0 +.*: d51c1240 msr hcrx_el2, x0 +.*: d53c1240 mrs x0, hcrx_el2 +.*: d5184300 msr allint, x0 +.*: d5384300 mrs x0, allint +.*: d51860a0 msr pfar_el1, x0 +.*: d53860a0 mrs x0, pfar_el1 +.*: d518a260 msr pir_el1, x0 +.*: d538a260 mrs x0, pir_el1 +.*: d5189ea0 msr pmecr_el1, x0 +.*: d5389ea0 mrs x0, pmecr_el1 +.*: d51c3100 msr hdfgrtr2_el2, x0 +.*: d53c3100 mrs x0, hdfgrtr2_el2 +.*: d5100440 msr mdselr_el1, x0 +.*: d5300440 mrs x0, mdselr_el1 +.*: d51b9600 msr pmicfiltr_el0, x0 +.*: d53b9600 mrs x0, pmicfiltr_el0 +.*: d5189a80 msr pmsdsfr_el1, x0 +.*: d5389a80 mrs x0, pmsdsfr_el1 +.*: d5189e80 msr pmuacr_el1, x0 +.*: d5389e80 mrs x0, pmuacr_el1 +.*: d51ba280 msr por_el0, x0 +.*: d53ba280 mrs x0, por_el0 +.*: d51ca2a0 msr s2pir_el2, x0 +.*: d53ca2a0 mrs x0, s2pir_el2 +.*: d518a2a0 msr s2por_el1, x0 +.*: d538a2a0 mrs x0, s2por_el1 +.*: d5181060 msr sctlr2_el1, x0 +.*: d5381060 mrs x0, sctlr2_el1 +.*: d5109d60 msr spmaccessr_el1, x0 +.*: d5309d60 mrs x0, spmaccessr_el1 +.*: d5182060 msr tcr2_el1, x0 +.*: d5382060 mrs x0, tcr2_el1 +.*: d518a320 msr amair2_el1, x0 +.*: d538a320 mrs x0, amair2_el1 +.*: d530ebe0 mrs x0, pmccntsvr_el1 +.*: d51ec120 msr vdisr_el3, x0 +.*: d53ec120 mrs x0, vdisr_el3 +.*: d5139c80 msr spmzr_el0, x0 +.*: d5339c80 mrs x0, spmzr_el0 +.*: d5100540 msr mdstepop_el1, x0 +.*: d5300540 mrs x0, mdstepop_el1 +.*: d51e21a0 msr gpcbw_el3, x0 +.*: d53e21a0 mrs x0, gpcbw_el3 +.*: d5189aa0 msr pmbmar_el1, x0 +.*: d5389aa0 mrs x0, pmbmar_el1 +.*: d5385340 mrs x0, erxgsr_el1 +.*: d51b4440 msr fpmr, x0 +.*: d53b4440 mrs x0, fpmr +.*: d5380480 mrs x0, id_aa64zfr0_el1 +.*: d518a460 msr lorc_el1, x0 +.*: d538a460 mrs x0, lorc_el1 +.*: d5389ae0 mrs x0, pmbidr_el1 +.*: d51b2520 msr gcspr_el0, x0 +.*: d53b2520 mrs x0, gcspr_el0 +.*: d53804a0 mrs x0, id_aa64smfr0_el1 +.*: d5181260 msr trcitecr_el1, x0 +.*: d5381260 mrs x0, trcitecr_el1 +.*: d51810c0 msr gcr_el1, x0 +.*: d53810c0 mrs x0, gcr_el1 +.*: d53b2400 mrs x0, rndr +.*: d518c120 msr disr_el1, x0 +.*: d538c120 mrs x0, disr_el1 +.*: d5184260 msr pan, x0 +.*: d5384260 mrs x0, pan +.*: d51b42c0 msr ssbs, x0 +.*: d53b42c0 mrs x0, ssbs +.*: d558d0c2 msrr rcwmask_el1, x2, x3 +.*: d578d0c2 mrrs x2, x3, rcwmask_el1 +.*: d55c2002 msrr ttbr0_el2, x2, x3 +.*: d57c2002 mrrs x2, x3, ttbr0_el2 +.*: d55c2022 msrr ttbr1_el2, x2, x3 +.*: d57c2022 mrrs x2, x3, ttbr1_el2 diff --git a/gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions.s b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions.s new file mode 100644 index 0000000..f5c1138 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions.s @@ -0,0 +1,56 @@ + .include "sysreg-test-utils.inc" +.text + rw_sys_reg mpuir_el1 w=0 // V8R + rw_sys_reg afsr0_el12 // V8_1A + rw_sys_reg uao // V8_2A + rw_sys_reg apdakeyhi_el1 // V8_3A + rw_sys_reg amcfgr_el0 w=0 // V8_4A + rw_sys_reg vsttbr_el2 // V8A && V8_4A + rw_sys_reg scxtnum_el0 // SCXTNUM + rw_sys_reg id_pfr2_el1 w=0 // ID_PFR2 + rw_sys_reg amcg1idr_el0 w=0 // V8_6A + rw_sys_reg hcrx_el2 // V8_7A + rw_sys_reg allint // V8_8A + + rw_sys_reg pfar_el1 // PFAR + rw_sys_reg pir_el1 // S1PIE + rw_sys_reg pmecr_el1 // SEBEP + rw_sys_reg hdfgrtr2_el2 // FGT2 + rw_sys_reg mdselr_el1 // DEBUGv8p9 + rw_sys_reg pmicfiltr_el0 // PMUv3_ICNTR + rw_sys_reg pmsdsfr_el1 // SPE_FDS + rw_sys_reg pmuacr_el1 // PMUv3p9 + rw_sys_reg por_el0 // S1POE + rw_sys_reg s2pir_el2 // S2PIE + rw_sys_reg s2por_el1 // S2POE + rw_sys_reg sctlr2_el1 // SCTLR2 + rw_sys_reg spmaccessr_el1 // SPMU + rw_sys_reg tcr2_el1 // TCR2 + rw_sys_reg amair2_el1 // AIE + rw_sys_reg pmccntsvr_el1 w=0 // PMUv3_SS + + rw_sys_reg vdisr_el3 // E3DES + rw_sys_reg spmzr_el0 // SPMU2 + rw_sys_reg mdstepop_el1 // STEP2 + rw_sys_reg gpcbw_el3 // V9_5A + + rw_sys_reg pmbmar_el1 // PROFILE && V9_5A + + rw_sys_reg erxgsr_el1 w=0 // RASv2 + rw_sys_reg fpmr // FP8 + rw_sys_reg id_aa64zfr0_el1 w=0 // SVE + rw_sys_reg lorc_el1 // LOR + rw_sys_reg pmbidr_el1 w=0 // PROFILE + rw_sys_reg gcspr_el0 // GCS + rw_sys_reg id_aa64smfr0_el1 w=0 // SME + rw_sys_reg trcitecr_el1 // ITE + rw_sys_reg gcr_el1 // MEMTAG + rw_sys_reg rndr w=0 // RNG + rw_sys_reg disr_el1 // RAS + rw_sys_reg pan // PAN + rw_sys_reg ssbs // SSBS + + .arch_extension d128 // For the msrr and mrrs instructions. + rw_sys_reg_128 rcwmask_el1 xreg1=x2 xreg2=x3 // THE + rw_sys_reg_128 ttbr0_el2 xreg1=x2 xreg2=x3 // V8A + rw_sys_reg_128 ttbr1_el2 xreg1=x2 xreg2=x3 // V8A && V8_1A diff --git a/gas/testsuite/gas/aarch64/sysreg/sysregs_with_restrictions.d b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_restrictions.d new file mode 100644 index 0000000..bca119d --- /dev/null +++ b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_restrictions.d @@ -0,0 +1,95 @@ +#as: -menable-sysreg-checking -I$srcdir/$subdir +#objdump: -dr + +[^:]+: file format .* + + +[^:]+: + +[^:]+: +.*: d5380080 mrs x0, mpuir_el1 +.*: d51d5100 msr afsr0_el12, x0 +.*: d53d5100 mrs x0, afsr0_el12 +.*: d5184280 msr uao, x0 +.*: d5384280 mrs x0, uao +.*: d5182220 msr apdakeyhi_el1, x0 +.*: d5382220 mrs x0, apdakeyhi_el1 +.*: d53bd220 mrs x0, amcfgr_el0 +.*: d51c2600 msr vsttbr_el2, x0 +.*: d53c2600 mrs x0, vsttbr_el2 +.*: d51bd0e0 msr scxtnum_el0, x0 +.*: d53bd0e0 mrs x0, scxtnum_el0 +.*: d5380380 mrs x0, id_pfr2_el1 +.*: d53bd2c0 mrs x0, amcg1idr_el0 +.*: d51c1240 msr hcrx_el2, x0 +.*: d53c1240 mrs x0, hcrx_el2 +.*: d5184300 msr allint, x0 +.*: d5384300 mrs x0, allint +.*: d51860a0 msr pfar_el1, x0 +.*: d53860a0 mrs x0, pfar_el1 +.*: d518a260 msr pir_el1, x0 +.*: d538a260 mrs x0, pir_el1 +.*: d5189ea0 msr pmecr_el1, x0 +.*: d5389ea0 mrs x0, pmecr_el1 +.*: d51c3100 msr hdfgrtr2_el2, x0 +.*: d53c3100 mrs x0, hdfgrtr2_el2 +.*: d5100440 msr mdselr_el1, x0 +.*: d5300440 mrs x0, mdselr_el1 +.*: d51b9600 msr pmicfiltr_el0, x0 +.*: d53b9600 mrs x0, pmicfiltr_el0 +.*: d5189a80 msr pmsdsfr_el1, x0 +.*: d5389a80 mrs x0, pmsdsfr_el1 +.*: d5189e80 msr pmuacr_el1, x0 +.*: d5389e80 mrs x0, pmuacr_el1 +.*: d51ba280 msr por_el0, x0 +.*: d53ba280 mrs x0, por_el0 +.*: d51ca2a0 msr s2pir_el2, x0 +.*: d53ca2a0 mrs x0, s2pir_el2 +.*: d518a2a0 msr s2por_el1, x0 +.*: d538a2a0 mrs x0, s2por_el1 +.*: d5181060 msr sctlr2_el1, x0 +.*: d5381060 mrs x0, sctlr2_el1 +.*: d5109d60 msr spmaccessr_el1, x0 +.*: d5309d60 mrs x0, spmaccessr_el1 +.*: d5182060 msr tcr2_el1, x0 +.*: d5382060 mrs x0, tcr2_el1 +.*: d518a320 msr amair2_el1, x0 +.*: d538a320 mrs x0, amair2_el1 +.*: d530ebe0 mrs x0, pmccntsvr_el1 +.*: d51ec120 msr vdisr_el3, x0 +.*: d53ec120 mrs x0, vdisr_el3 +.*: d5139c80 msr spmzr_el0, x0 +.*: d5339c80 mrs x0, spmzr_el0 +.*: d5100540 msr mdstepop_el1, x0 +.*: d5300540 mrs x0, mdstepop_el1 +.*: d51e21a0 msr gpcbw_el3, x0 +.*: d53e21a0 mrs x0, gpcbw_el3 +.*: d5189aa0 msr pmbmar_el1, x0 +.*: d5389aa0 mrs x0, pmbmar_el1 +.*: d5385340 mrs x0, erxgsr_el1 +.*: d51b4440 msr fpmr, x0 +.*: d53b4440 mrs x0, fpmr +.*: d5380480 mrs x0, id_aa64zfr0_el1 +.*: d518a460 msr lorc_el1, x0 +.*: d538a460 mrs x0, lorc_el1 +.*: d5389ae0 mrs x0, pmbidr_el1 +.*: d51b2520 msr gcspr_el0, x0 +.*: d53b2520 mrs x0, gcspr_el0 +.*: d53804a0 mrs x0, id_aa64smfr0_el1 +.*: d5181260 msr trcitecr_el1, x0 +.*: d5381260 mrs x0, trcitecr_el1 +.*: d51810c0 msr gcr_el1, x0 +.*: d53810c0 mrs x0, gcr_el1 +.*: d53b2400 mrs x0, rndr +.*: d518c120 msr disr_el1, x0 +.*: d538c120 mrs x0, disr_el1 +.*: d5184260 msr pan, x0 +.*: d5384260 mrs x0, pan +.*: d51b42c0 msr ssbs, x0 +.*: d53b42c0 mrs x0, ssbs +.*: d558d0c2 msrr rcwmask_el1, x2, x3 +.*: d578d0c2 mrrs x2, x3, rcwmask_el1 +.*: d55c2002 msrr ttbr0_el2, x2, x3 +.*: d57c2002 mrrs x2, x3, ttbr0_el2 +.*: d55c2022 msrr ttbr1_el2, x2, x3 +.*: d57c2022 mrrs x2, x3, ttbr1_el2 diff --git a/gas/testsuite/gas/aarch64/sysreg/sysregs_with_restrictions.s b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_restrictions.s new file mode 100644 index 0000000..0cdb822 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sysreg/sysregs_with_restrictions.s @@ -0,0 +1,93 @@ + .include "sysreg-test-utils.inc" +.text + .arch armv8-r + rw_sys_reg mpuir_el1 w=0 // V8R + + .arch armv8.1-a + rw_sys_reg afsr0_el12 // V8_1A + + .arch armv8.2-a + rw_sys_reg uao // V8_2A + + .arch armv8.3-a + rw_sys_reg apdakeyhi_el1 // V8_3A + + .arch armv8.4-a + rw_sys_reg amcfgr_el0 w=0 // V8_4A + rw_sys_reg vsttbr_el2 // V8A && V8_4A + + .arch armv8.5-a + rw_sys_reg scxtnum_el0 // SCXTNUM + rw_sys_reg id_pfr2_el1 w=0 // ID_PFR2 + + .arch armv8.6-a + rw_sys_reg amcg1idr_el0 w=0 // V8_6A + + .arch armv8.7-a + rw_sys_reg hcrx_el2 // V8_7A + + .arch armv8.8-a + rw_sys_reg allint // V8_8A + + .arch armv8.9-a + rw_sys_reg pfar_el1 // PFAR + rw_sys_reg pir_el1 // S1PIE + rw_sys_reg pmecr_el1 // SEBEP + rw_sys_reg hdfgrtr2_el2 // FGT2 + rw_sys_reg mdselr_el1 // DEBUGv8p9 + rw_sys_reg pmicfiltr_el0 // PMUv3_ICNTR + rw_sys_reg pmsdsfr_el1 // SPE_FDS + rw_sys_reg pmuacr_el1 // PMUv3p9 + rw_sys_reg por_el0 // S1POE + rw_sys_reg s2pir_el2 // S2PIE + rw_sys_reg s2por_el1 // S2POE + rw_sys_reg sctlr2_el1 // SCTLR2 + rw_sys_reg spmaccessr_el1 // SPMU + rw_sys_reg tcr2_el1 // TCR2 + rw_sys_reg amair2_el1 // AIE + rw_sys_reg pmccntsvr_el1 w=0 // PMUv3_SS + + .arch armv9.5-a + rw_sys_reg vdisr_el3 // E3DES + rw_sys_reg spmzr_el0 // SPMU2 + rw_sys_reg mdstepop_el1 // STEP2 + rw_sys_reg gpcbw_el3 // V9_5A + + .arch armv9.5-a+profile + rw_sys_reg pmbmar_el1 // PROFILE && V9_5A + + .arch_extension rasv2 + rw_sys_reg erxgsr_el1 w=0 // RASv2 + .arch_extension fp8 + rw_sys_reg fpmr // FP8 + .arch_extension sve + rw_sys_reg id_aa64zfr0_el1 w=0 // SVE + .arch_extension lor + rw_sys_reg lorc_el1 // LOR + .arch_extension profile + rw_sys_reg pmbidr_el1 w=0 // PROFILE + .arch_extension gcs + rw_sys_reg gcspr_el0 // GCS + .arch_extension sme + rw_sys_reg id_aa64smfr0_el1 w=0 // SME + .arch_extension ite + rw_sys_reg trcitecr_el1 // ITE + .arch_extension memtag + rw_sys_reg gcr_el1 // MEMTAG + .arch_extension rng + rw_sys_reg rndr w=0 // RNG + .arch_extension ras + rw_sys_reg disr_el1 // RAS + .arch_extension pan + rw_sys_reg pan // PAN + .arch_extension ssbs + rw_sys_reg ssbs // SSBS + + .arch_extension d128 // For the msrr and mrrs instructions. + .arch_extension the + rw_sys_reg_128 rcwmask_el1 xreg1=x2 xreg2=x3 // THE + + .arch armv8-a+d128 + rw_sys_reg_128 ttbr0_el2 xreg1=x2 xreg2=x3 // V8A + .arch armv8.1-a+d128 + rw_sys_reg_128 ttbr1_el2 xreg1=x2 xreg2=x3 // V8A && V8_1A diff --git a/gas/testsuite/gas/aarch64/sysreg/v8-r-bad-sysregs.d b/gas/testsuite/gas/aarch64/sysreg/v8-r-bad-sysregs.d index 6677f3b..a228b59 100644 --- a/gas/testsuite/gas/aarch64/sysreg/v8-r-bad-sysregs.d +++ b/gas/testsuite/gas/aarch64/sysreg/v8-r-bad-sysregs.d @@ -1,3 +1,4 @@ #name: invalid system registers for Armv8-R AArch64 +#as: -menable-sysreg-checking #source: v8-r-bad-sysregs.s #error_output: v8-r-bad-sysregs.l diff --git a/gas/testsuite/gas/aarch64/sysreg/v8-r-sysregs-need-arch.d b/gas/testsuite/gas/aarch64/sysreg/v8-r-sysregs-need-arch.d index af83196..98756de 100644 --- a/gas/testsuite/gas/aarch64/sysreg/v8-r-sysregs-need-arch.d +++ b/gas/testsuite/gas/aarch64/sysreg/v8-r-sysregs-need-arch.d @@ -1,3 +1,4 @@ #name: check that Armv8-R system registers are rejected without -march=armv8-r +#as: -menable-sysreg-checking #source: v8-r-sysregs.s #error_output: v8-r-sysregs-need-arch.l diff --git a/gas/testsuite/gas/aarch64/sysreg/v8-r-sysregs.d b/gas/testsuite/gas/aarch64/sysreg/v8-r-sysregs.d index aa8321e..03e7fab 100644 --- a/gas/testsuite/gas/aarch64/sysreg/v8-r-sysregs.d +++ b/gas/testsuite/gas/aarch64/sysreg/v8-r-sysregs.d @@ -1,5 +1,5 @@ #name: Exhaustive test of Armv8-R system registers -#as: -march=armv8-r +#as: -menable-sysreg-checking -march=armv8-r #objdump: -dr -m aarch64:armv8-r .*: file format .* diff --git a/gas/testsuite/gas/aarch64/uao-directive.d b/gas/testsuite/gas/aarch64/uao-directive.d index 1dbe847..617d73f 100644 --- a/gas/testsuite/gas/aarch64/uao-directive.d +++ b/gas/testsuite/gas/aarch64/uao-directive.d @@ -1,5 +1,5 @@ #objdump: -dr -#as: --defsym DIRECTIVE=1 +#as: -menable-sysreg-checking --defsym DIRECTIVE=1 #source: uao.s .*: file format .* diff --git a/gas/testsuite/gas/aarch64/uao.d b/gas/testsuite/gas/aarch64/uao.d index 2fb67b1..387654c 100644 --- a/gas/testsuite/gas/aarch64/uao.d +++ b/gas/testsuite/gas/aarch64/uao.d @@ -1,5 +1,5 @@ #objdump: -dr -#as: -march=armv8.2-a +#as: -menable-sysreg-checking -march=armv8.2-a .*: file format .* diff --git a/gas/testsuite/gas/aarch64/virthostext-directive.d b/gas/testsuite/gas/aarch64/virthostext-directive.d index 22e8d54..5e23cad 100644 --- a/gas/testsuite/gas/aarch64/virthostext-directive.d +++ b/gas/testsuite/gas/aarch64/virthostext-directive.d @@ -1,5 +1,5 @@ #objdump: -dr -#as: --defsym DIRECTIVE=1 +#as: -menable-sysreg-checking --defsym DIRECTIVE=1 #source: virthostext.s diff --git a/gas/testsuite/gas/aarch64/virthostext.d b/gas/testsuite/gas/aarch64/virthostext.d index 8e63efa..2181906 100644 --- a/gas/testsuite/gas/aarch64/virthostext.d +++ b/gas/testsuite/gas/aarch64/virthostext.d @@ -1,5 +1,5 @@ #objdump: -dr -#as: -march=armv8.1-a +#as: -menable-sysreg-checking -march=armv8.1-a #source: virthostext.s |