aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorPrzemyslaw Wirkus <przemyslaw.wirkus@arm.com>2020-11-04 20:47:06 +0000
committerPrzemyslaw Wirkus <przemyslaw.wirkus@arm.com>2020-11-04 20:54:13 +0000
commit55cc0128349868bec27c472d083cd5aa4271828b (patch)
treefd6c990616f890768fd2bd4e4355a90c0ae7cba4 /gas
parent9c91c7259122af572d50e5422c982201e4003d04 (diff)
downloadfsf-binutils-gdb-55cc0128349868bec27c472d083cd5aa4271828b.zip
fsf-binutils-gdb-55cc0128349868bec27c472d083cd5aa4271828b.tar.gz
fsf-binutils-gdb-55cc0128349868bec27c472d083cd5aa4271828b.tar.bz2
aarch64: Update feature RAS system registers
This patch: + updates RAS feature system registers with new RAS 1.1 regs. + extends RAS/RAS 1.1 support for all architecture levels of Armv8-A. Please note that early Armv8-A architectures do not officially support RAS extension. Rationale of the patch: To ease development so that user-friendly RAS system registers operands can be used. Certain use cases require developers to enable only more generic architecture (e.g. -march=armv8-a) during system development. Users must use RAS extension registers bearing in mind that system they use must support it. The RAS (Reliability, Availability, Serviceability) extension is a system-level extension that defines a number of system registers. RAS 1.1 (FEAT_RASv1p1) introduces five new system registers: ERXPFGCTL_EL1, ERXPFGCDN_EL1, ERXMISC2_EL1, ERXMISC3_EL1 and ERXPFGF_EL1. For details see [0]. [0] https://developer.arm.com/docs/ddi0595/i/
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog13
-rw-r--r--gas/testsuite/gas/aarch64/armv8-ras-1_1-invalid.d3
-rw-r--r--gas/testsuite/gas/aarch64/armv8-ras-1_1-invalid.l2
-rw-r--r--gas/testsuite/gas/aarch64/armv8-ras-1_1-invalid.s2
-rw-r--r--gas/testsuite/gas/aarch64/armv8-ras-1_1.d26
-rw-r--r--gas/testsuite/gas/aarch64/armv8-ras-1_1.s39
-rw-r--r--gas/testsuite/gas/aarch64/illegal-ras-1.d4
-rw-r--r--gas/testsuite/gas/aarch64/illegal-ras-1.l37
-rw-r--r--gas/testsuite/gas/aarch64/illegal-ras-1.s50
-rw-r--r--gas/testsuite/gas/aarch64/illegal-sysreg-2.d3
-rw-r--r--gas/testsuite/gas/aarch64/illegal-sysreg-2.l47
11 files changed, 85 insertions, 141 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index bb6660f..a38b389 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,16 @@
+2020-11-04 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
+
+ * testsuite/gas/aarch64/armv8-ras-1_1-invalid.d: New test.
+ * testsuite/gas/aarch64/armv8-ras-1_1-invalid.l: New test.
+ * testsuite/gas/aarch64/armv8-ras-1_1-invalid.s: New test.
+ * testsuite/gas/aarch64/armv8-ras-1_1.d: New test.
+ * testsuite/gas/aarch64/armv8-ras-1_1.s: New test.
+ * testsuite/gas/aarch64/illegal-ras-1.d: Remove.
+ * testsuite/gas/aarch64/illegal-ras-1.l: Remove.
+ * testsuite/gas/aarch64/illegal-ras-1.s: Remove.
+ * testsuite/gas/aarch64/illegal-sysreg-2.d: Remove.
+ * testsuite/gas/aarch64/illegal-sysreg-2.l: Remove.
+
2020-11-03 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
* NEWS: Update docs.
diff --git a/gas/testsuite/gas/aarch64/armv8-ras-1_1-invalid.d b/gas/testsuite/gas/aarch64/armv8-ras-1_1-invalid.d
new file mode 100644
index 0000000..89f83f5
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv8-ras-1_1-invalid.d
@@ -0,0 +1,3 @@
+#name: Invalid RAS 1.1 System registers usage
+#source: armv8-ras-1_1-invalid.s
+#warning_output: armv8-ras-1_1-invalid.l
diff --git a/gas/testsuite/gas/aarch64/armv8-ras-1_1-invalid.l b/gas/testsuite/gas/aarch64/armv8-ras-1_1-invalid.l
new file mode 100644
index 0000000..730cba3
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv8-ras-1_1-invalid.l
@@ -0,0 +1,2 @@
+.*: Assembler messages:
+.*: Warning: specified register cannot be written to at operand 1 -- `msr erxpfgf_el1,x0'
diff --git a/gas/testsuite/gas/aarch64/armv8-ras-1_1-invalid.s b/gas/testsuite/gas/aarch64/armv8-ras-1_1-invalid.s
new file mode 100644
index 0000000..faa2715
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv8-ras-1_1-invalid.s
@@ -0,0 +1,2 @@
+/* Write to R/O RAS 1.1 system register. */
+msr erxpfgf_el1, x0
diff --git a/gas/testsuite/gas/aarch64/armv8-ras-1_1.d b/gas/testsuite/gas/aarch64/armv8-ras-1_1.d
new file mode 100644
index 0000000..7f4fac6
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv8-ras-1_1.d
@@ -0,0 +1,26 @@
+#name: RAS 1.1 System registers
+#objdump: -dr
+
+.*: file format .*
+
+Disassembly of section \.text:
+
+0+ <.*>:
+.*: d5385540 mrs x0, erxmisc2_el1
+.*: d5385560 mrs x0, erxmisc3_el1
+.*: d53854c0 mrs x0, erxpfgcdn_el1
+.*: d53854a0 mrs x0, erxpfgctl_el1
+.*: d5185540 msr erxmisc2_el1, x0
+.*: d5185560 msr erxmisc3_el1, x0
+.*: d51854c0 msr erxpfgcdn_el1, x0
+.*: d51854a0 msr erxpfgctl_el1, x0
+.*: d5385480 mrs x0, erxpfgf_el1
+.*: d5385540 mrs x0, erxmisc2_el1
+.*: d5385560 mrs x0, erxmisc3_el1
+.*: d53854c0 mrs x0, erxpfgcdn_el1
+.*: d53854a0 mrs x0, erxpfgctl_el1
+.*: d5185540 msr erxmisc2_el1, x0
+.*: d5185560 msr erxmisc3_el1, x0
+.*: d51854c0 msr erxpfgcdn_el1, x0
+.*: d51854a0 msr erxpfgctl_el1, x0
+.*: d5385480 mrs x0, erxpfgf_el1
diff --git a/gas/testsuite/gas/aarch64/armv8-ras-1_1.s b/gas/testsuite/gas/aarch64/armv8-ras-1_1.s
new file mode 100644
index 0000000..a76ec41
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv8-ras-1_1.s
@@ -0,0 +1,39 @@
+/* Armv8-A RAS 1.1 extension system registers.
+
+Please note that early Armv8-a architectures do not officially support RAS
+extension.
+
+Certain use cases require developers to enable only more generic architecture
+(e.g. -march=armv8-a) during system development. Users must use RAS extension
+registers bearing in mind that system they use must support it. */
+
+/* Arm8-A. */
+.arch armv8-a
+
+ /* RAS 1.1 Read/Write registers. */
+ mrs x0, erxmisc2_el1
+ mrs x0, erxmisc3_el1
+ mrs x0, erxpfgcdn_el1
+ mrs x0, erxpfgctl_el1
+ msr erxmisc2_el1, x0
+ msr erxmisc3_el1, x0
+ msr erxpfgcdn_el1, x0
+ msr erxpfgctl_el1, x0
+
+ /* RAS 1.1 Read-only registers. */
+ mrs x0, erxpfgf_el1
+
+/* Armv8-A + RAS. */
+.arch armv8-a+ras
+ /* RAS 1.1 Read/Write registers. */
+ mrs x0, erxmisc2_el1
+ mrs x0, erxmisc3_el1
+ mrs x0, erxpfgcdn_el1
+ mrs x0, erxpfgctl_el1
+ msr erxmisc2_el1, x0
+ msr erxmisc3_el1, x0
+ msr erxpfgcdn_el1, x0
+ msr erxpfgctl_el1, x0
+
+ /* RAS 1.1 Read-only registers. */
+ mrs x0, erxpfgf_el1
diff --git a/gas/testsuite/gas/aarch64/illegal-ras-1.d b/gas/testsuite/gas/aarch64/illegal-ras-1.d
deleted file mode 100644
index 2eb70b4..0000000
--- a/gas/testsuite/gas/aarch64/illegal-ras-1.d
+++ /dev/null
@@ -1,4 +0,0 @@
-#name: Illegal RAS instruction use.
-#source: illegal-ras-1.s
-#as: -march=armv8-a -mno-verbose-error
-#error_output: illegal-ras-1.l
diff --git a/gas/testsuite/gas/aarch64/illegal-ras-1.l b/gas/testsuite/gas/aarch64/illegal-ras-1.l
deleted file mode 100644
index bf8ca6b..0000000
--- a/gas/testsuite/gas/aarch64/illegal-ras-1.l
+++ /dev/null
@@ -1,37 +0,0 @@
-[^:]+: Assembler messages:
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erridr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'errselr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'errselr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxfr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxctlr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxctlr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxstatus_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxstatus_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxaddr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxaddr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxmisc0_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxmisc0_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxmisc1_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxmisc1_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'vsesr_el2'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'disr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'disr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'vdisr_el2'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erridr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'errselr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'errselr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxfr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxctlr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxctlr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxstatus_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxstatus_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxaddr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxaddr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxmisc0_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxmisc0_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxmisc1_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'erxmisc1_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'vsesr_el2'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'disr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'disr_el1'
-^[^:]+:[0-9]+: Error: selected processor does not support system register name 'vdisr_el2'
diff --git a/gas/testsuite/gas/aarch64/illegal-ras-1.s b/gas/testsuite/gas/aarch64/illegal-ras-1.s
deleted file mode 100644
index ae85e8d..0000000
--- a/gas/testsuite/gas/aarch64/illegal-ras-1.s
+++ /dev/null
@@ -1,50 +0,0 @@
- /* Incorrect use of the RAS extension instructions. */
- .text
-
- .macro rw_sys_reg sys_reg xreg r w
- .ifc \w, 1
- msr \sys_reg, \xreg
- .endif
- .ifc \r, 1
- mrs \xreg, \sys_reg
- .endif
- .endm
-
- /* ARMv8-A. */
- .arch armv8-a
- hint #0x10
-
- rw_sys_reg sys_reg=erridr_el1 xreg=x5 r=1 w=0
- rw_sys_reg sys_reg=errselr_el1 xreg=x7 r=1 w=1
-
- rw_sys_reg sys_reg=erxfr_el1 xreg=x5 r=1 w=0
- rw_sys_reg sys_reg=erxctlr_el1 xreg=x5 r=1 w=1
- rw_sys_reg sys_reg=erxstatus_el1 xreg=x5 r=1 w=1
- rw_sys_reg sys_reg=erxaddr_el1 xreg=x5 r=1 w=1
-
- rw_sys_reg sys_reg=erxmisc0_el1 xreg=x5 r=1 w=1
- rw_sys_reg sys_reg=erxmisc1_el1 xreg=x5 r=1 w=1
-
- rw_sys_reg sys_reg=vsesr_el2 xreg=x5 r=1 w=0
- rw_sys_reg sys_reg=disr_el1 xreg=x5 r=1 w=1
- rw_sys_reg sys_reg=vdisr_el2 xreg=x5 r=1 w=0
-
- /* ARMv8.1-A. */
-
- .arch armv8.1-a
- hint #0x10
-
- rw_sys_reg sys_reg=erridr_el1 xreg=x5 r=1 w=0
- rw_sys_reg sys_reg=errselr_el1 xreg=x7 r=1 w=1
-
- rw_sys_reg sys_reg=erxfr_el1 xreg=x5 r=1 w=0
- rw_sys_reg sys_reg=erxctlr_el1 xreg=x5 r=1 w=1
- rw_sys_reg sys_reg=erxstatus_el1 xreg=x5 r=1 w=1
- rw_sys_reg sys_reg=erxaddr_el1 xreg=x5 r=1 w=1
-
- rw_sys_reg sys_reg=erxmisc0_el1 xreg=x5 r=1 w=1
- rw_sys_reg sys_reg=erxmisc1_el1 xreg=x5 r=1 w=1
-
- rw_sys_reg sys_reg=vsesr_el2 xreg=x5 r=1 w=0
- rw_sys_reg sys_reg=disr_el1 xreg=x5 r=1 w=1
- rw_sys_reg sys_reg=vdisr_el2 xreg=x5 r=1 w=0
diff --git a/gas/testsuite/gas/aarch64/illegal-sysreg-2.d b/gas/testsuite/gas/aarch64/illegal-sysreg-2.d
deleted file mode 100644
index 891f4f6..0000000
--- a/gas/testsuite/gas/aarch64/illegal-sysreg-2.d
+++ /dev/null
@@ -1,3 +0,0 @@
-#as: -march=armv8-a
-#source: sysreg-2.s
-#error_output: illegal-sysreg-2.l
diff --git a/gas/testsuite/gas/aarch64/illegal-sysreg-2.l b/gas/testsuite/gas/aarch64/illegal-sysreg-2.l
deleted file mode 100644
index 1204056..0000000
--- a/gas/testsuite/gas/aarch64/illegal-sysreg-2.l
+++ /dev/null
@@ -1,47 +0,0 @@
-[^:]*: Assembler messages:
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'id_aa64mmfr2_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'erridr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'errselr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'errselr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'erxfr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'erxctlr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'erxctlr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'erxstatus_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'erxstatus_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'erxaddr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'erxaddr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'erxmisc0_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'erxmisc0_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'erxmisc1_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'erxmisc1_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'vsesr_el2'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'disr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'disr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'vdisr_el2'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'cvap'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 's1e1rp'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 's1e1wp'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmblimitr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmblimitr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmbptr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmbptr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmbsr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmbsr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmscr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmscr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmsicr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmsicr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmsirr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmsirr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmsfcr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmsfcr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmsevfr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmsevfr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmslatfr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmslatfr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmscr_el2'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmscr_el2'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmscr_el12'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmscr_el12'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmbidr_el1'
-[^:]*:[0-9]+: Error: selected processor does not support system register name 'pmsidr_el1'