summaryrefslogtreecommitdiff
path: root/packages/linux/nslu2-kernel/2.6/compile-switches.patch
blob: 4b7a688313aacea5b994c68a6eced320a416b822 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
--- 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