]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
aarch64: Disable sysreg guards by default
authorAlice Carlotti <alice.carlotti@arm.com>
Wed, 9 Jul 2025 21:59:11 +0000 (22:59 +0100)
committerAlice Carlotti <alice.carlotti@arm.com>
Sat, 12 Jul 2025 09:04:27 +0000 (10:04 +0100)
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:
gas/config/tc-aarch64.c
gas/doc/c-aarch64.texi
gas/testsuite/gas/aarch64/armv8-ras-1.d
gas/testsuite/gas/aarch64/armv8_4-a-registers-illegal.d
gas/testsuite/gas/aarch64/armv8_4-a-registers.d
gas/testsuite/gas/aarch64/gpc3.d
gas/testsuite/gas/aarch64/illegal-ite1-1.d
gas/testsuite/gas/aarch64/illegal-predres2-1.d
gas/testsuite/gas/aarch64/illegal.d
gas/testsuite/gas/aarch64/ite1.d
gas/testsuite/gas/aarch64/mec-arch-bad.d
gas/testsuite/gas/aarch64/mec.d
gas/testsuite/gas/aarch64/msr.d
gas/testsuite/gas/aarch64/pan-directive.d
gas/testsuite/gas/aarch64/pan.d
gas/testsuite/gas/aarch64/sme-8.d
gas/testsuite/gas/aarch64/ssbs-illegal2.d
gas/testsuite/gas/aarch64/ssbs1.d
gas/testsuite/gas/aarch64/ssbs2.d
gas/testsuite/gas/aarch64/sysreg/armv8_8-a-sysregs.d
gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs-bad.d
gas/testsuite/gas/aarch64/sysreg/armv8_9-a-sysregs.d
gas/testsuite/gas/aarch64/sysreg/armv9_5-a-sysregs-archv9_4-unsupported.d
gas/testsuite/gas/aarch64/sysreg/armv9_5-a-sysregs.d
gas/testsuite/gas/aarch64/sysreg/fp8-feature-enables-fpmr.d
gas/testsuite/gas/aarch64/sysreg/fpmr-unsupported-by-default.d
gas/testsuite/gas/aarch64/sysreg/gcs-sysregs-bad.d
gas/testsuite/gas/aarch64/sysreg/gcs-sysregs.d
gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-3.d
gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4.d
gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-4b.d
gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-5.d
gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-7.d
gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8.d
gas/testsuite/gas/aarch64/sysreg/illegal-sysreg-8b.d
gas/testsuite/gas/aarch64/sysreg/mpam-bad.d
gas/testsuite/gas/aarch64/sysreg/pops-sysregs-bad.d
gas/testsuite/gas/aarch64/sysreg/pops-sysregs.d
gas/testsuite/gas/aarch64/sysreg/sme-sysreg-illegal.d
gas/testsuite/gas/aarch64/sysreg/sme-sysreg.d
gas/testsuite/gas/aarch64/sysreg/sve-sysreg-invalid.d
gas/testsuite/gas/aarch64/sysreg/sve-sysreg.d
gas/testsuite/gas/aarch64/sysreg/sysreg-1.d
gas/testsuite/gas/aarch64/sysreg/sysreg-10-bad.d
gas/testsuite/gas/aarch64/sysreg/sysreg-10.d
gas/testsuite/gas/aarch64/sysreg/sysreg-2.d
gas/testsuite/gas/aarch64/sysreg/sysreg-3.d
gas/testsuite/gas/aarch64/sysreg/sysreg-4.d
gas/testsuite/gas/aarch64/sysreg/sysreg-6.d
gas/testsuite/gas/aarch64/sysreg/sysreg-7.d
gas/testsuite/gas/aarch64/sysreg/sysreg-8.d
gas/testsuite/gas/aarch64/sysreg/sysreg-9-bad.d
gas/testsuite/gas/aarch64/sysreg/sysreg-9.d
gas/testsuite/gas/aarch64/sysreg/sysreg-diagnostic.d
gas/testsuite/gas/aarch64/sysreg/sysreg.d
gas/testsuite/gas/aarch64/sysreg/sysreg128.d
gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions-bad.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions-bad.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sysreg/sysregs_with_no_restrictions.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sysreg/sysregs_with_restrictions.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/sysreg/sysregs_with_restrictions.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/sysreg/v8-r-bad-sysregs.d
gas/testsuite/gas/aarch64/sysreg/v8-r-sysregs-need-arch.d
gas/testsuite/gas/aarch64/sysreg/v8-r-sysregs.d
gas/testsuite/gas/aarch64/uao-directive.d
gas/testsuite/gas/aarch64/uao.d
gas/testsuite/gas/aarch64/virthostext-directive.d
gas/testsuite/gas/aarch64/virthostext.d

index 51874da3aa1bee787ab950c5d66b20b49ac84695..20b3f611c91cbf656e9cda90c0368b5f2be84e99 100644 (file)
@@ -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}
 };
 
index d300ab2beefde32e1b3f911d842492fbd54c839f..edd9e9ce8189cc5f84939fb9db978aa70371c2a8 100644 (file)
@@ -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
 
index b10495fcd41fb3f1b258de82f8cb937e514ea870..21596c0b97be939fc3662584d1ac85b0cd1ccf81 100644 (file)
@@ -1,4 +1,4 @@
-#as: -march=armv8-a+ras
+#as: -menable-sysreg-checking -march=armv8-a+ras
 #objdump: -dr
 
 .*:     file format .*
index 2c00b6543087bc1238060d539decc358d6c99b60..a429d2d4f498f55b06f85f8ade1a14120e57ab27 100644 (file)
@@ -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
index f643c8905a115ddf2815e26ffcd6c91f1070591b..f8768c33a0cef90d72cd75d5f5364a6121438712 100644 (file)
@@ -1,4 +1,4 @@
-#as: -march=armv8.4-a
+#as: -menable-sysreg-checking -march=armv8.4-a
 #objdump: -dr
 
 .*:     file format .*
index 2535aefa2730c2d205f28098d367d2307650e90c..749a0ae788ca961a3f09e47dfc313f35c0640c8f 100644 (file)
@@ -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 .*
index 99ef4d47d7b41b5b44e1da6985da1a79bc496796..d655d2d255781929939b9f9a8bee8a2c3babd331 100644 (file)
@@ -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
index f858afd34c96fcb556daafc3d9482216789f4288..ff73ac805d523397fa1e4f4712876c11cc945fff 100644 (file)
@@ -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
index 33bbb0c22e49557275d4856fa97170b4ec0d46fb..7367f9b9444a5119bd55170f47e17f247fabf541 100644 (file)
@@ -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
index 10ccbdac53be6487d6640092bc0e26fb4ea73d30..a0d2b627c0b150e7b21f80f5f9d87918120261b3 100644 (file)
@@ -1,4 +1,4 @@
-#as: -march=armv9.4-a+ite
+#as: -menable-sysreg-checking -march=armv9.4-a+ite
 #objdump: -dr
 
 .*:     file format .*
index d2e641652161b413863224af4c1713224486e6e5..8538b7d8962e1856c569235ad72675132969b865 100644 (file)
@@ -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
index 070f831a300a3e91547ede7652cdba6fad95e32d..7a16791858fdd57decc98a38bcbfe558964c19c6 100644 (file)
@@ -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 .*
index fedf2eecd0dbcd5142658b1d76dbe618a925ba0e..815c778870d9b7eb88a4db3759c4eed5f47695db 100644 (file)
@@ -1,4 +1,4 @@
-#as: -march=armv8.2-a+profile
+#as: -menable-sysreg-checking -march=armv8.2-a+profile
 #objdump: -dr
 
 .*:     file format .*
index b7e437844e57f0032ed1b06ecec8db191af07876..51fac2460a599a5df34b166a0848f2027651870f 100644 (file)
@@ -1,5 +1,5 @@
 #objdump: -dr
-#as: --defsym DIRECTIVE=1
+#as: -menable-sysreg-checking --defsym DIRECTIVE=1
 #source: pan.s
 
 .*:     file format .*
index 46c3631b11cf8354dc72e0945d0136ceaa8cf8ff..e79602bf45fafd6e2e1cb526c768259b608cc2dc 100644 (file)
@@ -1,5 +1,5 @@
 #objdump: -dr
-#as: -march=armv8-a+pan
+#as: -menable-sysreg-checking -march=armv8-a+pan
 
 .*:     file format .*
 
index c956baa66e5dd21b3ab6b1a83303c78636a615ee..e550d0a07a175ff74383a417bcd78610a6a15f50 100644 (file)
@@ -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 .*
index d35757c757cbf3d4aa6155c34ebce7029eca583f..aeef0262d0abeda7001ba0a35b762342e1242261 100644 (file)
@@ -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
index daeda76b45b8105b8431e8f881ecaca826d48b53..6dfa1787654ca6efb8b7b2c3a568c12b9992ff9a 100644 (file)
@@ -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 .*
 
index 0027026b0f41899961563bffb48b55fd22768164..68eef6bc8ad4a01510066c571a57789d7577e948 100644 (file)
@@ -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 .*
 
index 294fed2c061ae2d3782fe426b09543e85c4ed324..8b66bcfed22caade494aa740c6762e2cb7666ef9 100644 (file)
@@ -1,4 +1,4 @@
-#as: -march=armv8.8-a
+#as: -menable-sysreg-checking -march=armv8.8-a
 #objdump: -dr
 
 .*:     file format .*
index a2cb5fed63d3c3eb1ef0b7dbd947bcba18ad517b..862d47475ff7a94d5f82d79aff04936a960cce41 100644 (file)
@@ -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
index ca675c47d279a4bae145c49fbb609d379b1d563a..91e77bc8b522cb592741d1adb13ff499f4a8b255 100644 (file)
@@ -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 .*
index 8ad01bc74092263443693bdf768783ba18c66eae..61054aed02a05111134cf2a2d6ae8cebb58b6b57 100644 (file)
@@ -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
index c52142d39980fb41fb6cc61e846b606cf34d4148..55a534eaa4c59653167c46939d9c0fa169666869 100644 (file)
@@ -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 .*
index edef376de87ed3c16a615097557b05432373e9ab..b6a470614145a3f510f51659005631806a0d07eb 100644 (file)
@@ -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 .*
index c0b30c2e1497d53544bf94eea6013ce2b92fff6b..5f116e691e2f3dc865272ea702905d03c65bf9b0 100644 (file)
@@ -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
index 439c1bdbabaeb05ed23f998c76a409864b3d844e..3201a84af7205f577f8896e98eaee5eb9621736c 100644 (file)
@@ -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
index f75c2708a14be2555c14d0e043486da88c9b50ad..9d8082dad9089f9fd08367a2d98b825b6a175859 100644 (file)
@@ -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 .*
index 1c5c9d9cc8d56ed3a19a2ad82556b4b1140728bc..b07919d804024c70ecfa020d46d9171f72af3c30 100644 (file)
@@ -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
index 34dd4e4ac483ec91c094abd614d65019ea1f7a4c..5a11d2e519f40c894822c5ca6d1b7a180e4c7d5f 100644 (file)
@@ -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
index 1504f5f4637dbeb3b604cd894d24f103d9b21bad..d32c1a2fa32d243f0b8b57191019681986a4f34a 100644 (file)
@@ -1,2 +1,2 @@
-#as: -march=armv8-a
+#as: -menable-sysreg-checking -march=armv8-a
 #error_output: illegal-sysreg-4b.l
index d108d0f474feed34de58fe2793d6f66e674be5e5..481566326219b1667e3d293cc9c316560912e5c9 100644 (file)
@@ -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
index 98bc9a04835fc3fb1dff1dc7fbfab1cc19a2a4bf..72311a7c46e5ce1551cca3e269c0097000df36bb 100644 (file)
@@ -1,2 +1,3 @@
+#as: -menable-sysreg-checking
 #source: illegal-sysreg-7.s
 #error_output: illegal-sysreg-7.l
index 1e91d4949ae6987af031c927d12ec825edeb4adf..5b88d3e67f2a08f614fc8bd2ac13d23bded883c1 100644 (file)
@@ -1,2 +1,2 @@
-#as: --no-info
+#as: -menable-sysreg-checking --no-info
 #error_output: illegal-sysreg-8.l
index aed5b17197f2758abd004d0cb2b3438277e37d7c..9d3f32b9797958c9e69b5d2695e59cff2d41841e 100644 (file)
@@ -1,2 +1,2 @@
-#as: --no-info
+#as: -menable-sysreg-checking --no-info
 #warning_output: illegal-sysreg-8b.l
index c3ec372010b9139e25d3ace0e650786f1f3786f8..7d9938e7c8cb556f3cbd837e32a30e2b676058fb 100644 (file)
@@ -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
index 61a6b21daa370eadc7f9467c531da7376513e1f9..58d05bff9d723be7fbd9501ddf55286d25b95fb9 100644 (file)
@@ -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
index db04ab86b9400e086e56662c74ac118a15ab01d8..83729b46d06212a6e5488bd92ed0817ea2a55a80 100644 (file)
@@ -1,5 +1,5 @@
 #source: pops-sysregs.s
-#as: -I$srcdir/$subdir
+#as: -menable-sysreg-checking -I$srcdir/$subdir
 #objdump: -dr
 
 [^:]+:     file format .*
index ff0e855ffff361cea49437080c1c607b5c650532..6eae656368379847f8fdcdbb03ecc243decfe782 100644 (file)
@@ -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
index 8eaf73ca82f1b17d3fd48ac67923edaab9e82fd4..f51c56e9c0f130afe006f6ad44ea7d7666109beb 100644 (file)
@@ -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 .*
index bfe2d27d4db00496c4492531b6a0944c0959ae4f..03a72b7c232da9de7cc5e8f0a0bb3005cb1b970e 100644 (file)
@@ -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
index 22d9e5ac1f6a38405ab0b8191552321c90628b63..2b3a24bc1bd77d90c70ac062a0ed479501197391 100644 (file)
@@ -1,4 +1,4 @@
-#as: -march=armv8-a+sve
+#as: -menable-sysreg-checking -march=armv8-a+sve
 #objdump: -dr
 
 
index cecb1ad88ee60a746d7ce2a67e368658a252c26e..d770133f97bff28451ced405fa6654a71429474e 100644 (file)
@@ -1,5 +1,5 @@
 #source: sysreg-1.s
-#as: -I$srcdir/$subdir
+#as: -menable-sysreg-checking -I$srcdir/$subdir
 #objdump: -dr
 
 .*:     file format .*
index 628de52d2caa34efc95f3917a1c7ae6488bc2778..b47e92cb162e02b1109eed2a6ab7f98689c6d90b 100644 (file)
@@ -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
index f07df916485229bf7a6f0ab7a294baf80d4a7987..55ab50efeb1ad8f6604cc90df13e2456d4989cf6 100644 (file)
@@ -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 .*
index 1845902137e76d8b23cab95e32fb6767823545a0..140d462ae928d245870f2e15ebf0d76584fc95aa 100644 (file)
@@ -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 .*
index 0135762663a47f91e30d50e40dab240e26391573..7f2ece193d3755207a610a6702025c9370447ce4 100644 (file)
@@ -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 .*
index f0fffbee9f5e026b9ff7627c5de6946d88d25d6b..dd832c2ee40f50b0d0150f05806a8c435921f549 100644 (file)
@@ -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 .*
index cb9c46e26b6555dd246a39c9f8e387504034ae49..ef8560fa2f856411474d23b5814d3325aa184e06 100644 (file)
@@ -1,5 +1,5 @@
 #source: sysreg-6.s
-#as: -I$srcdir/$subdir
+#as: -menable-sysreg-checking -I$srcdir/$subdir
 #objdump: -dr
 
 .*:     file format .*
index 846ab8b96abd9288737fb9a7176282d9a411c817..df65924a6eff380d100e4fd7a441b113c19a401c 100644 (file)
@@ -1,5 +1,5 @@
 #source: sysreg-7.s
-#as: -I$srcdir/$subdir
+#as: -menable-sysreg-checking -I$srcdir/$subdir
 #objdump: -dr
 
 .*:     file format .*
index 4ee851fc32d783da1438b8d506663a9e17c118d0..8a1b07fdbfb2c02b05c1481fbb16e25b48a3c3f3 100644 (file)
@@ -1,5 +1,5 @@
 #source: sysreg-8.s
-#as: -I$srcdir/$subdir
+#as: -menable-sysreg-checking -I$srcdir/$subdir
 #objdump: -dr
 
 .*
index a1ebac603c6950d48972138b2526443e6486529a..72d188e5885bb7124fb6702b444c458621587c74 100644 (file)
@@ -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
index 61b63ce3eec8d62fd0ed0ba12944071ee9b98795..a7fa07e96ed0d3d5f826058097aa98cc08cd301b 100644 (file)
@@ -1,5 +1,5 @@
 #source: sysreg-9.s
-#as: -I$srcdir/$subdir
+#as: -menable-sysreg-checking -I$srcdir/$subdir
 #objdump: -dr
 
 
index 55cdf09bb806d0f3fe76917b7550398c82e94c13..35267f578aa0c67132cfd38495ede3bcdba55137 100644 (file)
@@ -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 .*
index 9aba54829e1a2f1eaa6efa4d53ab2f199c209d37..d17c77f76e8fc939489e559c140e5061eb99c06c 100644 (file)
@@ -1,5 +1,5 @@
 #source: sysreg.s
-#as: -I$srcdir/$subdir
+#as: -menable-sysreg-checking -I$srcdir/$subdir
 #objdump: -dr
 
 .*:     file format .*
index 22df5e241b108a945dda5bff44f207f0deb4d2cc..ffd751777c6b080a1e8d5263668728aab567f999 100644 (file)
@@ -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 (file)
index 0000000..95ddd32
--- /dev/null
@@ -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 (file)
index 0000000..f70dba9
--- /dev/null
@@ -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 (file)
index 0000000..f311c23
--- /dev/null
@@ -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 (file)
index 0000000..f5c1138
--- /dev/null
@@ -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 (file)
index 0000000..bca119d
--- /dev/null
@@ -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 (file)
index 0000000..0cdb822
--- /dev/null
@@ -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
index 6677f3b6579786bcae91f0b7d2617df01bbc6ae9..a228b59303d6aa33c8fd24950ca196f2cc0c1330 100644 (file)
@@ -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
index af8319697a7a3468a8861d8945254ed3184ec610..98756de537c96442612068c922837969df555b59 100644 (file)
@@ -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
index aa8321e187b2800922bfdf826ccf783a95f75d83..03e7fabcb6ce62a50293ff46048d42904e9cee84 100644 (file)
@@ -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 .*
index 1dbe8475979c8dd7fdd56ec7e369d25f4685062d..617d73fbae583a49ec9f548ddbe2bf43b82cea02 100644 (file)
@@ -1,5 +1,5 @@
 #objdump: -dr
-#as: --defsym DIRECTIVE=1
+#as: -menable-sysreg-checking --defsym DIRECTIVE=1
 #source: uao.s
 
 .*:     file format .*
index 2fb67b1fa977ef927e7c112cbc65964e9dc46af3..387654c6d6f260673e7756631627cc7c39a5e837 100644 (file)
@@ -1,5 +1,5 @@
 #objdump: -dr
-#as: -march=armv8.2-a
+#as: -menable-sysreg-checking -march=armv8.2-a
 
 .*:     file format .*
 
index 22e8d548b085b491b9f49c9fa79d063a8ddec7c7..5e23caded69f66457ffca7c0bf622b847ab9c7b8 100644 (file)
@@ -1,5 +1,5 @@
 #objdump: -dr
-#as: --defsym DIRECTIVE=1
+#as: -menable-sysreg-checking --defsym DIRECTIVE=1
 #source: virthostext.s
 
 
index 8e63efa6b67299b49b4815dc7dbc71d909cddc5d..218190696c208ef7c05c029e7ff2219332cc0e6c 100644 (file)
@@ -1,5 +1,5 @@
 #objdump: -dr
-#as: -march=armv8.1-a
+#as: -menable-sysreg-checking -march=armv8.1-a
 #source: virthostext.s