From: Andrea Corallo Date: Fri, 14 May 2021 14:19:39 +0000 (+0200) Subject: PATCH [1/10] arm: add 'bti' instruction for Armv8.1-M pacbti extension X-Git-Tag: binutils-2_38~1800 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3751264cdd187e355af867198f5b70b36846a1a8;p=thirdparty%2Fbinutils-gdb.git PATCH [1/10] arm: add 'bti' instruction for Armv8.1-M pacbti extension gas/ 2021-06-11 Andrea Corallo * 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 * arm-dis.c (thumb32_opcodes): Add bti instruction. --- diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index fa023b4461e..d7f8fca803b 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 00000000000..3c693728468 --- /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 00000000000..38929e3dd02 --- /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 92cd098d6c9..1e096997543 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),