From: Alice Carlotti Date: Wed, 9 Jul 2025 21:59:11 +0000 (+0100) Subject: aarch64: Disable sysreg guards by default X-Git-Tag: binutils-2_45~53 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7c684dc6a1f8afc95f150bc821a2c1451b18852f;p=thirdparty%2Fbinutils-gdb.git 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 --- diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 51874da3aa1..20b3f611c91 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 d300ab2beef..edd9e9ce818 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 b10495fcd41..21596c0b97b 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 2c00b654308..a429d2d4f49 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 f643c8905a1..f8768c33a0c 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 2535aefa273..749a0ae788c 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 99ef4d47d7b..d655d2d2557 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 f858afd34c9..ff73ac805d5 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 33bbb0c22e4..7367f9b9444 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 10ccbdac53b..a0d2b627c0b 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 d2e64165216..8538b7d8962 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 070f831a300..7a16791858f 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 fedf2eecd0d..815c778870d 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 b7e437844e5..51fac2460a5 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 46c3631b11c..e79602bf45f 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 c956baa66e5..e550d0a07a1 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 d35757c757c..aeef0262d0a 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 daeda76b45b..6dfa1787654 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 0027026b0f4..68eef6bc8ad 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 294fed2c061..8b66bcfed22 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 a2cb5fed63d..862d47475ff 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 ca675c47d27..91e77bc8b52 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 8ad01bc7409..61054aed02a 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 c52142d3998..55a534eaa4c 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 edef376de87..b6a47061414 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 c0b30c2e149..5f116e691e2 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 439c1bdbaba..3201a84af72 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 f75c2708a14..9d8082dad90 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 1c5c9d9cc8d..b07919d8040 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 34dd4e4ac48..5a11d2e519f 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 1504f5f4637..d32c1a2fa32 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 d108d0f474f..48156632621 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 98bc9a04835..72311a7c46e 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 1e91d4949ae..5b88d3e67f2 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 aed5b17197f..9d3f32b9797 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 c3ec372010b..7d9938e7c8c 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 61a6b21daa3..58d05bff9d7 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 db04ab86b94..83729b46d06 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 ff0e855ffff..6eae6563683 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 8eaf73ca82f..f51c56e9c0f 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 bfe2d27d4db..03a72b7c232 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 22d9e5ac1f6..2b3a24bc1bd 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 cecb1ad88ee..d770133f97b 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 628de52d2ca..b47e92cb162 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 f07df916485..55ab50efeb1 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 1845902137e..140d462ae92 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 0135762663a..7f2ece193d3 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 f0fffbee9f5..dd832c2ee40 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 cb9c46e26b6..ef8560fa2f8 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 846ab8b96ab..df65924a6ef 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 4ee851fc32d..8a1b07fdbfb 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 a1ebac603c6..72d188e5885 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 61b63ce3eec..a7fa07e96ed 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 55cdf09bb80..35267f578aa 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 9aba54829e1..d17c77f76e8 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 22df5e241b1..ffd751777c6 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 00000000000..95ddd32f8b4 --- /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 00000000000..f70dba97e0d --- /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 00000000000..f311c23cdae --- /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 00000000000..f5c1138ada1 --- /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 00000000000..bca119d76f3 --- /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 00000000000..0cdb822fdf4 --- /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 6677f3b6579..a228b59303d 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 af8319697a7..98756de537c 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 aa8321e187b..03e7fabcb6c 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 1dbe8475979..617d73fbae5 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 2fb67b1fa97..387654c6d6f 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 22e8d548b08..5e23caded69 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 8e63efa6b67..218190696c2 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