aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Corallo <andrea.corallo@arm.com>2021-05-14 16:19:39 +0200
committerAndrea Corallo <andrea.corallo@arm.com>2021-07-26 14:18:24 +0200
commit3751264cdd187e355af867198f5b70b36846a1a8 (patch)
treeec2e3e3ac0a4863a66a4e290394ae72263f09e4a
parent730afdd1399f12b6683b70b7cba0ef67651e4e05 (diff)
downloadgdb-3751264cdd187e355af867198f5b70b36846a1a8.zip
gdb-3751264cdd187e355af867198f5b70b36846a1a8.tar.gz
gdb-3751264cdd187e355af867198f5b70b36846a1a8.tar.bz2
PATCH [1/10] arm: add 'bti' instruction for Armv8.1-M pacbti extension
gas/ 2021-06-11 Andrea Corallo <andrea.corallo@arm.com> * config/tc-arm.c (insns): Add 'bti' insn. * testsuite/gas/arm/armv8_1-m-pacbti.d: New file. * testsuite/gas/arm/armv8_1-m-pacbti.s: Likewise. opcodes/ 2021-06-11 Andrea Corallo <andrea.corallo@arm.com> * arm-dis.c (thumb32_opcodes): Add bti instruction.
-rw-r--r--gas/config/tc-arm.c1
-rw-r--r--gas/testsuite/gas/arm/armv8_1-m-pacbti.d10
-rw-r--r--gas/testsuite/gas/arm/armv8_1-m-pacbti.s5
-rw-r--r--opcodes/arm-dis.c5
4 files changed, 21 insertions, 0 deletions
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index fa023b4..d7f8fca 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -26305,6 +26305,7 @@ static const struct asm_opcode insns[] =
/* Armv8.1-M Mainline instructions. */
#undef THUMB_VARIANT
#define THUMB_VARIANT & arm_ext_v8_1m_main
+ ToU("bti", f3af800f, 0, (), noargs),
toU("cinc", _cinc, 3, (RRnpcsp, RR_ZR, COND), t_cond),
toU("cinv", _cinv, 3, (RRnpcsp, RR_ZR, COND), t_cond),
toU("cneg", _cneg, 3, (RRnpcsp, RR_ZR, COND), t_cond),
diff --git a/gas/testsuite/gas/arm/armv8_1-m-pacbti.d b/gas/testsuite/gas/arm/armv8_1-m-pacbti.d
new file mode 100644
index 0000000..3c69372
--- /dev/null
+++ b/gas/testsuite/gas/arm/armv8_1-m-pacbti.d
@@ -0,0 +1,10 @@
+#name: Valid Armv8.1-M pointer authentication and branch target identification extention
+#source: armv8_1-m-pacbti.s
+#as: -march=armv8.1-m.main
+#objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format .*arm.*
+
+Disassembly of section .text:
+0[0-9a-f]+ <[^>]+> f3af 800f bti
+#...
diff --git a/gas/testsuite/gas/arm/armv8_1-m-pacbti.s b/gas/testsuite/gas/arm/armv8_1-m-pacbti.s
new file mode 100644
index 0000000..38929e3
--- /dev/null
+++ b/gas/testsuite/gas/arm/armv8_1-m-pacbti.s
@@ -0,0 +1,5 @@
+ .syntax unified
+ .text
+ .thumb
+.Lstart:
+ bti
diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c
index 92cd098..1e09699 100644
--- a/opcodes/arm-dis.c
+++ b/opcodes/arm-dis.c
@@ -4652,6 +4652,11 @@ static const struct opcode16 thumb_opcodes[] =
makes heavy use of special-case bit patterns. */
static const struct opcode32 thumb32_opcodes[] =
{
+ /* Arm v8.1-M Mainline Pointer Authentication and Branch Target
+ Identification Extension. */
+ {ARM_FEATURE_CORE_HIGH (ARM_EXT2_V8_1M_MAIN),
+ 0xf3af800f, 0xffffffff, "bti"},
+
/* Armv8.1-M Mainline and Armv8.1-M Mainline Security Extensions
instructions. */
{ARM_FEATURE_CORE_HIGH (ARM_EXT2_V8_1M_MAIN),