--- linux-2.6.11/arch/arm/Makefile.orig 2005-03-20 15:02:07.587138712 -0800 +++ linux-2.6.11/arch/arm/Makefile 2005-03-20 15:10:36.546765088 -0800 @@ -33,6 +33,12 @@ AFLAGS += -mlittle-endian endif +ifeq ($(CONFIG_ARM_THUMB_INTERWORK),y) +CFLAGS += -mthumb-interwork +else +CFLAGS += -mno-thumb-interwork +endif + comma = , # This selects which instruction set is used. @@ -43,6 +49,8 @@ arch-$(CONFIG_CPU_32v5) :=-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4) arch-$(CONFIG_CPU_32v4) :=-D__LINUX_ARM_ARCH__=4 -march=armv4 arch-$(CONFIG_CPU_32v3) :=-D__LINUX_ARM_ARCH__=3 -march=armv3 +# The following overrides the CPU_32v5 setting if specified +arch-$(CONFIG_ARCH_XSCALE) :=-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=xscale,-march=armv5te) # This selects how we optimise for the processor. tune-$(CONFIG_CPU_ARM610) :=-mtune=arm610 --- linux-2.6.11/arch/arm/mm/Kconfig.orig 2005-03-20 14:54:07.927058128 -0800 +++ linux-2.6.11/arch/arm/mm/Kconfig 2005-03-20 15:01:26.727350344 -0800 @@ -366,6 +366,31 @@ If you don't know what this all is, saying Y is a safe choice. +config ARM_THUMB_INTERWORK + bool "Support Thumb code within the kernel" + depends on CPU_ARM720T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM1020 || CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || CPU_XSCALE || CPU_V6 + default n + help + Say Y to compile the whole kernel with support for the interworking + of the 16 bit thumb instruction set and 32 bit ARM instruction set. + + You only need this if some parts of the kernel will be compiled + as thumb code, this is not usual. It increases the total kernel + size by about 3%. + +config ARCH_XSCALE + bool "Use -march=xscale in preference to -march=armv5te" + depends on CPU_XSCALE + default y + help + Say yes to ask gcc to use the xscale architecture (instruction set) + in preference to armv5te. This allows gcc to use the extra xscale + instructions but means the code will not run on a standard (non-xscale) + armv5te. At present this makes no difference - gcc 3.4.3 does not + generate any xscale specific instructions - however gcc 3.4.3 does + generate slightly more optimal instructions if this is specified (this + is an error inside gcc 3.4.3 which should be fixed in 4.1.) + config CPU_BIG_ENDIAN bool "Build big-endian kernel" depends on ARCH_SUPPORTS_BIG_ENDIAN