diff options
author | Sudakshina Das <sudi.das@arm.com> | 2018-10-05 10:49:53 +0100 |
---|---|---|
committer | Richard Earnshaw <Richard.Earnshaw@arm.com> | 2018-10-05 11:31:19 +0100 |
commit | 7fadb25d6faf2665305016ceb4aeaeeb86015569 (patch) | |
tree | 77cdab957104d20d892ee3b8c5e14c837f9b9fa9 /gas/config | |
parent | 23f233a595dc7d8b9a6ababe7c4527f743c0cec1 (diff) | |
download | gdb-7fadb25d6faf2665305016ceb4aeaeeb86015569.zip gdb-7fadb25d6faf2665305016ceb4aeaeeb86015569.tar.gz gdb-7fadb25d6faf2665305016ceb4aeaeeb86015569.tar.bz2 |
[Arm, 2/3] Add instruction SB for AArch32
This patch is part of the patch series to add support for ARMv8.5-A
extensions.
(https://developer.arm.com/products/architecture/cpu-architecture/a-profile/exploration-tools)
This patch adds the instruction SB. This instruction is
retrospectively made optional for all versions of the architecture
from ARMv8.0 to ARMv8.4 and is mandatory from ARMv8.5. Hence adding a
new "+sb" for older archtectures.
*** include/ChangeLog ***
2018-10-05 Sudakshina Das <sudi.das@arm.com>
* opcode/arm.h (ARM_EXT2_SB): New.
(ARM_ARCH_V8_5A): Add ARM_EXT2_SB by default.
*** opcodes/ChangeLog ***
2018-10-05 Sudakshina Das <sudi.das@arm.com>
* arm-dis.c (arm_opcodes): Add sb.
(thumb32_opcodes): Likewise.
*** gas/ChangeLog ***
2018-10-05 Sudakshina Das <sudi.das@arm.com>
* config/tc-arm.c (arm_ext_sb): New.
(insns): Add new sb instruction.
(arm_extensions): Add "sb".
* doc/c-arm.texi: Document the above.
* testsuite/gas/arm/sb-bad.d: New test.
* testsuite/gas/arm/sb-bad.l: New test.
* testsuite/gas/arm/sb-thumb1.d: New test.
* testsuite/gas/arm/sb-thumb2.d: New test.
* testsuite/gas/arm/sb.s: New test.
* testsuite/gas/arm/sb1.d: New test.
* testsuite/gas/arm/sb2.d: New test.
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-arm.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index ef3af3a..1ecaa45 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -256,6 +256,8 @@ static const arm_feature_set arm_ext_v8_2 = ARM_FEATURE_CORE_HIGH (ARM_EXT2_V8_2A); static const arm_feature_set arm_ext_v8_3 = ARM_FEATURE_CORE_HIGH (ARM_EXT2_V8_3A); +static const arm_feature_set arm_ext_sb = + ARM_FEATURE_CORE_HIGH (ARM_EXT2_SB); static const arm_feature_set arm_arch_any = ARM_ANY; #ifdef OBJ_ELF @@ -21516,6 +21518,13 @@ static const struct asm_opcode insns[] = cCE("cfmadda32", e200600, 4, (RMAX, RMAX, RMFX, RMFX), mav_quad), cCE("cfmsuba32", e300600, 4, (RMAX, RMAX, RMFX, RMFX), mav_quad), + /* ARMv8.5-A instructions. */ +#undef ARM_VARIANT +#define ARM_VARIANT & arm_ext_sb +#undef THUMB_VARIANT +#define THUMB_VARIANT & arm_ext_sb + TUF("sb", 57ff070, f3bf8f70, 0, (), noargs, noargs), + /* ARMv8-M instructions. */ #undef ARM_VARIANT #define ARM_VARIANT NULL @@ -26418,6 +26427,9 @@ static const struct arm_option_extension_value_table arm_extensions[] = ARM_EXT_OPT ("rdma", FPU_ARCH_NEON_VFP_ARMV8_1, ARM_FEATURE_COPROC (FPU_NEON_ARMV8 | FPU_NEON_EXT_RDMA), ARM_FEATURE_CORE_HIGH (ARM_EXT2_V8A)), + ARM_EXT_OPT ("sb", ARM_FEATURE_CORE_HIGH (ARM_EXT2_SB), + ARM_FEATURE_CORE_HIGH (ARM_EXT2_SB), + ARM_ARCH_V8A), ARM_EXT_OPT2 ("sec", ARM_FEATURE_CORE_LOW (ARM_EXT_SEC), ARM_FEATURE_CORE_LOW (ARM_EXT_SEC), ARM_FEATURE_CORE_LOW (ARM_EXT_V6K), |