mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-19 17:18:24 +08:00
[ARM] Rework CPU feature selection in the disassembler
include/opcode/ * arm.h (ARM_FEATURE_ALL): New. opcodes/ * arm-dis.c (select_arm_features): Rework to avoid used of redefined macros.
This commit is contained in:

committed by
Jiong Wang

parent
9e1f0fa7f3
commit
1af1dd51db
@ -1,3 +1,7 @@
|
|||||||
|
2015-06-02 Matthew Wahab <matthew.wahab@arm.com>
|
||||||
|
|
||||||
|
* arm.h (ARM_FEATURE_ALL): New.
|
||||||
|
|
||||||
2015-06-02 Matthew Wahab <matthew.wahab@arm.com>
|
2015-06-02 Matthew Wahab <matthew.wahab@arm.com>
|
||||||
|
|
||||||
* aarch64.h (AARCH64_FEATURE_RDMA): New.
|
* aarch64.h (AARCH64_FEATURE_RDMA): New.
|
||||||
|
@ -244,6 +244,7 @@
|
|||||||
#define ARM_ARCH_NONE ARM_FEATURE_LOW (0, 0)
|
#define ARM_ARCH_NONE ARM_FEATURE_LOW (0, 0)
|
||||||
#define FPU_NONE ARM_FEATURE_LOW (0, 0)
|
#define FPU_NONE ARM_FEATURE_LOW (0, 0)
|
||||||
#define ARM_ANY ARM_FEATURE (-1, -1, 0) /* Any basic core. */
|
#define ARM_ANY ARM_FEATURE (-1, -1, 0) /* Any basic core. */
|
||||||
|
#define ARM_FEATURE_ALL ARM_FEATURE (-1, -1, -1)/* All CPU and FPU features. */
|
||||||
#define FPU_ANY_HARD ARM_FEATURE_COPROC (FPU_FPA | FPU_VFP_HARD | FPU_MAVERICK)
|
#define FPU_ANY_HARD ARM_FEATURE_COPROC (FPU_FPA | FPU_VFP_HARD | FPU_MAVERICK)
|
||||||
#define ARM_ARCH_THUMB2 ARM_FEATURE_CORE_LOW (ARM_EXT_V6T2 | ARM_EXT_V7 \
|
#define ARM_ARCH_THUMB2 ARM_FEATURE_CORE_LOW (ARM_EXT_V6T2 | ARM_EXT_V7 \
|
||||||
| ARM_EXT_V7A | ARM_EXT_V7R \
|
| ARM_EXT_V7A | ARM_EXT_V7R \
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2015-06-02 Matthew Wahab <matthew.wahab@arm.com>
|
||||||
|
|
||||||
|
* arm-dis.c (select_arm_features): Rework to avoid used of redefined
|
||||||
|
macros.
|
||||||
|
|
||||||
2015-06-02 Matthew Wahab <matthew.wahab@arm.com>
|
2015-06-02 Matthew Wahab <matthew.wahab@arm.com>
|
||||||
|
|
||||||
* aarch64-tbl.h (aarch64_feature_rdma): New.
|
* aarch64-tbl.h (aarch64_feature_rdma): New.
|
||||||
|
@ -6026,43 +6026,40 @@ static void
|
|||||||
select_arm_features (unsigned long mach,
|
select_arm_features (unsigned long mach,
|
||||||
arm_feature_set * features)
|
arm_feature_set * features)
|
||||||
{
|
{
|
||||||
#undef ARM_FEATURE_LOW
|
#undef ARM_SET_FEATURES
|
||||||
#define ARM_FEATURE_LOW(ARCH1,CEXT) \
|
#define ARM_SET_FEATURES(FSET) \
|
||||||
features->core[0] = (ARCH1); \
|
{ \
|
||||||
features->core[1] = 0; \
|
const arm_feature_set fset = FSET; \
|
||||||
features->coproc = (CEXT) | FPU_FPA; \
|
arm_feature_set tmp = ARM_FEATURE (0, 0, FPU_FPA) ; \
|
||||||
return
|
ARM_MERGE_FEATURE_SETS (*features, tmp, fset); \
|
||||||
|
}
|
||||||
#undef ARM_FEATURE_CORE_LOW
|
|
||||||
#define ARM_FEATURE_CORE_LOW(ARCH1) \
|
|
||||||
features->core[0] = (ARCH1); \
|
|
||||||
features->core[1] = 0; \
|
|
||||||
features->coproc = FPU_FPA; \
|
|
||||||
return
|
|
||||||
|
|
||||||
switch (mach)
|
switch (mach)
|
||||||
{
|
{
|
||||||
case bfd_mach_arm_2: ARM_ARCH_V2;
|
case bfd_mach_arm_2: ARM_SET_FEATURES (ARM_ARCH_V2); break;
|
||||||
case bfd_mach_arm_2a: ARM_ARCH_V2S;
|
case bfd_mach_arm_2a: ARM_SET_FEATURES (ARM_ARCH_V2S); break;
|
||||||
case bfd_mach_arm_3: ARM_ARCH_V3;
|
case bfd_mach_arm_3: ARM_SET_FEATURES (ARM_ARCH_V3); break;
|
||||||
case bfd_mach_arm_3M: ARM_ARCH_V3M;
|
case bfd_mach_arm_3M: ARM_SET_FEATURES (ARM_ARCH_V3M); break;
|
||||||
case bfd_mach_arm_4: ARM_ARCH_V4;
|
case bfd_mach_arm_4: ARM_SET_FEATURES (ARM_ARCH_V4); break;
|
||||||
case bfd_mach_arm_4T: ARM_ARCH_V4T;
|
case bfd_mach_arm_4T: ARM_SET_FEATURES (ARM_ARCH_V4T); break;
|
||||||
case bfd_mach_arm_5: ARM_ARCH_V5;
|
case bfd_mach_arm_5: ARM_SET_FEATURES (ARM_ARCH_V5); break;
|
||||||
case bfd_mach_arm_5T: ARM_ARCH_V5T;
|
case bfd_mach_arm_5T: ARM_SET_FEATURES (ARM_ARCH_V5T); break;
|
||||||
case bfd_mach_arm_5TE: ARM_ARCH_V5TE;
|
case bfd_mach_arm_5TE: ARM_SET_FEATURES (ARM_ARCH_V5TE); break;
|
||||||
case bfd_mach_arm_XScale: ARM_ARCH_XSCALE;
|
case bfd_mach_arm_XScale: ARM_SET_FEATURES (ARM_ARCH_XSCALE); break;
|
||||||
case bfd_mach_arm_ep9312: ARM_FEATURE_LOW (ARM_AEXT_V4T, \
|
case bfd_mach_arm_ep9312:
|
||||||
ARM_CEXT_MAVERICK \
|
ARM_SET_FEATURES (ARM_FEATURE_LOW (ARM_AEXT_V4T,
|
||||||
| FPU_MAVERICK);
|
ARM_CEXT_MAVERICK | FPU_MAVERICK));
|
||||||
case bfd_mach_arm_iWMMXt: ARM_ARCH_IWMMXT;
|
break;
|
||||||
case bfd_mach_arm_iWMMXt2: ARM_ARCH_IWMMXT2;
|
case bfd_mach_arm_iWMMXt: ARM_SET_FEATURES (ARM_ARCH_IWMMXT); break;
|
||||||
|
case bfd_mach_arm_iWMMXt2: ARM_SET_FEATURES (ARM_ARCH_IWMMXT2); break;
|
||||||
/* If the machine type is unknown allow all
|
/* If the machine type is unknown allow all
|
||||||
architecture types and all extensions. */
|
architecture types and all extensions. */
|
||||||
case bfd_mach_arm_unknown: ARM_FEATURE_LOW (-1UL, -1UL);
|
case bfd_mach_arm_unknown: ARM_SET_FEATURES (ARM_FEATURE_ALL); break;
|
||||||
default:
|
default:
|
||||||
abort ();
|
abort ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef ARM_SET_FEATURES
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user