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_SUPPORT_ARCH
14 config ARCH_SUPPORT_ABI
15 config ARCH_SUPPORT_CPU
16 config ARCH_SUPPORT_TUNE
17 config ARCH_SUPPORT_FPU
18 config ARCH_SUPPORT_SOFTFP
20 config ARCH_DEFAULT_HAS_MMU
21 config ARCH_DEFAULT_BE
22 config ARCH_DEFAULT_LE
23 config ARCH_DEFAULT_32
24 config ARCH_DEFAULT_64
41 source "config.gen/arch.in"
43 #--------------------------------------
44 comment "Generic target options"
46 config ARCH_SUPPORTS_BOTH_MMU
49 config ARCH_DEFAULT_HAS_MMU
54 prompt "Use the MMU" if ARCH_SUPPORTS_BOTH_MMU
55 default y if ARCH_DEFAULT_HAS_MMU
57 If your architecture has an MMU and you want to use it,
60 OTOH, if you don't want to use the MMU, or your arch
61 lacks an MMU, say 'N' here.
63 Note that some architectures (eg. ARM) has variants that
64 lacks an MMU (eg. ARM Cortex-M3), while other variants
65 have one (eg. ARM Cortex-A8).
67 #--------------------------------------
68 config ARCH_SUPPORTS_BOTH_ENDIAN
71 config ARCH_DEFAULT_BE
74 config ARCH_DEFAULT_LE
80 depends on ARCH_SUPPORTS_BOTH_ENDIAN
81 default ARCH_BE if ARCH_DEFAULT_BE
82 default ARCH_LE if ARCH_DEFAULT_LE
90 prompt "Little endian"
96 depends on ARCH_SUPPORTS_BOTH_ENDIAN
97 default "big" if ARCH_BE
98 default "little" if ARCH_LE
100 #--------------------------------------
101 config ARCH_SUPPORTS_32
104 config ARCH_SUPPORTS_64
107 config ARCH_DEFAULT_32
110 config ARCH_DEFAULT_64
115 default "32" if ARCH_32
116 default "64" if ARCH_64
121 default ARCH_32 if ARCH_DEFAULT_32
122 default ARCH_64 if ARCH_DEFAULT_64
127 depends on ARCH_SUPPORTS_32
132 depends on ARCH_SUPPORTS_64
136 #--------------------------------------
137 comment "Target optimisations"
139 config ARCH_SUPPORT_ARCH
142 config ARCH_SUPPORT_ABI
145 config ARCH_SUPPORT_CPU
148 config ARCH_SUPPORT_TUNE
151 config ARCH_SUPPORT_FPU
154 config ARCH_SUPPORT_SOFTFP
159 prompt "Architecture level"
160 depends on ARCH_SUPPORT_ARCH
163 GCC uses this name to determine what kind of instructions it can emit
164 when generating assembly code. This option can be used in conjunction
165 with or instead of the ARCH_CPU option (above), or a (command-line)
168 This is the configuration flag --with-arch=XXXX, and the runtime flag
171 Pick a value from the gcc manual for your choosen gcc version and your
174 Leave blank if you don't know, or if your target architecture does not
179 prompt "Generate code for the specific ABI"
180 depends on ARCH_SUPPORT_ABI
183 Generate code for the given ABI.
185 This is the configuration flag --with-abi=XXXX, and the runtime flag
188 Pick a value from the gcc manual for your choosen gcc version and your
191 Leave blank if you don't know, or if your target architecture does not
196 prompt "Emit assembly for CPU"
197 depends on ARCH_SUPPORT_CPU
200 This specifies the name of the target processor. GCC uses this name
201 to determine what kind of instructions it can emit when generating
204 This is the configuration flag --with-cpu=XXXX, and the runtime flag
207 Pick a value from the gcc manual for your choosen gcc version and your
210 Leave blank if you don't know, or if your target architecture does not
215 prompt "Tune for CPU"
216 depends on ARCH_SUPPORT_TUNE
219 This option is very similar to the ARCH_CPU option (above), except
220 that instead of specifying the actual target processor type, and hence
221 restricting which instructions can be used, it specifies that GCC should
222 tune the performance of the code as if the target were of the type
223 specified in this option, but still choosing the instructions that it
224 will generate based on the cpu specified by the ARCH_CPU option
225 (above), or a (command-line) -mcpu= option.
227 This is the configuration flag --with-tune=XXXX, and the runtime flag
230 Pick a value from the gcc manual for your choosen gcc version and your
233 Leave blank if you don't know, or if your target architecture does not
238 prompt "Use specific FPU"
239 depends on ARCH_SUPPORT_FPU
242 On some targets (eg. ARM), you can specify the kind of FPU to emit
245 This is the configuration flag --with-fpu=XXX, and the runtime flag
248 See below wether to actually emit FP opcodes, or to emulate them.
250 Pick a value from the gcc manual for your choosen gcc version and your
253 Leave blank if you don't know, or if your target architecture does not
258 prompt "Floating point:"
262 prompt "hardware (FPU)"
264 Emit hardware floating point opcodes.
266 If you've got a processor with a FPU, then you want that.
267 If your hardware has no FPU, you still can use HW floating point, but
268 need to compile support for FPU emulation in your kernel. Needless to
269 say that emulating the FPU is /slooowwwww/...
271 One situation you'd want HW floating point without a FPU is if you get
272 binary blobs from different vendors that are compiling this way and
273 can't (don't wan't to) change.
279 Do not emit any hardware floating point opcode.
281 If your processor has no FPU, then you most probably want this, as it
282 is faster than emulating the FPU in the kernel.
284 config ARCH_FLOAT_SOFTFP
287 depends on ARCH_SUPPORT_SOFTFP
289 Emit hardware floating point opcodes but use the software
290 floating point calling convention.
292 Architectures such as ARM use different registers for passing
293 floating point values depending on if they're in software mode
294 or hardware mode. softfp emits FPU instructions but uses the
295 software FP calling convention allowing softfp code to
296 interoperate with legacy software only code.
298 If in doubt, use 'software' or 'hardware' mode instead.
304 prompt "Target CFLAGS"
307 Used to add specific options when compiling libraries of the toolchain,
308 that will run on the target (eg. libc.so).
310 Note that the options above for ARCH, ABI, CPU, TUNE and FPU will be
311 automatically used. You don't need to specify them here.
313 Leave blank if you don't know better.
315 config TARGET_LDFLAGS
317 prompt "Target LDFLAGS"
320 Used to add specific options when linking libraries of the toolchain,
321 that will run on your target.
323 Leave blank if you don't know better.
327 default "hard" if ARCH_FLOAT_HW
328 default "soft" if ARCH_FLOAT_SW
329 default "softfp" if ARCH_FLOAT_SOFTFP
331 source "config.gen/arch.in.2"