arch/arm: add support for thumb(1) mode

[Peter: also adjust BR2_GCC_TARGET_MODE]
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
This commit is contained in:
Gustavo Zacarias 2013-07-17 12:39:15 -03:00 committed by Peter Korsgaard
parent 8316801f34
commit 79310d3275

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_THUMB
bool
config BR2_ARM_CPU_HAS_THUMB2 config BR2_ARM_CPU_HAS_THUMB2
bool bool
@ -43,28 +46,38 @@ choice
config BR2_arm7tdmi config BR2_arm7tdmi
bool "arm7tdmi" bool "arm7tdmi"
select BR2_ARM_CPU_HAS_THUMB
config BR2_arm720t config BR2_arm720t
bool "arm720t" bool "arm720t"
select BR2_ARM_CPU_HAS_THUMB
config BR2_arm920t config BR2_arm920t
bool "arm920t" bool "arm920t"
select BR2_ARM_CPU_HAS_THUMB
config BR2_arm922t config BR2_arm922t
bool "arm922t" bool "arm922t"
select BR2_ARM_CPU_HAS_THUMB
config BR2_arm926t config BR2_arm926t
bool "arm926t" bool "arm926t"
select BR2_ARM_CPU_MAYBE_HAS_VFPV2 select BR2_ARM_CPU_MAYBE_HAS_VFPV2
select BR2_ARM_CPU_HAS_THUMB
config BR2_arm10t config BR2_arm10t
bool "arm10t" bool "arm10t"
select BR2_ARM_CPU_HAS_THUMB
config BR2_arm1136jf_s_r0 config BR2_arm1136jf_s_r0
bool "arm1136jf_s rev0" bool "arm1136jf_s rev0"
select BR2_ARM_CPU_HAS_VFPV2 select BR2_ARM_CPU_HAS_VFPV2
select BR2_ARM_CPU_HAS_THUMB
config BR2_arm1136jf_s_r1 config BR2_arm1136jf_s_r1
bool "arm1136jf_s rev1" bool "arm1136jf_s rev1"
select BR2_ARM_CPU_HAS_VFPV2 select BR2_ARM_CPU_HAS_VFPV2
select BR2_ARM_CPU_HAS_THUMB
config BR2_arm1176jz_s config BR2_arm1176jz_s
bool "arm1176jz-s" bool "arm1176jz-s"
select BR2_ARM_CPU_HAS_THUMB
config BR2_arm1176jzf_s config BR2_arm1176jzf_s
bool "arm1176jzf-s" bool "arm1176jzf-s"
select BR2_ARM_CPU_HAS_VFPV2 select BR2_ARM_CPU_HAS_VFPV2
select BR2_ARM_CPU_HAS_THUMB
config BR2_cortex_a5 config BR2_cortex_a5
bool "cortex-A5" bool "cortex-A5"
select BR2_ARM_CPU_MAYBE_HAS_NEON select BR2_ARM_CPU_MAYBE_HAS_NEON
@ -99,6 +112,7 @@ config BR2_strongarm
bool "strongarm sa110/sa1100" bool "strongarm sa110/sa1100"
config BR2_xscale config BR2_xscale
bool "xscale" bool "xscale"
select BR2_ARM_CPU_HAS_THUMB
config BR2_iwmmxt config BR2_iwmmxt
bool "iwmmxt" bool "iwmmxt"
endchoice endchoice
@ -287,7 +301,7 @@ endchoice
choice choice
prompt "ARM instruction set" prompt "ARM instruction set"
depends on BR2_ARM_CPU_HAS_THUMB2 depends on BR2_ARM_CPU_HAS_THUMB || BR2_ARM_CPU_HAS_THUMB2
config BR2_ARM_INSTRUCTIONS_ARM_CHOICE config BR2_ARM_INSTRUCTIONS_ARM_CHOICE
bool "ARM" bool "ARM"
@ -295,8 +309,18 @@ config BR2_ARM_INSTRUCTIONS_ARM_CHOICE
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.
config BR2_ARM_INSTRUCTIONS_THUMB
bool "Thumb"
depends on BR2_ARM_CPU_HAS_THUMB
help
This option instructions the compiler to generate Thumb
instructions, which allows to mix 16 bits instructions and
32 bits instructions. This generally provides a much smaller
compiled binary size.
config BR2_ARM_INSTRUCTIONS_THUMB2 config BR2_ARM_INSTRUCTIONS_THUMB2
bool "Thumb2" bool "Thumb2"
depends on BR2_ARM_CPU_HAS_THUMB2
help help
This option instructions the compiler to generate Thumb2 This option instructions the compiler to generate Thumb2
instructions, which allows to mix 16 bits instructions and instructions, which allows to mix 16 bits instructions and
@ -307,7 +331,7 @@ endchoice
config BR2_ARM_INSTRUCTIONS_ARM config BR2_ARM_INSTRUCTIONS_ARM
def_bool y def_bool y
depends on !BR2_ARM_INSTRUCTIONS_THUMB2 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
@ -381,4 +405,4 @@ config BR2_GCC_TARGET_FLOAT_ABI
config BR2_GCC_TARGET_MODE config BR2_GCC_TARGET_MODE
default "arm" if BR2_ARM_INSTRUCTIONS_ARM default "arm" if BR2_ARM_INSTRUCTIONS_ARM
default "thumb" if BR2_ARM_INSTRUCTIONS_THUMB2 default "thumb" if BR2_ARM_INSTRUCTIONS_THUMB || BR2_ARM_INSTRUCTIONS_THUMB2