9579932670826408f9df35bf26ffc6a9dcee1ccb
[openwrt/openwrt.git] / toolchain / uClibc / patches-0.9.32 / 910-thumb_blind_options.patch
1 Add three new blind options to set use of Thumb mode:
2 - COMPILE_IN_THUMB_MODE
3 - if set, CFLAGS will contain -mthumb
4 - if unset, the compiler's default is used
5 - HAS_THUMB
6 - CPUS with Thumb instruction set can select this
7 - use of BX depends on this
8 - FORCE_THUMB
9 - CPUs that are Thumb-only must select this
10 - this selects: HAS_THUMB, COMPILE_IN_THUMB_MODE and USE_BX
11
12 Also, remove leading space in Rules.mak.
13
14 Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
15 Cc: Khem Raj <raj.khem@gmail.com>
16 Cc: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
17 Cc: Carmelo AMOROSO <carmelo.amoroso@st.com>
18 ---
19 Rules.mak | 7 ++++---
20 extra/Configs/Config.arm | 31 ++++++++++++++++++++++++++++---
21 2 files changed, 32 insertions(+), 6 deletions(-)
22
23 --- a/Rules.mak
24 +++ b/Rules.mak
25 @@ -351,9 +351,10 @@ ifeq ($(TARGET_ARCH),arm)
26 CPU_CFLAGS-$(CONFIG_ARM_SA1100)+=-mtune=strongarm1100 -march=armv4
27 CPU_CFLAGS-$(CONFIG_ARM_XSCALE)+=$(call check_gcc,-mtune=xscale,-mtune=strongarm110)
28 CPU_CFLAGS-$(CONFIG_ARM_XSCALE)+=-march=armv5te -Wa,-mcpu=xscale
29 - CPU_CFLAGS-$(CONFIG_ARM_IWMMXT)+=-march=iwmmxt -Wa,-mcpu=iwmmxt -mabi=iwmmxt
30 - CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M3)+=-mcpu=cortex-m3 -mthumb
31 - CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M1)+=-mcpu=cortex-m1 -mthumb
32 + CPU_CFLAGS-$(CONFIG_ARM_IWMMXT)+=-march=iwmmxt -Wa,-mcpu=iwmmxt -mabi=iwmmxt
33 + CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M3)+=-mcpu=cortex-m3
34 + CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M1)+=-mcpu=cortex-m1
35 + CPU_CFLAGS-$(COMPILE_IN_THUMB_MODE)+=-mthumb
36 endif
37
38 ifeq ($(TARGET_ARCH),mips)
39 --- a/extra/Configs/Config.arm
40 +++ b/extra/Configs/Config.arm
41 @@ -64,70 +64,95 @@ config CONFIG_ARM710
42 config CONFIG_ARM7TDMI
43 bool "Arm 7TDMI"
44 select ARCH_HAS_NO_MMU
45 + select HAS_THUMB
46
47 config CONFIG_ARM720T
48 bool "Arm 720T"
49 select ARCH_HAS_MMU
50 + select HAS_THUMB
51
52 config CONFIG_ARM920T
53 bool "Arm 920T"
54 select ARCH_HAS_MMU
55 + select HAS_THUMB
56
57 config CONFIG_ARM922T
58 bool "Arm 922T"
59 select ARCH_HAS_MMU
60 + select HAS_THUMB
61
62 config CONFIG_ARM926T
63 bool "Arm 926T"
64 select ARCH_HAS_MMU
65 + select HAS_THUMB
66
67 config CONFIG_ARM10T
68 bool "Arm 10T"
69 select ARCH_HAS_MMU
70 + select HAS_THUMB
71
72 config CONFIG_ARM1136JF_S
73 bool "Arm 1136JF-S"
74 select ARCH_HAS_MMU
75 + select HAS_THUMB
76
77 config CONFIG_ARM1176JZ_S
78 bool "Arm 1176JZ-S"
79 select ARCH_HAS_MMU
80 + select HAS_THUMB
81
82 config CONFIG_ARM1176JZF_S
83 bool "Arm 1176JZF-S"
84 select ARCH_HAS_MMU
85 + select HAS_THUMB
86
87 config CONFIG_ARM_CORTEX_M3
88 bool "Arm Cortex-M3"
89 select ARCH_HAS_NO_MMU
90 - select USE_BX
91 + select FORCE_THUMB
92
93 config CONFIG_ARM_CORTEX_M1
94 bool "Arm Cortex-M1"
95 select ARCH_HAS_NO_MMU
96 - select USE_BX
97 + select FORCE_THUMB
98
99 config CONFIG_ARM_SA110
100 bool "Intel StrongArm SA-110"
101 select ARCH_HAS_MMU
102 + select HAS_THUMB
103
104 config CONFIG_ARM_SA1100
105 bool "Intel StrongArm SA-1100"
106 select ARCH_HAS_MMU
107 + select HAS_THUMB
108
109 config CONFIG_ARM_XSCALE
110 bool "Intel Xscale"
111 select ARCH_HAS_MMU
112 + select HAS_THUMB
113
114 config CONFIG_ARM_IWMMXT
115 bool "Intel Xscale With WMMX PXA27x"
116 select ARCH_HAS_MMU
117 + select HAS_THUMB
118
119 endchoice
120
121 +config HAS_THUMB
122 + bool
123 +
124 +config FORCE_THUMB
125 + bool
126 + select HAS_THUMB
127 + select COMPILE_IN_THUMB_MODE
128 + select USE_BX
129 +
130 +config COMPILE_IN_THUMB_MODE
131 + bool
132 +
133 config USE_BX
134 bool "Use BX in function return"
135 default y
136 - depends on !CONFIG_GENERIC_ARM && !CONFIG_ARM610 && !CONFIG_ARM710
137 + depends on HAS_THUMB
138 help
139 Use BX instruction for THUMB aware architectures.