Browse Source

Thumb-2: Add Thumb-2 support to the build files

This patch adds the necessary entries to the Makefile and Kconfig
files for building the Thumb-2 kernel.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Catalin Marinas 16 years ago
parent
commit
16c79651a5
3 changed files with 22 additions and 2 deletions
  1. 12 0
      arch/arm/Kconfig
  2. 1 0
      arch/arm/Kconfig.debug
  3. 9 2
      arch/arm/Makefile

+ 12 - 0
arch/arm/Kconfig

@@ -983,6 +983,18 @@ config HZ
 	default AT91_TIMER_HZ if ARCH_AT91
 	default AT91_TIMER_HZ if ARCH_AT91
 	default 100
 	default 100
 
 
+config THUMB2_KERNEL
+	bool "Compile the kernel in Thumb-2 mode"
+	depends on CPU_V7 && EXPERIMENTAL
+	select AEABI
+	select ARM_ASM_UNIFIED
+	help
+	  By enabling this option, the kernel will be compiled in
+	  Thumb-2 mode. A compiler/assembler that understand the unified
+	  ARM-Thumb syntax is needed.
+
+	  If unsure, say N.
+
 config ARM_ASM_UNIFIED
 config ARM_ASM_UNIFIED
 	bool
 	bool
 
 

+ 1 - 0
arch/arm/Kconfig.debug

@@ -8,6 +8,7 @@ source "lib/Kconfig.debug"
 # n, but then RMK will have to kill you ;).
 # n, but then RMK will have to kill you ;).
 config FRAME_POINTER
 config FRAME_POINTER
 	bool
 	bool
+	depends on !THUMB2_KERNEL
 	default y if !ARM_UNWIND
 	default y if !ARM_UNWIND
 	help
 	help
 	  If you say N here, the resulting kernel will be slightly smaller and
 	  If you say N here, the resulting kernel will be slightly smaller and

+ 9 - 2
arch/arm/Makefile

@@ -93,9 +93,16 @@ ifeq ($(CONFIG_ARM_UNWIND),y)
 CFLAGS_ABI	+=-funwind-tables
 CFLAGS_ABI	+=-funwind-tables
 endif
 endif
 
 
+ifeq ($(CONFIG_THUMB2_KERNEL),y)
+AFLAGS_AUTOIT	:=$(call as-option,-Wa$(comma)-mimplicit-it=thumb,-Wa$(comma)-mauto-it)
+AFLAGS_NOWARN	:=$(call as-option,-Wa$(comma)-mno-warn-deprecated,-Wa$(comma)-W)
+CFLAGS_THUMB2	:=-mthumb $(AFLAGS_AUTOIT) $(AFLAGS_NOWARN)
+AFLAGS_THUMB2	:=$(CFLAGS_THUMB2) -Wa$(comma)-mthumb
+endif
+
 # Need -Uarm for gcc < 3.x
 # Need -Uarm for gcc < 3.x
-KBUILD_CFLAGS	+=$(CFLAGS_ABI) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
-KBUILD_AFLAGS	+=$(CFLAGS_ABI) $(arch-y) $(tune-y) -include asm/unified.h -msoft-float
+KBUILD_CFLAGS	+=$(CFLAGS_ABI) $(CFLAGS_THUMB2) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
+KBUILD_AFLAGS	+=$(CFLAGS_ABI) $(AFLAGS_THUMB2) $(arch-y) $(tune-y) -include asm/unified.h -msoft-float
 
 
 CHECKFLAGS	+= -D__arm__
 CHECKFLAGS	+= -D__arm__