From a1a693d81c8291788428e9bc2a2b5e5b48f181f1 Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Fri, 4 Jun 2021 10:17:17 +0200 Subject: [PATCH 06/10] PATCH [6/10] arm: Add -march=armv8.1-m.main+pacbti flag gas/ 2021-06-11 Andrea Corallo * config/tc-arm.c (pacbti_ext): Define. (BAD_PACBTI): New macro. (armv8_1m_main_ext_table): Add 'pacbti' extension. include/ 2021-06-11 Andrea Corallo * opcode/arm.h (ARM_EXT3_PACBTI, ARM_AEXT3_V8_1M_MAIN_PACBTI): New macro. --- gas/config/tc-arm.c | 4 ++++ include/opcode/arm.h | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 6ef0cd97a5e..3ec353abf78 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -365,6 +365,8 @@ static const arm_feature_set fpu_neon_ext_v8_1 = ARM_FEATURE_COPROC (FPU_NEON_EXT_RDMA); static const arm_feature_set fpu_neon_ext_dotprod = ARM_FEATURE_COPROC (FPU_NEON_EXT_DOTPROD); +static const arm_feature_set pacbti_ext = + ARM_FEATURE_CORE_HIGH_HIGH (ARM_EXT3_PACBTI); static int mfloat_abi_opt = -1; /* Architecture feature bits selected by the last -mcpu/-march or .cpu/.arch @@ -945,6 +947,7 @@ struct asm_opcode "and source operands makes instruction UNPREDICTABLE") #define BAD_EL_TYPE _("bad element type for instruction") #define MVE_BAD_QREG _("MVE vector register Q[0..7] expected") +#define BAD_PACBTI _("selected processor does not support PACBTI extention") static htab_t arm_ops_hsh; static htab_t arm_cond_hsh; @@ -31934,6 +31937,7 @@ static const struct arm_ext_table armv8_1m_main_ext_table[] = ARM_EXT2_FP16_INST | ARM_EXT2_MVE | ARM_EXT2_MVE_FP, FPU_VFP_V5_SP_D16 | FPU_VFP_EXT_FP16 | FPU_VFP_EXT_FMA)), CDE_EXTENSIONS, + ARM_ADD ("pacbti", ARM_FEATURE_CORE_HIGH_HIGH (ARM_AEXT3_V8_1M_MAIN_PACBTI)), { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE } }; diff --git a/include/opcode/arm.h b/include/opcode/arm.h index 1152e781222..4a6044f6f68 100644 --- a/include/opcode/arm.h +++ b/include/opcode/arm.h @@ -90,6 +90,11 @@ #define ARM_EXT2_CDE7 0x40000000 /* Using CDE coproc 7. */ #define ARM_EXT2_V8R 0x80000000 /* Arm V8R. */ +#define ARM_EXT3_PACBTI 0x00000001 /* Arm v8-M Mainline Pointer + Authentication and Branch + Target Identification + Extension. */ + /* Co-processor space extensions. */ #define ARM_CEXT_XSCALE 0x00000001 /* Allow MIA etc. */ #define ARM_CEXT_MAVERICK 0x00000002 /* Use Cirrus/DSP coprocessor. */ @@ -197,6 +202,8 @@ #define ARM_AEXT2_V8_1M_MAIN (ARM_AEXT2_V8M_MAIN | ARM_EXT2_V8_1M_MAIN \ | ARM_EXT2_FP16_INST) +#define ARM_AEXT3_V8_1M_MAIN_PACBTI (ARM_AEXT2_V8M_MAIN | ARM_EXT3_PACBTI) + /* Processors with specific extensions in the co-processor space. */ #define ARM_ARCH_XSCALE ARM_FEATURE_LOW (ARM_AEXT_V5TE, ARM_CEXT_XSCALE) #define ARM_ARCH_IWMMXT \ -- 2.20.1