aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorVictor Do Nascimento <victor.donascimento@arm.com>2023-11-01 13:44:45 +0000
committerVictor Do Nascimento <victor.donascimento@arm.com>2023-11-07 20:38:11 +0000
commit9203a155ee9722be40d48fbd970c9e8ce3355dff (patch)
tree2733f2a84e2838e42c57796ddba141cd9005fcf4 /gas
parent8c3273ee07fae4badfd6f25f67162e5f6ec7f03e (diff)
downloadbinutils-9203a155ee9722be40d48fbd970c9e8ce3355dff.zip
binutils-9203a155ee9722be40d48fbd970c9e8ce3355dff.tar.gz
binutils-9203a155ee9722be40d48fbd970c9e8ce3355dff.tar.bz2
aarch64: Add THE system register support
Add Binutils support for system registers associated with the Translation Hardening Extension (THE). In doing so, we also add core feature support for THE, enabling its associated feature flag and implementing the necessary feature-checking machinery. Regression tested on aarch64-linux-gnu, no regressions. gas/ChangeLog: * config/tc-aarch64.c (aarch64_features): Add "+the" feature modifier. * doc/c-aarch64.texi (AArch64 Extensions): Update documentation for `the' option. * testsuite/gas/aarch64/sysreg-8.s: Add tests for `the' associated system registers. * testsuite/gas/aarch64/sysreg-8.d: Likewise. include/ChangeLog: * opcode/aarch64.h (enum aarch64_feature_bit): Add AARCH64_FEATURE_THE. opcode/ChangeLog: * aarch64-opc.c (aarch64_sys_ins_reg_supported_p): Add `the' system register check support. * aarch64-sys-regs.def: Add `rcwmask_el1' and `rcwsmask_el1' * aarch64-tbl.h: Define `THE' preprocessor macro.
Diffstat (limited to 'gas')
-rw-r--r--gas/config/tc-aarch64.c1
-rw-r--r--gas/doc/c-aarch64.texi3
-rw-r--r--gas/testsuite/gas/aarch64/sysreg-8.d4
-rw-r--r--gas/testsuite/gas/aarch64/sysreg-8.s5
4 files changed, 13 insertions, 0 deletions
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index 1f687fe..c6566e1 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -10285,6 +10285,7 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = {
{"cssc", AARCH64_FEATURE (CSSC), AARCH64_NO_FEATURES},
{"chk", AARCH64_FEATURE (CHK), AARCH64_NO_FEATURES},
{"gcs", AARCH64_FEATURE (GCS), AARCH64_NO_FEATURES},
+ {"the", AARCH64_FEATURE (THE), AARCH64_NO_FEATURES},
{NULL, AARCH64_NO_FEATURES, AARCH64_NO_FEATURES},
};
diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi
index a3ca714..8af38f2 100644
--- a/gas/doc/c-aarch64.texi
+++ b/gas/doc/c-aarch64.texi
@@ -263,6 +263,9 @@ automatically cause those extensions to be disabled.
@tab Enable Check Feature Status Extension.
@item @code{gcs} @tab N/A @tab No
@tab Enable Guarded Control Stack Extension.
+@item @code{the} @tab ARMv8-A/Armv9-A @tab ARMv8.9-A/Armv9.4-A or later
+ @tab Enable Translation Hardening extension.
+
@end multitable
@node AArch64 Syntax
diff --git a/gas/testsuite/gas/aarch64/sysreg-8.d b/gas/testsuite/gas/aarch64/sysreg-8.d
index 3be4120..09b6724 100644
--- a/gas/testsuite/gas/aarch64/sysreg-8.d
+++ b/gas/testsuite/gas/aarch64/sysreg-8.d
@@ -289,3 +289,7 @@ Disassembly of section \.text:
[^:]*: d5189923 msr pmsnevfr_el1, x3
[^:]*: d53c1242 mrs x2, hcrx_el2
[^:]*: d51c1243 msr hcrx_el2, x3
+[^:]*: d538d0c2 mrs x2, rcwmask_el1
+[^:]*: d518d0c3 msr rcwmask_el1, x3
+[^:]*: d538d062 mrs x2, rcwsmask_el1
+[^:]*: d518d063 msr rcwsmask_el1, x3
diff --git a/gas/testsuite/gas/aarch64/sysreg-8.s b/gas/testsuite/gas/aarch64/sysreg-8.s
index 8ce36c7..21daa8c 100644
--- a/gas/testsuite/gas/aarch64/sysreg-8.s
+++ b/gas/testsuite/gas/aarch64/sysreg-8.s
@@ -185,3 +185,8 @@
rwreg pmsnevfr_el1
rwreg hcrx_el2
+
+ .arch armv8-a+the
+
+ rwreg rcwmask_el1
+ rwreg rcwsmask_el1