From 79310d327586619866a672fbaecc5682a33a0937 Mon Sep 17 00:00:00 2001 From: Gustavo Zacarias Date: Wed, 17 Jul 2013 12:39:15 -0300 Subject: [PATCH] arch/arm: add support for thumb(1) mode [Peter: also adjust BR2_GCC_TARGET_MODE] Signed-off-by: Gustavo Zacarias Signed-off-by: Peter Korsgaard --- arch/Config.in.arm | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/arch/Config.in.arm b/arch/Config.in.arm index 2a0cf45752..c0fabb7ca4 100644 --- a/arch/Config.in.arm +++ b/arch/Config.in.arm @@ -31,6 +31,9 @@ config BR2_ARM_CPU_HAS_VFPV4 bool select BR2_ARM_CPU_HAS_VFPV3 +config BR2_ARM_CPU_HAS_THUMB + bool + config BR2_ARM_CPU_HAS_THUMB2 bool @@ -43,28 +46,38 @@ choice config BR2_arm7tdmi bool "arm7tdmi" + select BR2_ARM_CPU_HAS_THUMB config BR2_arm720t bool "arm720t" + select BR2_ARM_CPU_HAS_THUMB config BR2_arm920t bool "arm920t" + select BR2_ARM_CPU_HAS_THUMB config BR2_arm922t bool "arm922t" + select BR2_ARM_CPU_HAS_THUMB config BR2_arm926t bool "arm926t" select BR2_ARM_CPU_MAYBE_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB config BR2_arm10t bool "arm10t" + select BR2_ARM_CPU_HAS_THUMB config BR2_arm1136jf_s_r0 bool "arm1136jf_s rev0" select BR2_ARM_CPU_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB config BR2_arm1136jf_s_r1 bool "arm1136jf_s rev1" select BR2_ARM_CPU_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB config BR2_arm1176jz_s bool "arm1176jz-s" + select BR2_ARM_CPU_HAS_THUMB config BR2_arm1176jzf_s bool "arm1176jzf-s" select BR2_ARM_CPU_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB config BR2_cortex_a5 bool "cortex-A5" select BR2_ARM_CPU_MAYBE_HAS_NEON @@ -99,6 +112,7 @@ config BR2_strongarm bool "strongarm sa110/sa1100" config BR2_xscale bool "xscale" + select BR2_ARM_CPU_HAS_THUMB config BR2_iwmmxt bool "iwmmxt" endchoice @@ -287,7 +301,7 @@ endchoice choice 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 bool "ARM" @@ -295,8 +309,18 @@ config BR2_ARM_INSTRUCTIONS_ARM_CHOICE This option instructs the compiler to generate regular ARM 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 bool "Thumb2" + depends on BR2_ARM_CPU_HAS_THUMB2 help This option instructions the compiler to generate Thumb2 instructions, which allows to mix 16 bits instructions and @@ -307,7 +331,7 @@ endchoice config BR2_ARM_INSTRUCTIONS_ARM def_bool y - depends on !BR2_ARM_INSTRUCTIONS_THUMB2 + depends on !(BR2_ARM_INSTRUCTIONS_THUMB || BR2_ARM_INSTRUCTIONS_THUMB2) config BR2_ARCH default "arm" if BR2_arm @@ -381,4 +405,4 @@ config BR2_GCC_TARGET_FLOAT_ABI config BR2_GCC_TARGET_MODE 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