PR gas/12198
* gas/config/tc-arm.c (arm_arch_v6m_only): New variable. (aeabi_set_public_attributes): Ensure we only set the Operating System Extension when we are on an M-profile core. * gas/testsuite/gas/arm/pr12198-1.d: New test. * gas/testsuite/gas/arm/pr12918-1.s: Likewise. * gas/testsuite/gas/arm/pr12198-2.d: Likewise. * gas/testsuite/gas/arm/pr12918-2.s: Likewise. * include/opcode/arm.h (ARM_AEXT_V6M_ONLY): New define. (ARM_AEXT_V6M): Rewrite in terms of ARM_AEXT_V6M_ONLY. (ARM_ARCH_V6M_ONLY): New define.
This commit is contained in:
parent
6936240e66
commit
251665fc5f
9 changed files with 74 additions and 2 deletions
|
@ -1,3 +1,10 @@
|
|||
2010-11-15 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
|
||||
|
||||
PR gas/12198
|
||||
* config/tc-arm.c (arm_arch_v6m_only): New variable.
|
||||
(aeabi_set_public_attributes): Ensure we only set the Operating System
|
||||
Extension when we are on an M-profile core.
|
||||
|
||||
2010-11-13 Richard Sandiford <rdsandiford@googlemail.com>
|
||||
|
||||
* config/tc-mips.c (macro_build): Remove gas_assert from 'o' case.
|
||||
|
|
|
@ -207,6 +207,7 @@ static const arm_feature_set arm_arch_any = ARM_ANY;
|
|||
static const arm_feature_set arm_arch_full = ARM_FEATURE (-1, -1);
|
||||
static const arm_feature_set arm_arch_t2 = ARM_ARCH_THUMB2;
|
||||
static const arm_feature_set arm_arch_none = ARM_ARCH_NONE;
|
||||
static const arm_feature_set arm_arch_v6m_only = ARM_ARCH_V6M_ONLY;
|
||||
|
||||
static const arm_feature_set arm_cext_iwmmxt2 =
|
||||
ARM_FEATURE (0, ARM_CEXT_IWMMXT2);
|
||||
|
@ -23232,6 +23233,12 @@ aeabi_set_public_attributes (void)
|
|||
ARM_MERGE_FEATURE_SETS (flags, flags, *object_arch);
|
||||
}
|
||||
|
||||
/* We need to make sure that the attributes do not identify us as v6S-M
|
||||
when the only v6S-M feature in use is the Operating System Extensions. */
|
||||
if (ARM_CPU_HAS_FEATURE (flags, arm_ext_os))
|
||||
if (!ARM_CPU_HAS_FEATURE (flags, arm_arch_v6m_only))
|
||||
ARM_CLEAR_FEATURE (flags, flags, arm_ext_os);
|
||||
|
||||
tmp = flags;
|
||||
arch = 0;
|
||||
for (p = cpu_arch_ver; p->val; p++)
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2010-11-15 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
|
||||
|
||||
PR gas/12198
|
||||
* gas/arm/pr12198-1.d: New test.
|
||||
* gas/arm/pr12918-1.s: Likewise.
|
||||
* gas/arm/pr12198-2.d: Likewise.
|
||||
* gas/arm/pr12918-2.s: Likewise.
|
||||
|
||||
2010-11-13 Richard Sandiford <rdsandiford@googlemail.com>
|
||||
|
||||
* gas/mips/elf-rel28.s, gas/mips/elf-rel28-n32.d,
|
||||
|
|
12
gas/testsuite/gas/arm/pr12198-1.d
Normal file
12
gas/testsuite/gas/arm/pr12198-1.d
Normal file
|
@ -0,0 +1,12 @@
|
|||
# name: PR12198 - Only select v6S-M when v6-M is selected (1)
|
||||
# source: pr12198-1.s
|
||||
# as:
|
||||
# readelf: -A
|
||||
# This test is only valid on EABI based ports.
|
||||
# target: *-*-*eabi
|
||||
|
||||
Attribute Section: aeabi
|
||||
File Attributes
|
||||
Tag_CPU_arch: v4T
|
||||
Tag_THUMB_ISA_use: Thumb-1
|
||||
Tag_DIV_use: Not allowed
|
7
gas/testsuite/gas/arm/pr12198-1.s
Normal file
7
gas/testsuite/gas/arm/pr12198-1.s
Normal file
|
@ -0,0 +1,7 @@
|
|||
.thumb
|
||||
.global f
|
||||
.type f, %function
|
||||
f:
|
||||
svc 0xab
|
||||
bx lr
|
||||
|
13
gas/testsuite/gas/arm/pr12198-2.d
Normal file
13
gas/testsuite/gas/arm/pr12198-2.d
Normal file
|
@ -0,0 +1,13 @@
|
|||
# name: PR12198 - Only select v6S-M when v6-M is selected (2)
|
||||
# source: pr12198-2.s
|
||||
# as:
|
||||
# readelf: -A
|
||||
# This test is only valid on EABI based ports.
|
||||
# target: *-*-*eabi
|
||||
|
||||
Attribute Section: aeabi
|
||||
File Attributes
|
||||
Tag_CPU_arch: v6S-M
|
||||
Tag_CPU_arch_profile: Microcontroller
|
||||
Tag_THUMB_ISA_use: Thumb-1
|
||||
Tag_DIV_use: Not allowed
|
8
gas/testsuite/gas/arm/pr12198-2.s
Normal file
8
gas/testsuite/gas/arm/pr12198-2.s
Normal file
|
@ -0,0 +1,8 @@
|
|||
.thumb
|
||||
.global f
|
||||
.type f, %function
|
||||
f:
|
||||
svc 0xab
|
||||
dsb
|
||||
bx lr
|
||||
|
|
@ -1,3 +1,10 @@
|
|||
2010-11-15 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
|
||||
|
||||
PR gas/12198
|
||||
* arm.h (ARM_AEXT_V6M_ONLY): New define.
|
||||
(ARM_AEXT_V6M): Rewrite in terms of ARM_AEXT_V6M_ONLY.
|
||||
(ARM_ARCH_V6M_ONLY): New define.
|
||||
|
||||
2010-11-11 Mingming Sun <mingm.sun@gmail.com>
|
||||
|
||||
* mips.h (INSN_LOONGSON_3A): Defined.
|
||||
|
|
|
@ -115,9 +115,10 @@
|
|||
#define ARM_AEXT_NOTM \
|
||||
(ARM_AEXT_V4 | ARM_EXT_V5ExP | ARM_EXT_V5J | ARM_EXT_V6_NOTM \
|
||||
| ARM_EXT_V6_DSP )
|
||||
#define ARM_AEXT_V6M_ONLY \
|
||||
((ARM_EXT_BARRIER | ARM_EXT_V6M | ARM_EXT_THUMB_MSR) & ~(ARM_AEXT_NOTM))
|
||||
#define ARM_AEXT_V6M \
|
||||
((ARM_AEXT_V6K | ARM_EXT_BARRIER | ARM_EXT_V6M | ARM_EXT_THUMB_MSR) \
|
||||
& ~(ARM_AEXT_NOTM))
|
||||
((ARM_AEXT_V6K | ARM_AEXT_V6M_ONLY) & ~(ARM_AEXT_NOTM))
|
||||
#define ARM_AEXT_V6SM (ARM_AEXT_V6M | ARM_EXT_OS)
|
||||
#define ARM_AEXT_V7M \
|
||||
((ARM_AEXT_V7_ARM | ARM_EXT_V6M | ARM_EXT_V7M | ARM_EXT_DIV) \
|
||||
|
@ -228,6 +229,8 @@
|
|||
ARM_FEATURE (ARM_AEXT_V7A | ARM_EXT_MP | ARM_EXT_SEC \
|
||||
| ARM_EXT_DIV | ARM_EXT_ADIV \
|
||||
| ARM_EXT_VIRT, 0)
|
||||
/* Features that are present in v6M and v6S-M but not other v6 cores. */
|
||||
#define ARM_ARCH_V6M_ONLY ARM_FEATURE (ARM_AEXT_V6M_ONLY, 0)
|
||||
|
||||
/* There are too many feature bits to fit in a single word, so use a
|
||||
structure. For simplicity we put all core features in one word and
|
||||
|
|
Loading…
Reference in a new issue