Bläddra i källkod

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>
Gustavo Zacarias 11 år sedan
förälder
incheckning
79310d3275
1 ändrade filer med 27 tillägg och 3 borttagningar
  1. 27 3
      arch/Config.in.arm

+ 27 - 3
arch/Config.in.arm

@@ -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