summaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorAlex Coplan <alex.coplan@arm.com>2020-09-08 14:21:44 +0100
committerAlex Coplan <alex.coplan@arm.com>2020-09-08 14:21:44 +0100
commit38cf07a6c0bae61ffba00054eb2e025a3910d93c (patch)
tree75a79a84fe501e5219678206e063b29f15655030 /gas
parent03fb3142c71fde91531ca39f33413bdf50a8dfb3 (diff)
downloadbinutils-gdb-38cf07a6c0bae61ffba00054eb2e025a3910d93c.tar.gz
aarch64: Add support for Armv8-R system registers
This patch adds support for the system registers introduced in Armv8-R AArch64. gas/ChangeLog: 2020-09-08 Alex Coplan <alex.coplan@arm.com> * config/tc-aarch64.c (parse_sys_reg): Also pass sysreg name to validation function. (parse_sys_ins_reg): Likewise. (print_operands): Pass CPU features to aarch64_print_operand(). * testsuite/gas/aarch64/v8-r-bad-sysregs.d: New test. * testsuite/gas/aarch64/v8-r-bad-sysregs.l: Error output. * testsuite/gas/aarch64/v8-r-bad-sysregs.s: Input. * testsuite/gas/aarch64/v8-r-sysregs-need-arch.d: New test. * testsuite/gas/aarch64/v8-r-sysregs-need-arch.l: Error output. * testsuite/gas/aarch64/v8-r-sysregs.d: New test. * testsuite/gas/aarch64/v8-r-sysregs.s: Input for previous two tests. include/ChangeLog: 2020-09-08 Alex Coplan <alex.coplan@arm.com> * opcode/aarch64.h (aarch64_sys_ins_reg_supported_p): Also take system register name in order to simplify validation for v8-R. (aarch64_print_operand): Also take CPU feature set, as disassembly for system registers now depends on arch variant. opcodes/ChangeLog: 2020-09-08 Alex Coplan <alex.coplan@arm.com> * aarch64-dis.c (print_operands): Pass CPU features to aarch64_print_operand(). * aarch64-opc.c (aarch64_print_operand): Use CPU features to determine preferred disassembly of system registers. (SR_RNG): Refactor to use new SR_FEAT2 macro. (SR_FEAT2): New. (SR_V8_1_A): New. (SR_V8_4_A): New. (SR_V8_A): New. (SR_V8_R): New. (SR_EXPAND_ELx): New. (SR_EXPAND_EL12): New. (aarch64_sys_regs): Specify which registers are only on A-profile, add R-profile system registers. (ENC_BARLAR): New. (PRBARn_ELx): New. (PRLARn_ELx): New. (aarch64_sys_ins_reg_supported_p): Reject EL3 registers for Armv8-R AArch64.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog14
-rw-r--r--gas/config/tc-aarch64.c9
-rw-r--r--gas/testsuite/gas/aarch64/v8-r-bad-sysregs.d3
-rw-r--r--gas/testsuite/gas/aarch64/v8-r-bad-sysregs.l14
-rw-r--r--gas/testsuite/gas/aarch64/v8-r-bad-sysregs.s23
-rw-r--r--gas/testsuite/gas/aarch64/v8-r-sysregs-need-arch.d3
-rw-r--r--gas/testsuite/gas/aarch64/v8-r-sysregs-need-arch.l141
-rw-r--r--gas/testsuite/gas/aarch64/v8-r-sysregs.d149
-rw-r--r--gas/testsuite/gas/aarch64/v8-r-sysregs.s141
9 files changed, 493 insertions, 4 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index bf7b9635921..2c09ca22e82 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,19 @@
2020-09-08 Alex Coplan <alex.coplan@arm.com>
+ * config/tc-aarch64.c (parse_sys_reg): Also pass sysreg name to
+ validation function.
+ (parse_sys_ins_reg): Likewise.
+ (print_operands): Pass CPU features to aarch64_print_operand().
+ * testsuite/gas/aarch64/v8-r-bad-sysregs.d: New test.
+ * testsuite/gas/aarch64/v8-r-bad-sysregs.l: Error output.
+ * testsuite/gas/aarch64/v8-r-bad-sysregs.s: Input.
+ * testsuite/gas/aarch64/v8-r-sysregs-need-arch.d: New test.
+ * testsuite/gas/aarch64/v8-r-sysregs-need-arch.l: Error output.
+ * testsuite/gas/aarch64/v8-r-sysregs.d: New test.
+ * testsuite/gas/aarch64/v8-r-sysregs.s: Input for previous two tests.
+
+2020-09-08 Alex Coplan <alex.coplan@arm.com>
+
* testsuite/gas/aarch64/dfb.d: New test.
* testsuite/gas/aarch64/dfb.s: Input.
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index effa976980a..b2a1683efd2 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -4141,8 +4141,8 @@ parse_sys_reg (char **str, htab_t sys_regs,
as_bad (_("selected processor does not support PSTATE field "
"name '%s'"), buf);
if (!pstatefield_p
- && !aarch64_sys_ins_reg_supported_p (cpu_variant, o->value,
- o->flags, o->features))
+ && !aarch64_sys_ins_reg_supported_p (cpu_variant, o->name,
+ o->value, o->flags, o->features))
as_bad (_("selected processor does not support system register "
"name '%s'"), buf);
if (aarch64_sys_reg_deprecated_p (o->flags))
@@ -4183,7 +4183,8 @@ parse_sys_ins_reg (char **str, htab_t sys_ins_regs)
if (!o)
return NULL;
- if (!aarch64_sys_ins_reg_supported_p (cpu_variant, o->value, o->flags, 0))
+ if (!aarch64_sys_ins_reg_supported_p (cpu_variant,
+ o->name, o->value, o->flags, 0))
as_bad (_("selected processor does not support system register "
"name '%s'"), buf);
if (aarch64_sys_reg_deprecated_p (o->flags))
@@ -4715,7 +4716,7 @@ print_operands (char *buf, const aarch64_opcode *opcode,
/* Generate the operand string in STR. */
aarch64_print_operand (str, sizeof (str), 0, opcode, opnds, i, NULL, NULL,
- NULL);
+ NULL, cpu_variant);
/* Delimiter. */
if (str[0] != '\0')
diff --git a/gas/testsuite/gas/aarch64/v8-r-bad-sysregs.d b/gas/testsuite/gas/aarch64/v8-r-bad-sysregs.d
new file mode 100644
index 00000000000..6677f3b6579
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/v8-r-bad-sysregs.d
@@ -0,0 +1,3 @@
+#name: invalid system registers for Armv8-R AArch64
+#source: v8-r-bad-sysregs.s
+#error_output: v8-r-bad-sysregs.l
diff --git a/gas/testsuite/gas/aarch64/v8-r-bad-sysregs.l b/gas/testsuite/gas/aarch64/v8-r-bad-sysregs.l
new file mode 100644
index 00000000000..51ac29852cd
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/v8-r-bad-sysregs.l
@@ -0,0 +1,14 @@
+[^:]*: Assembler messages:
+.*: Error: selected processor does not support system register name 'sctlr_el3'
+.*: Error: selected processor does not support system register name 'ttbr0_el3'
+.*: Error: selected processor does not support system register name 'tcr_el3'
+.*: Warning: specified register cannot be written to at operand 1 -- `msr mpuir_el1,x0'
+.*: Warning: specified register cannot be written to at operand 1 -- `msr mpuir_el2,x0'
+.*: Error: selected processor does not support system register name 'ttbr0_el2'
+.*: Error: selected processor does not support system register name 'ttbr0_el2'
+.*: Error: selected processor does not support system register name 'ttbr1_el2'
+.*: Error: selected processor does not support system register name 'ttbr1_el2'
+.*: Error: selected processor does not support system register name 'vsttbr_el2'
+.*: Error: selected processor does not support system register name 'vsttbr_el2'
+.*: Error: selected processor does not support system register name 'vttbr_el2'
+.*: Error: selected processor does not support system register name 'vttbr_el2'
diff --git a/gas/testsuite/gas/aarch64/v8-r-bad-sysregs.s b/gas/testsuite/gas/aarch64/v8-r-bad-sysregs.s
new file mode 100644
index 00000000000..1a8f488415d
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/v8-r-bad-sysregs.s
@@ -0,0 +1,23 @@
+// Invalid system registers for Armv8-R AArch64
+.arch armv8-r
+
+// No EL3 for Armv8-R
+mrs x0, sctlr_el3
+msr ttbr0_el3, x0
+mrs x0, TCR_EL3
+
+msr mpuir_el1, x0 // write to read-only register
+msr mpuir_el2, x0 // write to read-only register
+
+// Four sysregs are not in R-profile:
+mrs x0, ttbr0_el2
+msr ttbr0_el2, x0
+
+mrs x0, ttbr1_el2
+msr ttbr1_el2, x0
+
+mrs x0, vsttbr_el2
+msr vsttbr_el2, x0
+
+mrs x0, vttbr_el2
+msr vttbr_el2, x0
diff --git a/gas/testsuite/gas/aarch64/v8-r-sysregs-need-arch.d b/gas/testsuite/gas/aarch64/v8-r-sysregs-need-arch.d
new file mode 100644
index 00000000000..af8319697a7
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/v8-r-sysregs-need-arch.d
@@ -0,0 +1,3 @@
+#name: check that Armv8-R system registers are rejected without -march=armv8-r
+#source: v8-r-sysregs.s
+#error_output: v8-r-sysregs-need-arch.l
diff --git a/gas/testsuite/gas/aarch64/v8-r-sysregs-need-arch.l b/gas/testsuite/gas/aarch64/v8-r-sysregs-need-arch.l
new file mode 100644
index 00000000000..a609afc724b
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/v8-r-sysregs-need-arch.l
@@ -0,0 +1,141 @@
+[^:]*: Assembler messages:
+.*: Error: selected processor does not support system register name 'mpuir_el1'
+.*: Error: selected processor does not support system register name 'mpuir_el2'
+.*: Error: selected processor does not support system register name 'prbar_el1'
+.*: Error: selected processor does not support system register name 'prbar_el1'
+.*: Error: selected processor does not support system register name 'prbar_el2'
+.*: Error: selected processor does not support system register name 'prbar_el2'
+.*: Error: selected processor does not support system register name 'prbar1_el1'
+.*: Error: selected processor does not support system register name 'prbar1_el1'
+.*: Error: selected processor does not support system register name 'prbar2_el1'
+.*: Error: selected processor does not support system register name 'prbar2_el1'
+.*: Error: selected processor does not support system register name 'prbar3_el1'
+.*: Error: selected processor does not support system register name 'prbar3_el1'
+.*: Error: selected processor does not support system register name 'prbar4_el1'
+.*: Error: selected processor does not support system register name 'prbar4_el1'
+.*: Error: selected processor does not support system register name 'prbar5_el1'
+.*: Error: selected processor does not support system register name 'prbar5_el1'
+.*: Error: selected processor does not support system register name 'prbar6_el1'
+.*: Error: selected processor does not support system register name 'prbar6_el1'
+.*: Error: selected processor does not support system register name 'prbar7_el1'
+.*: Error: selected processor does not support system register name 'prbar7_el1'
+.*: Error: selected processor does not support system register name 'prbar8_el1'
+.*: Error: selected processor does not support system register name 'prbar8_el1'
+.*: Error: selected processor does not support system register name 'prbar9_el1'
+.*: Error: selected processor does not support system register name 'prbar9_el1'
+.*: Error: selected processor does not support system register name 'prbar10_el1'
+.*: Error: selected processor does not support system register name 'prbar10_el1'
+.*: Error: selected processor does not support system register name 'prbar11_el1'
+.*: Error: selected processor does not support system register name 'prbar11_el1'
+.*: Error: selected processor does not support system register name 'prbar12_el1'
+.*: Error: selected processor does not support system register name 'prbar12_el1'
+.*: Error: selected processor does not support system register name 'prbar13_el1'
+.*: Error: selected processor does not support system register name 'prbar13_el1'
+.*: Error: selected processor does not support system register name 'prbar14_el1'
+.*: Error: selected processor does not support system register name 'prbar14_el1'
+.*: Error: selected processor does not support system register name 'prbar15_el1'
+.*: Error: selected processor does not support system register name 'prbar15_el1'
+.*: Error: selected processor does not support system register name 'prbar1_el2'
+.*: Error: selected processor does not support system register name 'prbar1_el2'
+.*: Error: selected processor does not support system register name 'prbar2_el2'
+.*: Error: selected processor does not support system register name 'prbar2_el2'
+.*: Error: selected processor does not support system register name 'prbar3_el2'
+.*: Error: selected processor does not support system register name 'prbar3_el2'
+.*: Error: selected processor does not support system register name 'prbar4_el2'
+.*: Error: selected processor does not support system register name 'prbar4_el2'
+.*: Error: selected processor does not support system register name 'prbar5_el2'
+.*: Error: selected processor does not support system register name 'prbar5_el2'
+.*: Error: selected processor does not support system register name 'prbar6_el2'
+.*: Error: selected processor does not support system register name 'prbar6_el2'
+.*: Error: selected processor does not support system register name 'prbar7_el2'
+.*: Error: selected processor does not support system register name 'prbar7_el2'
+.*: Error: selected processor does not support system register name 'prbar8_el2'
+.*: Error: selected processor does not support system register name 'prbar8_el2'
+.*: Error: selected processor does not support system register name 'prbar9_el2'
+.*: Error: selected processor does not support system register name 'prbar9_el2'
+.*: Error: selected processor does not support system register name 'prbar10_el2'
+.*: Error: selected processor does not support system register name 'prbar10_el2'
+.*: Error: selected processor does not support system register name 'prbar11_el2'
+.*: Error: selected processor does not support system register name 'prbar11_el2'
+.*: Error: selected processor does not support system register name 'prbar12_el2'
+.*: Error: selected processor does not support system register name 'prbar12_el2'
+.*: Error: selected processor does not support system register name 'prbar13_el2'
+.*: Error: selected processor does not support system register name 'prbar13_el2'
+.*: Error: selected processor does not support system register name 'prbar14_el2'
+.*: Error: selected processor does not support system register name 'prbar14_el2'
+.*: Error: selected processor does not support system register name 'prbar15_el2'
+.*: Error: selected processor does not support system register name 'prbar15_el2'
+.*: Error: selected processor does not support system register name 'prenr_el1'
+.*: Error: selected processor does not support system register name 'prenr_el1'
+.*: Error: selected processor does not support system register name 'prenr_el2'
+.*: Error: selected processor does not support system register name 'prenr_el2'
+.*: Error: selected processor does not support system register name 'prlar_el1'
+.*: Error: selected processor does not support system register name 'prlar_el1'
+.*: Error: selected processor does not support system register name 'prlar_el2'
+.*: Error: selected processor does not support system register name 'prlar_el2'
+.*: Error: selected processor does not support system register name 'prlar1_el1'
+.*: Error: selected processor does not support system register name 'prlar1_el1'
+.*: Error: selected processor does not support system register name 'prlar2_el1'
+.*: Error: selected processor does not support system register name 'prlar2_el1'
+.*: Error: selected processor does not support system register name 'prlar3_el1'
+.*: Error: selected processor does not support system register name 'prlar3_el1'
+.*: Error: selected processor does not support system register name 'prlar4_el1'
+.*: Error: selected processor does not support system register name 'prlar4_el1'
+.*: Error: selected processor does not support system register name 'prlar5_el1'
+.*: Error: selected processor does not support system register name 'prlar5_el1'
+.*: Error: selected processor does not support system register name 'prlar6_el1'
+.*: Error: selected processor does not support system register name 'prlar6_el1'
+.*: Error: selected processor does not support system register name 'prlar7_el1'
+.*: Error: selected processor does not support system register name 'prlar7_el1'
+.*: Error: selected processor does not support system register name 'prlar8_el1'
+.*: Error: selected processor does not support system register name 'prlar8_el1'
+.*: Error: selected processor does not support system register name 'prlar9_el1'
+.*: Error: selected processor does not support system register name 'prlar9_el1'
+.*: Error: selected processor does not support system register name 'prlar10_el1'
+.*: Error: selected processor does not support system register name 'prlar10_el1'
+.*: Error: selected processor does not support system register name 'prlar11_el1'
+.*: Error: selected processor does not support system register name 'prlar11_el1'
+.*: Error: selected processor does not support system register name 'prlar12_el1'
+.*: Error: selected processor does not support system register name 'prlar12_el1'
+.*: Error: selected processor does not support system register name 'prlar13_el1'
+.*: Error: selected processor does not support system register name 'prlar13_el1'
+.*: Error: selected processor does not support system register name 'prlar14_el1'
+.*: Error: selected processor does not support system register name 'prlar14_el1'
+.*: Error: selected processor does not support system register name 'prlar15_el1'
+.*: Error: selected processor does not support system register name 'prlar15_el1'
+.*: Error: selected processor does not support system register name 'prlar1_el2'
+.*: Error: selected processor does not support system register name 'prlar1_el2'
+.*: Error: selected processor does not support system register name 'prlar2_el2'
+.*: Error: selected processor does not support system register name 'prlar2_el2'
+.*: Error: selected processor does not support system register name 'prlar3_el2'
+.*: Error: selected processor does not support system register name 'prlar3_el2'
+.*: Error: selected processor does not support system register name 'prlar4_el2'
+.*: Error: selected processor does not support system register name 'prlar4_el2'
+.*: Error: selected processor does not support system register name 'prlar5_el2'
+.*: Error: selected processor does not support system register name 'prlar5_el2'
+.*: Error: selected processor does not support system register name 'prlar6_el2'
+.*: Error: selected processor does not support system register name 'prlar6_el2'
+.*: Error: selected processor does not support system register name 'prlar7_el2'
+.*: Error: selected processor does not support system register name 'prlar7_el2'
+.*: Error: selected processor does not support system register name 'prlar8_el2'
+.*: Error: selected processor does not support system register name 'prlar8_el2'
+.*: Error: selected processor does not support system register name 'prlar9_el2'
+.*: Error: selected processor does not support system register name 'prlar9_el2'
+.*: Error: selected processor does not support system register name 'prlar10_el2'
+.*: Error: selected processor does not support system register name 'prlar10_el2'
+.*: Error: selected processor does not support system register name 'prlar11_el2'
+.*: Error: selected processor does not support system register name 'prlar11_el2'
+.*: Error: selected processor does not support system register name 'prlar12_el2'
+.*: Error: selected processor does not support system register name 'prlar12_el2'
+.*: Error: selected processor does not support system register name 'prlar13_el2'
+.*: Error: selected processor does not support system register name 'prlar13_el2'
+.*: Error: selected processor does not support system register name 'prlar14_el2'
+.*: Error: selected processor does not support system register name 'prlar14_el2'
+.*: Error: selected processor does not support system register name 'prlar15_el2'
+.*: Error: selected processor does not support system register name 'prlar15_el2'
+.*: Error: selected processor does not support system register name 'prselr_el1'
+.*: Error: selected processor does not support system register name 'prselr_el1'
+.*: Error: selected processor does not support system register name 'prselr_el2'
+.*: Error: selected processor does not support system register name 'prselr_el2'
+.*: Error: selected processor does not support system register name 'vsctlr_el2'
+.*: Error: selected processor does not support system register name 'vsctlr_el2'
diff --git a/gas/testsuite/gas/aarch64/v8-r-sysregs.d b/gas/testsuite/gas/aarch64/v8-r-sysregs.d
new file mode 100644
index 00000000000..aa8321e187b
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/v8-r-sysregs.d
@@ -0,0 +1,149 @@
+#name: Exhaustive test of Armv8-R system registers
+#as: -march=armv8-r
+#objdump: -dr -m aarch64:armv8-r
+
+.*: file format .*
+
+Disassembly of section \.text:
+
+0+ <.*>:
+.*: d5380080 mrs x0, mpuir_el1
+.*: d53c0080 mrs x0, mpuir_el2
+.*: d5386800 mrs x0, prbar_el1
+.*: d5186800 msr prbar_el1, x0
+.*: d53c6800 mrs x0, prbar_el2
+.*: d51c6800 msr prbar_el2, x0
+.*: d5386880 mrs x0, prbar1_el1
+.*: d5186880 msr prbar1_el1, x0
+.*: d5386900 mrs x0, prbar2_el1
+.*: d5186900 msr prbar2_el1, x0
+.*: d5386980 mrs x0, prbar3_el1
+.*: d5186980 msr prbar3_el1, x0
+.*: d5386a00 mrs x0, prbar4_el1
+.*: d5186a00 msr prbar4_el1, x0
+.*: d5386a80 mrs x0, prbar5_el1
+.*: d5186a80 msr prbar5_el1, x0
+.*: d5386b00 mrs x0, prbar6_el1
+.*: d5186b00 msr prbar6_el1, x0
+.*: d5386b80 mrs x0, prbar7_el1
+.*: d5186b80 msr prbar7_el1, x0
+.*: d5386c00 mrs x0, prbar8_el1
+.*: d5186c00 msr prbar8_el1, x0
+.*: d5386c80 mrs x0, prbar9_el1
+.*: d5186c80 msr prbar9_el1, x0
+.*: d5386d00 mrs x0, prbar10_el1
+.*: d5186d00 msr prbar10_el1, x0
+.*: d5386d80 mrs x0, prbar11_el1
+.*: d5186d80 msr prbar11_el1, x0
+.*: d5386e00 mrs x0, prbar12_el1
+.*: d5186e00 msr prbar12_el1, x0
+.*: d5386e80 mrs x0, prbar13_el1
+.*: d5186e80 msr prbar13_el1, x0
+.*: d5386f00 mrs x0, prbar14_el1
+.*: d5186f00 msr prbar14_el1, x0
+.*: d5386f80 mrs x0, prbar15_el1
+.*: d5186f80 msr prbar15_el1, x0
+.*: d53c6880 mrs x0, prbar1_el2
+.*: d51c6880 msr prbar1_el2, x0
+.*: d53c6900 mrs x0, prbar2_el2
+.*: d51c6900 msr prbar2_el2, x0
+.*: d53c6980 mrs x0, prbar3_el2
+.*: d51c6980 msr prbar3_el2, x0
+.*: d53c6a00 mrs x0, prbar4_el2
+.*: d51c6a00 msr prbar4_el2, x0
+.*: d53c6a80 mrs x0, prbar5_el2
+.*: d51c6a80 msr prbar5_el2, x0
+.*: d53c6b00 mrs x0, prbar6_el2
+.*: d51c6b00 msr prbar6_el2, x0
+.*: d53c6b80 mrs x0, prbar7_el2
+.*: d51c6b80 msr prbar7_el2, x0
+.*: d53c6c00 mrs x0, prbar8_el2
+.*: d51c6c00 msr prbar8_el2, x0
+.*: d53c6c80 mrs x0, prbar9_el2
+.*: d51c6c80 msr prbar9_el2, x0
+.*: d53c6d00 mrs x0, prbar10_el2
+.*: d51c6d00 msr prbar10_el2, x0
+.*: d53c6d80 mrs x0, prbar11_el2
+.*: d51c6d80 msr prbar11_el2, x0
+.*: d53c6e00 mrs x0, prbar12_el2
+.*: d51c6e00 msr prbar12_el2, x0
+.*: d53c6e80 mrs x0, prbar13_el2
+.*: d51c6e80 msr prbar13_el2, x0
+.*: d53c6f00 mrs x0, prbar14_el2
+.*: d51c6f00 msr prbar14_el2, x0
+.*: d53c6f80 mrs x0, prbar15_el2
+.*: d51c6f80 msr prbar15_el2, x0
+.*: d5386120 mrs x0, prenr_el1
+.*: d5186120 msr prenr_el1, x0
+.*: d53c6120 mrs x0, prenr_el2
+.*: d51c6120 msr prenr_el2, x0
+.*: d5386820 mrs x0, prlar_el1
+.*: d5186820 msr prlar_el1, x0
+.*: d53c6820 mrs x0, prlar_el2
+.*: d51c6820 msr prlar_el2, x0
+.*: d53868a0 mrs x0, prlar1_el1
+.*: d51868a0 msr prlar1_el1, x0
+.*: d5386920 mrs x0, prlar2_el1
+.*: d5186920 msr prlar2_el1, x0
+.*: d53869a0 mrs x0, prlar3_el1
+.*: d51869a0 msr prlar3_el1, x0
+.*: d5386a20 mrs x0, prlar4_el1
+.*: d5186a20 msr prlar4_el1, x0
+.*: d5386aa0 mrs x0, prlar5_el1
+.*: d5186aa0 msr prlar5_el1, x0
+.*: d5386b20 mrs x0, prlar6_el1
+.*: d5186b20 msr prlar6_el1, x0
+.*: d5386ba0 mrs x0, prlar7_el1
+.*: d5186ba0 msr prlar7_el1, x0
+.*: d5386c20 mrs x0, prlar8_el1
+.*: d5186c20 msr prlar8_el1, x0
+.*: d5386ca0 mrs x0, prlar9_el1
+.*: d5186ca0 msr prlar9_el1, x0
+.*: d5386d20 mrs x0, prlar10_el1
+.*: d5186d20 msr prlar10_el1, x0
+.*: d5386da0 mrs x0, prlar11_el1
+.*: d5186da0 msr prlar11_el1, x0
+.*: d5386e20 mrs x0, prlar12_el1
+.*: d5186e20 msr prlar12_el1, x0
+.*: d5386ea0 mrs x0, prlar13_el1
+.*: d5186ea0 msr prlar13_el1, x0
+.*: d5386f20 mrs x0, prlar14_el1
+.*: d5186f20 msr prlar14_el1, x0
+.*: d5386fa0 mrs x0, prlar15_el1
+.*: d5186fa0 msr prlar15_el1, x0
+.*: d53c68a0 mrs x0, prlar1_el2
+.*: d51c68a0 msr prlar1_el2, x0
+.*: d53c6920 mrs x0, prlar2_el2
+.*: d51c6920 msr prlar2_el2, x0
+.*: d53c69a0 mrs x0, prlar3_el2
+.*: d51c69a0 msr prlar3_el2, x0
+.*: d53c6a20 mrs x0, prlar4_el2
+.*: d51c6a20 msr prlar4_el2, x0
+.*: d53c6aa0 mrs x0, prlar5_el2
+.*: d51c6aa0 msr prlar5_el2, x0
+.*: d53c6b20 mrs x0, prlar6_el2
+.*: d51c6b20 msr prlar6_el2, x0
+.*: d53c6ba0 mrs x0, prlar7_el2
+.*: d51c6ba0 msr prlar7_el2, x0
+.*: d53c6c20 mrs x0, prlar8_el2
+.*: d51c6c20 msr prlar8_el2, x0
+.*: d53c6ca0 mrs x0, prlar9_el2
+.*: d51c6ca0 msr prlar9_el2, x0
+.*: d53c6d20 mrs x0, prlar10_el2
+.*: d51c6d20 msr prlar10_el2, x0
+.*: d53c6da0 mrs x0, prlar11_el2
+.*: d51c6da0 msr prlar11_el2, x0
+.*: d53c6e20 mrs x0, prlar12_el2
+.*: d51c6e20 msr prlar12_el2, x0
+.*: d53c6ea0 mrs x0, prlar13_el2
+.*: d51c6ea0 msr prlar13_el2, x0
+.*: d53c6f20 mrs x0, prlar14_el2
+.*: d51c6f20 msr prlar14_el2, x0
+.*: d53c6fa0 mrs x0, prlar15_el2
+.*: d51c6fa0 msr prlar15_el2, x0
+.*: d5386220 mrs x0, prselr_el1
+.*: d5186220 msr prselr_el1, x0
+.*: d53c6220 mrs x0, prselr_el2
+.*: d51c6220 msr prselr_el2, x0
+.*: d53c2000 mrs x0, vsctlr_el2
+.*: d51c2000 msr vsctlr_el2, x0
diff --git a/gas/testsuite/gas/aarch64/v8-r-sysregs.s b/gas/testsuite/gas/aarch64/v8-r-sysregs.s
new file mode 100644
index 00000000000..76c80bd6470
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/v8-r-sysregs.s
@@ -0,0 +1,141 @@
+// Armv8-R system registers
+mrs x0, mpuir_el1
+mrs x0, mpuir_el2
+mrs x0, prbar_el1
+msr prbar_el1, x0
+mrs x0, prbar_el2
+msr prbar_el2, x0
+mrs x0, prbar1_el1
+msr prbar1_el1, x0
+mrs x0, prbar2_el1
+msr prbar2_el1, x0
+mrs x0, prbar3_el1
+msr prbar3_el1, x0
+mrs x0, prbar4_el1
+msr prbar4_el1, x0
+mrs x0, prbar5_el1
+msr prbar5_el1, x0
+mrs x0, prbar6_el1
+msr prbar6_el1, x0
+mrs x0, prbar7_el1
+msr prbar7_el1, x0
+mrs x0, prbar8_el1
+msr prbar8_el1, x0
+mrs x0, prbar9_el1
+msr prbar9_el1, x0
+mrs x0, prbar10_el1
+msr prbar10_el1, x0
+mrs x0, prbar11_el1
+msr prbar11_el1, x0
+mrs x0, prbar12_el1
+msr prbar12_el1, x0
+mrs x0, prbar13_el1
+msr prbar13_el1, x0
+mrs x0, prbar14_el1
+msr prbar14_el1, x0
+mrs x0, prbar15_el1
+msr prbar15_el1, x0
+mrs x0, prbar1_el2
+msr prbar1_el2, x0
+mrs x0, prbar2_el2
+msr prbar2_el2, x0
+mrs x0, prbar3_el2
+msr prbar3_el2, x0
+mrs x0, prbar4_el2
+msr prbar4_el2, x0
+mrs x0, prbar5_el2
+msr prbar5_el2, x0
+mrs x0, prbar6_el2
+msr prbar6_el2, x0
+mrs x0, prbar7_el2
+msr prbar7_el2, x0
+mrs x0, prbar8_el2
+msr prbar8_el2, x0
+mrs x0, prbar9_el2
+msr prbar9_el2, x0
+mrs x0, prbar10_el2
+msr prbar10_el2, x0
+mrs x0, prbar11_el2
+msr prbar11_el2, x0
+mrs x0, prbar12_el2
+msr prbar12_el2, x0
+mrs x0, prbar13_el2
+msr prbar13_el2, x0
+mrs x0, prbar14_el2
+msr prbar14_el2, x0
+mrs x0, prbar15_el2
+msr prbar15_el2, x0
+mrs x0, prenr_el1
+msr prenr_el1, x0
+mrs x0, prenr_el2
+msr prenr_el2, x0
+mrs x0, prlar_el1
+msr prlar_el1, x0
+mrs x0, prlar_el2
+msr prlar_el2, x0
+mrs x0, prlar1_el1
+msr prlar1_el1, x0
+mrs x0, prlar2_el1
+msr prlar2_el1, x0
+mrs x0, prlar3_el1
+msr prlar3_el1, x0
+mrs x0, prlar4_el1
+msr prlar4_el1, x0
+mrs x0, prlar5_el1
+msr prlar5_el1, x0
+mrs x0, prlar6_el1
+msr prlar6_el1, x0
+mrs x0, prlar7_el1
+msr prlar7_el1, x0
+mrs x0, prlar8_el1
+msr prlar8_el1, x0
+mrs x0, prlar9_el1
+msr prlar9_el1, x0
+mrs x0, prlar10_el1
+msr prlar10_el1, x0
+mrs x0, prlar11_el1
+msr prlar11_el1, x0
+mrs x0, prlar12_el1
+msr prlar12_el1, x0
+mrs x0, prlar13_el1
+msr prlar13_el1, x0
+mrs x0, prlar14_el1
+msr prlar14_el1, x0
+mrs x0, prlar15_el1
+msr prlar15_el1, x0
+mrs x0, prlar1_el2
+msr prlar1_el2, x0
+mrs x0, prlar2_el2
+msr prlar2_el2, x0
+mrs x0, prlar3_el2
+msr prlar3_el2, x0
+mrs x0, prlar4_el2
+msr prlar4_el2, x0
+mrs x0, prlar5_el2
+msr prlar5_el2, x0
+mrs x0, prlar6_el2
+msr prlar6_el2, x0
+mrs x0, prlar7_el2
+msr prlar7_el2, x0
+mrs x0, prlar8_el2
+msr prlar8_el2, x0
+mrs x0, prlar9_el2
+msr prlar9_el2, x0
+mrs x0, prlar10_el2
+msr prlar10_el2, x0
+mrs x0, prlar11_el2
+msr prlar11_el2, x0
+mrs x0, prlar12_el2
+msr prlar12_el2, x0
+mrs x0, prlar13_el2
+msr prlar13_el2, x0
+mrs x0, prlar14_el2
+msr prlar14_el2, x0
+mrs x0, prlar15_el2
+msr prlar15_el2, x0
+mrs x0, prselr_el1
+msr prselr_el1, x0
+mrs x0, prselr_el2
+msr prselr_el2, x0
+mrs x0, vsctlr_el2
+msr vsctlr_el2, x0