arm: conditionally support regular ARM instructions

Until now, all ARM processors supported the original ARM instructions.
However, the Cortex-M variants don't support them, and support only
Thumb/Thumb2 modes.

So, make a Kconfig option for ARM support and use it.

[Thomas:
  - Remove the dependency in the choice between ARM/Thumb/Thumb-2,
    because basically the choice is now always visible.
  - Replace the BR2_ARM_INSTRUCTIONS_ARM_CHOICE choice option directly
    by BR2_ARM_INSTRUCTIONS_ARM, instead of having this blind option
    defined separately. This means the choice is now always visible,
    even when only the ARM instruction set is supported.]

Signed-off-by: Guido Martínez <guido@vanguardiasur.com.ar>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Guido Martínez 2015-01-22 15:33:25 -03:00 committed by Thomas Petazzoni
parent 5487b26307
commit a87f5806ed

View File

@ -31,6 +31,9 @@ config BR2_ARM_CPU_HAS_VFPV4
bool bool
select BR2_ARM_CPU_HAS_VFPV3 select BR2_ARM_CPU_HAS_VFPV3
config BR2_ARM_CPU_HAS_ARM
bool
config BR2_ARM_CPU_HAS_THUMB config BR2_ARM_CPU_HAS_THUMB
bool bool
@ -58,83 +61,100 @@ choice
config BR2_arm920t config BR2_arm920t
bool "arm920t" bool "arm920t"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_THUMB select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV4 select BR2_ARM_CPU_ARMV4
config BR2_arm922t config BR2_arm922t
bool "arm922t" bool "arm922t"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_THUMB select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV4 select BR2_ARM_CPU_ARMV4
config BR2_arm926t config BR2_arm926t
bool "arm926t" bool "arm926t"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_MAYBE_HAS_VFPV2 select BR2_ARM_CPU_MAYBE_HAS_VFPV2
select BR2_ARM_CPU_HAS_THUMB select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV5 select BR2_ARM_CPU_ARMV5
config BR2_arm1136jf_s config BR2_arm1136jf_s
bool "arm1136jf-s" bool "arm1136jf-s"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_VFPV2 select BR2_ARM_CPU_HAS_VFPV2
select BR2_ARM_CPU_HAS_THUMB select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV6 select BR2_ARM_CPU_ARMV6
config BR2_arm1176jz_s config BR2_arm1176jz_s
bool "arm1176jz-s" bool "arm1176jz-s"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_THUMB select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV6 select BR2_ARM_CPU_ARMV6
config BR2_arm1176jzf_s config BR2_arm1176jzf_s
bool "arm1176jzf-s" bool "arm1176jzf-s"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_VFPV2 select BR2_ARM_CPU_HAS_VFPV2
select BR2_ARM_CPU_HAS_THUMB select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV6 select BR2_ARM_CPU_ARMV6
config BR2_cortex_a5 config BR2_cortex_a5
bool "cortex-A5" bool "cortex-A5"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_MAYBE_HAS_NEON select BR2_ARM_CPU_MAYBE_HAS_NEON
select BR2_ARM_CPU_MAYBE_HAS_VFPV4 select BR2_ARM_CPU_MAYBE_HAS_VFPV4
select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A select BR2_ARM_CPU_ARMV7A
config BR2_cortex_a7 config BR2_cortex_a7
bool "cortex-A7" bool "cortex-A7"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_NEON select BR2_ARM_CPU_HAS_NEON
select BR2_ARM_CPU_HAS_VFPV4 select BR2_ARM_CPU_HAS_VFPV4
select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A select BR2_ARM_CPU_ARMV7A
config BR2_cortex_a8 config BR2_cortex_a8
bool "cortex-A8" bool "cortex-A8"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_NEON select BR2_ARM_CPU_HAS_NEON
select BR2_ARM_CPU_HAS_VFPV3 select BR2_ARM_CPU_HAS_VFPV3
select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A select BR2_ARM_CPU_ARMV7A
config BR2_cortex_a9 config BR2_cortex_a9
bool "cortex-A9" bool "cortex-A9"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_MAYBE_HAS_NEON select BR2_ARM_CPU_MAYBE_HAS_NEON
select BR2_ARM_CPU_MAYBE_HAS_VFPV3 select BR2_ARM_CPU_MAYBE_HAS_VFPV3
select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A select BR2_ARM_CPU_ARMV7A
config BR2_cortex_a12 config BR2_cortex_a12
bool "cortex-A12" bool "cortex-A12"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_NEON select BR2_ARM_CPU_HAS_NEON
select BR2_ARM_CPU_HAS_VFPV4 select BR2_ARM_CPU_HAS_VFPV4
select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A select BR2_ARM_CPU_ARMV7A
config BR2_cortex_a15 config BR2_cortex_a15
bool "cortex-A15" bool "cortex-A15"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_NEON select BR2_ARM_CPU_HAS_NEON
select BR2_ARM_CPU_HAS_VFPV4 select BR2_ARM_CPU_HAS_VFPV4
select BR2_ARM_CPU_HAS_THUMB2 select BR2_ARM_CPU_HAS_THUMB2
select BR2_ARM_CPU_ARMV7A select BR2_ARM_CPU_ARMV7A
config BR2_fa526 config BR2_fa526
bool "fa526/626" bool "fa526/626"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_ARMV4 select BR2_ARM_CPU_ARMV4
config BR2_pj4 config BR2_pj4
bool "pj4" bool "pj4"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_VFPV3 select BR2_ARM_CPU_HAS_VFPV3
select BR2_ARM_CPU_ARMV7A select BR2_ARM_CPU_ARMV7A
config BR2_strongarm config BR2_strongarm
bool "strongarm sa110/sa1100" bool "strongarm sa110/sa1100"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_ARMV4 select BR2_ARM_CPU_ARMV4
config BR2_xscale config BR2_xscale
bool "xscale" bool "xscale"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_HAS_THUMB select BR2_ARM_CPU_HAS_THUMB
select BR2_ARM_CPU_ARMV5 select BR2_ARM_CPU_ARMV5
config BR2_iwmmxt config BR2_iwmmxt
bool "iwmmxt" bool "iwmmxt"
select BR2_ARM_CPU_HAS_ARM
select BR2_ARM_CPU_ARMV5 select BR2_ARM_CPU_ARMV5
endchoice endchoice
@ -318,10 +338,10 @@ endchoice
choice choice
prompt "ARM instruction set" prompt "ARM instruction set"
depends on BR2_ARM_CPU_HAS_THUMB || BR2_ARM_CPU_HAS_THUMB2
config BR2_ARM_INSTRUCTIONS_ARM_CHOICE config BR2_ARM_INSTRUCTIONS_ARM
bool "ARM" bool "ARM"
depends on BR2_ARM_CPU_HAS_ARM
help help
This option instructs the compiler to generate regular ARM This option instructs the compiler to generate regular ARM
instructions, that are all 32 bits wide. instructions, that are all 32 bits wide.
@ -346,10 +366,6 @@ config BR2_ARM_INSTRUCTIONS_THUMB2
endchoice endchoice
config BR2_ARM_INSTRUCTIONS_ARM
def_bool y
depends on !(BR2_ARM_INSTRUCTIONS_THUMB || BR2_ARM_INSTRUCTIONS_THUMB2)
config BR2_ARCH config BR2_ARCH
default "arm" if BR2_arm default "arm" if BR2_arm
default "armeb" if BR2_armeb default "armeb" if BR2_armeb