1 # Target definition: architecture, optimisations, etc...
8 # Pre-declare target optimisation variables
9 config ARCH_SUPPORTS_BOTH_MMU
10 config ARCH_SUPPORTS_BOTH_ENDIAN
11 config ARCH_SUPPORTS_32
12 config ARCH_SUPPORTS_64
13 config ARCH_SUPPORTS_WITH_ARCH
14 config ARCH_SUPPORTS_WITH_ABI
15 config ARCH_SUPPORTS_WITH_CPU
16 config ARCH_SUPPORTS_WITH_TUNE
17 config ARCH_SUPPORTS_WITH_FLOAT
18 config ARCH_SUPPORTS_WITH_FPU
19 config ARCH_SUPPORTS_SOFTFP
21 config ARCH_DEFAULT_HAS_MMU
22 config ARCH_DEFAULT_BE
23 config ARCH_DEFAULT_LE
24 config ARCH_DEFAULT_32
25 config ARCH_DEFAULT_64
42 source "config.gen/arch.in"
44 #--------------------------------------
45 comment "Generic target options"
47 config ARCH_SUPPORTS_BOTH_MMU
50 config ARCH_DEFAULT_HAS_MMU
55 prompt "Use the MMU" if ARCH_SUPPORTS_BOTH_MMU
56 default y if ARCH_DEFAULT_HAS_MMU
58 If your architecture has an MMU and you want to use it,
61 OTOH, if you don't want to use the MMU, or your arch
62 lacks an MMU, say 'N' here.
64 Note that some architectures (eg. ARM) has variants that
65 lacks an MMU (eg. ARM Cortex-M3), while other variants
66 have one (eg. ARM Cortex-A8).
68 #--------------------------------------
69 config ARCH_SUPPORTS_BOTH_ENDIAN
72 config ARCH_DEFAULT_BE
75 config ARCH_DEFAULT_LE
81 depends on ARCH_SUPPORTS_BOTH_ENDIAN
82 default ARCH_BE if ARCH_DEFAULT_BE
83 default ARCH_LE if ARCH_DEFAULT_LE
91 prompt "Little endian"
97 depends on ARCH_SUPPORTS_BOTH_ENDIAN
98 default "big" if ARCH_BE
99 default "little" if ARCH_LE
101 #--------------------------------------
102 config ARCH_SUPPORTS_32
105 config ARCH_SUPPORTS_64
108 config ARCH_DEFAULT_32
111 config ARCH_DEFAULT_64
116 default "32" if ARCH_32
117 default "64" if ARCH_64
122 default ARCH_32 if ARCH_DEFAULT_32
123 default ARCH_64 if ARCH_DEFAULT_64
128 depends on ARCH_SUPPORTS_32
133 depends on ARCH_SUPPORTS_64
137 #--------------------------------------
138 comment "Target optimisations"
140 config ARCH_SUPPORTS_WITH_ARCH
143 config ARCH_SUPPORTS_WITH_ABI
146 config ARCH_SUPPORTS_WITH_CPU
149 config ARCH_SUPPORTS_WITH_TUNE
152 config ARCH_SUPPORTS_WITH_FLOAT
155 config ARCH_SUPPORTS_WITH_FPU
158 config ARCH_SUPPORTS_SOFTFP
163 prompt "Architecture level"
164 depends on ARCH_SUPPORTS_WITH_ARCH
167 GCC uses this name to determine what kind of instructions it can emit
168 when generating assembly code. This option can be used in conjunction
169 with or instead of the ARCH_CPU option (above), or a (command-line)
172 This is the configuration flag --with-arch=XXXX, and the runtime flag
175 Pick a value from the gcc manual for your choosen gcc version and your
178 Leave blank if you don't know, or if your target architecture does not
183 prompt "Generate code for the specific ABI"
184 depends on ARCH_SUPPORTS_WITH_ABI
187 Generate code for the given ABI.
189 This is the configuration flag --with-abi=XXXX, and the runtime flag
192 Pick a value from the gcc manual for your choosen gcc version and your
195 Leave blank if you don't know, or if your target architecture does not
200 prompt "Emit assembly for CPU"
201 depends on ARCH_SUPPORTS_WITH_CPU
204 This specifies the name of the target processor. GCC uses this name
205 to determine what kind of instructions it can emit when generating
208 This is the configuration flag --with-cpu=XXXX, and the runtime flag
211 Pick a value from the gcc manual for your choosen gcc version and your
214 Leave blank if you don't know, or if your target architecture does not
219 prompt "Tune for CPU"
220 depends on ARCH_SUPPORTS_WITH_TUNE
223 This option is very similar to the ARCH_CPU option (above), except
224 that instead of specifying the actual target processor type, and hence
225 restricting which instructions can be used, it specifies that GCC should
226 tune the performance of the code as if the target were of the type
227 specified in this option, but still choosing the instructions that it
228 will generate based on the cpu specified by the ARCH_CPU option
229 (above), or a (command-line) -mcpu= option.
231 This is the configuration flag --with-tune=XXXX, and the runtime flag
234 Pick a value from the gcc manual for your choosen gcc version and your
237 Leave blank if you don't know, or if your target architecture does not
242 prompt "Use specific FPU"
243 depends on ARCH_SUPPORTS_WITH_FPU
246 On some targets (eg. ARM), you can specify the kind of FPU to emit
249 This is the configuration flag --with-fpu=XXX, and the runtime flag
252 See below wether to actually emit FP opcodes, or to emulate them.
254 Pick a value from the gcc manual for your choosen gcc version and your
257 Leave blank if you don't know, or if your target architecture does not
262 prompt "Floating point:"
263 depends on ARCH_SUPPORTS_WITH_FLOAT
267 prompt "hardware (FPU)"
269 Emit hardware floating point opcodes.
271 If you've got a processor with a FPU, then you want that.
272 If your hardware has no FPU, you still can use HW floating point, but
273 need to compile support for FPU emulation in your kernel. Needless to
274 say that emulating the FPU is /slooowwwww/...
276 One situation you'd want HW floating point without a FPU is if you get
277 binary blobs from different vendors that are compiling this way and
278 can't (don't wan't to) change.
284 Do not emit any hardware floating point opcode.
286 If your processor has no FPU, then you most probably want this, as it
287 is faster than emulating the FPU in the kernel.
289 config ARCH_FLOAT_SOFTFP
292 depends on ARCH_SUPPORTS_SOFTFP
294 Emit hardware floating point opcodes but use the software
295 floating point calling convention.
297 Architectures such as ARM use different registers for passing
298 floating point values depending on if they're in software mode
299 or hardware mode. softfp emits FPU instructions but uses the
300 software FP calling convention allowing softfp code to
301 interoperate with legacy software only code.
303 If in doubt, use 'software' or 'hardware' mode instead.
309 prompt "Target CFLAGS"
312 Used to add specific options when compiling libraries of the toolchain,
313 that will run on the target (eg. libc.so).
315 Note that the options above for ARCH, ABI, CPU, TUNE and FPU will be
316 automatically used. You don't need to specify them here.
318 Leave blank if you don't know better.
320 config TARGET_LDFLAGS
322 prompt "Target LDFLAGS"
325 Used to add specific options when linking libraries of the toolchain,
326 that will run on your target.
328 Leave blank if you don't know better.
332 default "" if ! ARCH_SUPPORTS_WITH_FLOAT
333 default "hard" if ARCH_FLOAT_HW
334 default "soft" if ARCH_FLOAT_SW
335 default "softfp" if ARCH_FLOAT_SOFTFP
337 source "config.gen/arch.in.2"