From: SRINATH PARVATHANENI <sripar01@sourceware.org>
To: bfd-cvs@sourceware.org
Subject: [binutils-gdb] aarch64: Add new AT system instructions.
Date: Thu, 16 Nov 2023 14:25:01 +0000 (GMT) [thread overview]
Message-ID: <20231116142501.12FB63858030@sourceware.org> (raw)
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=281fda33bcf47d5d541e28aac1e5772ebdf1eb1a
commit 281fda33bcf47d5d541e28aac1e5772ebdf1eb1a
Author: Srinath Parvathaneni <srinath.parvathaneni@arm.com>
Date: Thu Nov 16 14:24:27 2023 +0000
aarch64: Add new AT system instructions.
This patch adds 3 new AT system instructions through FEAT_ATS1A
feature, which are available by default from Armv9.4-A architecture.
Diff:
---
gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l | 3 +++
gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d | 3 +++
gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s | 5 +++++
include/opcode/aarch64.h | 5 ++++-
opcodes/aarch64-opc.c | 9 +++++++++
5 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l
index 63397bcb162..1b67843a4dd 100644
--- a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs-bad.l
@@ -24,3 +24,6 @@
.*: Error: selected processor does not support system register name 'pfar_el1'
.*: Error: selected processor does not support system register name 'pfar_el2'
.*: Error: selected processor does not support system register name 'pfar_el12'
+.*: Error: selected processor does not support system register name 's1e1a'
+.*: Error: selected processor does not support system register name 's1e2a'
+.*: Error: selected processor does not support system register name 's1e3a'
diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d
index 3b66e2bc57c..18376bb5ac1 100644
--- a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.d
@@ -31,3 +31,6 @@ Disassembly of section \.text:
.*: d51860a0 msr pfar_el1, x0
.*: d51c60a0 msr pfar_el2, x0
.*: d51d60a0 msr pfar_el12, x0
+.*: d5087941 at s1e1a, x1
+.*: d50c7943 at s1e2a, x3
+.*: d50e7945 at s1e3a, x5
diff --git a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s
index 9ad0a532acc..4e494a965f6 100644
--- a/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s
+++ b/gas/testsuite/gas/aarch64/armv8_9-a-sysregs.s
@@ -27,3 +27,8 @@
msr PFAR_EL1, x0
msr PFAR_EL2, x0
msr PFAR_EL12, x0
+
+ /* AT. */
+ at s1e1a, x1
+ at s1e2a, x3
+ at s1e3a, x5
diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h
index 03ef907cac1..792d6a4f4a7 100644
--- a/include/opcode/aarch64.h
+++ b/include/opcode/aarch64.h
@@ -183,6 +183,8 @@ enum aarch64_feature_bit {
AARCH64_FEATURE_FGT2,
/* Physical Fault Address. */
AARCH64_FEATURE_PFAR,
+ /* Address Translate Stage 1. */
+ AARCH64_FEATURE_ATS1A,
AARCH64_NUM_FEATURES
};
@@ -245,7 +247,8 @@ enum aarch64_feature_bit {
| AARCH64_FEATBIT (X, RASv2) \
| AARCH64_FEATBIT (X, SCTLR2) \
| AARCH64_FEATBIT (X, FGT2) \
- | AARCH64_FEATBIT (X, PFAR))
+ | AARCH64_FEATBIT (X, PFAR) \
+ | AARCH64_FEATBIT (X, ATS1A))
#define AARCH64_ARCH_V9A_FEATURES(X) (AARCH64_FEATBIT (X, V9A) \
| AARCH64_FEATBIT (X, F16) \
diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c
index e4b3522c02f..4d84071ba8c 100644
--- a/opcodes/aarch64-opc.c
+++ b/opcodes/aarch64-opc.c
@@ -4810,6 +4810,9 @@ const aarch64_sys_ins_reg aarch64_sys_regs_at[] =
{ "s1e3w", CPENS (6, C7, C8, 1), F_HASXT },
{ "s1e1rp", CPENS (0, C7, C9, 0), F_HASXT | F_ARCHEXT },
{ "s1e1wp", CPENS (0, C7, C9, 1), F_HASXT | F_ARCHEXT },
+ { "s1e1a", CPENS (0, C7, C9, 2), F_HASXT | F_ARCHEXT },
+ { "s1e2a", CPENS (4, C7, C9, 2), F_HASXT | F_ARCHEXT },
+ { "s1e3a", CPENS (6, C7, C9, 2), F_HASXT | F_ARCHEXT },
{ 0, CPENS(0,0,0,0), 0 }
};
@@ -5041,6 +5044,12 @@ aarch64_sys_ins_reg_supported_p (const aarch64_feature_set features,
&& AARCH64_CPU_HAS_FEATURE (features, THE))
return true;
+ if ((reg_value == CPENS (0, C7, C9, 2)
+ || reg_value == CPENS (4, C7, C9, 2)
+ || reg_value == CPENS (6, C7, C9, 2))
+ && AARCH64_CPU_HAS_FEATURE (features, ATS1A))
+ return true;
+
return false;
}
reply other threads:[~2023-11-16 14:25 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231116142501.12FB63858030@sourceware.org \
--to=sripar01@sourceware.org \
--cc=bfd-cvs@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).