2 config BR2_ARM_CPU_HAS_NEON
5 # for some cores, NEON support is optional
6 config BR2_ARM_CPU_MAYBE_HAS_NEON
9 # for some cores, VFPv2 is optional
10 config BR2_ARM_CPU_MAYBE_HAS_VFPV2
13 config BR2_ARM_CPU_HAS_VFPV2
16 # for some cores, VFPv3 is optional
17 config BR2_ARM_CPU_MAYBE_HAS_VFPV3
19 select BR2_ARM_CPU_MAYBE_HAS_VFPV2
21 config BR2_ARM_CPU_HAS_VFPV3
23 select BR2_ARM_CPU_HAS_VFPV2
25 # for some cores, VFPv4 is optional
26 config BR2_ARM_CPU_MAYBE_HAS_VFPV4
28 select BR2_ARM_CPU_MAYBE_HAS_VFPV3
30 config BR2_ARM_CPU_HAS_VFPV4
32 select BR2_ARM_CPU_HAS_VFPV3
34 config BR2_ARM_CPU_HAS_FP_ARMV8
36 select BR2_ARM_CPU_HAS_VFPV4
38 config BR2_ARM_CPU_HAS_ARM
41 config BR2_ARM_CPU_HAS_THUMB
44 config BR2_ARM_CPU_HAS_THUMB2
47 config BR2_ARM_CPU_ARMV4
50 config BR2_ARM_CPU_ARMV5
53 config BR2_ARM_CPU_ARMV6
56 config BR2_ARM_CPU_ARMV7A
59 config BR2_ARM_CPU_ARMV7M
62 config BR2_ARM_CPU_ARMV8A
66 prompt "Target Architecture Variant"
67 default BR2_cortex_a53 if BR2_ARCH_IS_64
70 Specific CPU variant to use
76 select BR2_ARM_CPU_HAS_ARM
77 select BR2_ARM_CPU_HAS_THUMB
78 select BR2_ARM_CPU_ARMV4
79 select BR2_ARCH_HAS_MMU_OPTIONAL
82 select BR2_ARM_CPU_HAS_ARM
83 select BR2_ARM_CPU_HAS_THUMB
84 select BR2_ARM_CPU_ARMV4
85 select BR2_ARCH_HAS_MMU_OPTIONAL
88 select BR2_ARM_CPU_HAS_ARM
89 select BR2_ARM_CPU_ARMV4
90 select BR2_ARCH_HAS_MMU_OPTIONAL
92 bool "strongarm sa110/sa1100"
93 select BR2_ARM_CPU_HAS_ARM
94 select BR2_ARM_CPU_ARMV4
95 select BR2_ARCH_HAS_MMU_OPTIONAL
100 select BR2_ARM_CPU_HAS_ARM
101 select BR2_ARM_CPU_MAYBE_HAS_VFPV2
102 select BR2_ARM_CPU_HAS_THUMB
103 select BR2_ARM_CPU_ARMV5
104 select BR2_ARCH_HAS_MMU_OPTIONAL
107 select BR2_ARM_CPU_HAS_ARM
108 select BR2_ARM_CPU_ARMV5
109 select BR2_ARCH_HAS_MMU_OPTIONAL
112 select BR2_ARM_CPU_HAS_ARM
113 select BR2_ARM_CPU_HAS_THUMB
114 select BR2_ARM_CPU_ARMV5
115 select BR2_ARCH_HAS_MMU_OPTIONAL
117 comment "armv6 cores"
118 config BR2_arm1136j_s
120 select BR2_ARM_CPU_HAS_ARM
121 select BR2_ARM_CPU_HAS_THUMB
122 select BR2_ARM_CPU_ARMV6
123 select BR2_ARCH_HAS_MMU_OPTIONAL
124 config BR2_arm1136jf_s
126 select BR2_ARM_CPU_HAS_ARM
127 select BR2_ARM_CPU_HAS_VFPV2
128 select BR2_ARM_CPU_HAS_THUMB
129 select BR2_ARM_CPU_ARMV6
130 select BR2_ARCH_HAS_MMU_OPTIONAL
131 config BR2_arm1176jz_s
133 select BR2_ARM_CPU_HAS_ARM
134 select BR2_ARM_CPU_HAS_THUMB
135 select BR2_ARM_CPU_ARMV6
136 select BR2_ARCH_HAS_MMU_OPTIONAL
137 config BR2_arm1176jzf_s
139 select BR2_ARM_CPU_HAS_ARM
140 select BR2_ARM_CPU_HAS_VFPV2
141 select BR2_ARM_CPU_HAS_THUMB
142 select BR2_ARM_CPU_ARMV6
143 select BR2_ARCH_HAS_MMU_OPTIONAL
144 config BR2_arm11mpcore
146 select BR2_ARM_CPU_HAS_ARM
147 select BR2_ARM_CPU_MAYBE_HAS_VFPV2
148 select BR2_ARM_CPU_HAS_THUMB
149 select BR2_ARM_CPU_ARMV6
150 select BR2_ARCH_HAS_MMU_OPTIONAL
152 comment "armv7a cores"
155 select BR2_ARM_CPU_HAS_ARM
156 select BR2_ARM_CPU_MAYBE_HAS_NEON
157 select BR2_ARM_CPU_MAYBE_HAS_VFPV4
158 select BR2_ARM_CPU_HAS_THUMB2
159 select BR2_ARM_CPU_ARMV7A
160 select BR2_ARCH_HAS_MMU_OPTIONAL
163 select BR2_ARM_CPU_HAS_ARM
164 select BR2_ARM_CPU_HAS_NEON
165 select BR2_ARM_CPU_HAS_VFPV4
166 select BR2_ARM_CPU_HAS_THUMB2
167 select BR2_ARM_CPU_ARMV7A
168 select BR2_ARCH_HAS_MMU_OPTIONAL
171 select BR2_ARM_CPU_HAS_ARM
172 select BR2_ARM_CPU_HAS_NEON
173 select BR2_ARM_CPU_HAS_VFPV3
174 select BR2_ARM_CPU_HAS_THUMB2
175 select BR2_ARM_CPU_ARMV7A
176 select BR2_ARCH_HAS_MMU_OPTIONAL
179 select BR2_ARM_CPU_HAS_ARM
180 select BR2_ARM_CPU_MAYBE_HAS_NEON
181 select BR2_ARM_CPU_MAYBE_HAS_VFPV3
182 select BR2_ARM_CPU_HAS_THUMB2
183 select BR2_ARM_CPU_ARMV7A
184 select BR2_ARCH_HAS_MMU_OPTIONAL
185 config BR2_cortex_a12
187 select BR2_ARM_CPU_HAS_ARM
188 select BR2_ARM_CPU_HAS_NEON
189 select BR2_ARM_CPU_HAS_VFPV4
190 select BR2_ARM_CPU_HAS_THUMB2
191 select BR2_ARM_CPU_ARMV7A
192 select BR2_ARCH_HAS_MMU_OPTIONAL
193 config BR2_cortex_a15
195 select BR2_ARM_CPU_HAS_ARM
196 select BR2_ARM_CPU_HAS_NEON
197 select BR2_ARM_CPU_HAS_VFPV4
198 select BR2_ARM_CPU_HAS_THUMB2
199 select BR2_ARM_CPU_ARMV7A
200 select BR2_ARCH_HAS_MMU_OPTIONAL
201 config BR2_cortex_a15_a7
202 bool "cortex-A15/A7 big.LITTLE"
203 select BR2_ARM_CPU_HAS_ARM
204 select BR2_ARM_CPU_HAS_NEON
205 select BR2_ARM_CPU_HAS_VFPV4
206 select BR2_ARM_CPU_HAS_THUMB2
207 select BR2_ARM_CPU_ARMV7A
208 select BR2_ARCH_HAS_MMU_OPTIONAL
209 select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9
210 config BR2_cortex_a17
212 select BR2_ARM_CPU_HAS_ARM
213 select BR2_ARM_CPU_HAS_NEON
214 select BR2_ARM_CPU_HAS_VFPV4
215 select BR2_ARM_CPU_HAS_THUMB2
216 select BR2_ARM_CPU_ARMV7A
217 select BR2_ARCH_HAS_MMU_OPTIONAL
218 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
219 config BR2_cortex_a17_a7
220 bool "cortex-A17/A7 big.LITTLE"
221 select BR2_ARM_CPU_HAS_ARM
222 select BR2_ARM_CPU_HAS_NEON
223 select BR2_ARM_CPU_HAS_VFPV4
224 select BR2_ARM_CPU_HAS_THUMB2
225 select BR2_ARM_CPU_ARMV7A
226 select BR2_ARCH_HAS_MMU_OPTIONAL
227 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
230 select BR2_ARM_CPU_HAS_ARM
231 select BR2_ARM_CPU_HAS_VFPV3
232 select BR2_ARM_CPU_ARMV7A
233 select BR2_ARCH_HAS_MMU_OPTIONAL
235 comment "armv7m cores"
238 select BR2_ARM_CPU_HAS_THUMB2
239 select BR2_ARM_CPU_ARMV7M
242 select BR2_ARM_CPU_HAS_THUMB2
243 select BR2_ARM_CPU_ARMV7M
244 endif # !BR2_ARCH_IS_64
246 comment "armv8 cores"
247 config BR2_cortex_a32
249 depends on !BR2_ARCH_IS_64
250 select BR2_ARM_CPU_HAS_ARM
251 select BR2_ARM_CPU_HAS_NEON
252 select BR2_ARM_CPU_HAS_THUMB2
253 select BR2_ARM_CPU_HAS_FP_ARMV8
254 select BR2_ARM_CPU_ARMV8A
255 select BR2_ARCH_HAS_MMU_OPTIONAL
256 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
257 config BR2_cortex_a35
259 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
260 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
261 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
262 select BR2_ARM_CPU_HAS_FP_ARMV8
263 select BR2_ARM_CPU_ARMV8A
264 select BR2_ARCH_HAS_MMU_OPTIONAL
265 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
266 config BR2_cortex_a53
268 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
269 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
270 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
271 select BR2_ARM_CPU_HAS_FP_ARMV8
272 select BR2_ARM_CPU_ARMV8A
273 select BR2_ARCH_HAS_MMU_OPTIONAL
274 config BR2_cortex_a57
276 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
277 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
278 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
279 select BR2_ARM_CPU_HAS_FP_ARMV8
280 select BR2_ARM_CPU_ARMV8A
281 select BR2_ARCH_HAS_MMU_OPTIONAL
282 config BR2_cortex_a57_a53
283 bool "cortex-A57/A53 big.LITTLE"
284 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
285 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
286 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
287 select BR2_ARM_CPU_HAS_FP_ARMV8
288 select BR2_ARM_CPU_ARMV8A
289 select BR2_ARCH_HAS_MMU_OPTIONAL
290 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
291 config BR2_cortex_a72
293 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
294 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
295 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
296 select BR2_ARM_CPU_HAS_FP_ARMV8
297 select BR2_ARM_CPU_ARMV8A
298 select BR2_ARCH_HAS_MMU_OPTIONAL
299 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
300 config BR2_cortex_a72_a53
301 bool "cortex-A72/A53 big.LITTLE"
302 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
303 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
304 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
305 select BR2_ARM_CPU_HAS_FP_ARMV8
306 select BR2_ARM_CPU_ARMV8A
307 select BR2_ARCH_HAS_MMU_OPTIONAL
308 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
309 config BR2_cortex_a73
311 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
312 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
313 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
314 select BR2_ARM_CPU_HAS_FP_ARMV8
315 select BR2_ARM_CPU_ARMV8A
316 select BR2_ARCH_HAS_MMU_OPTIONAL
317 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
318 config BR2_cortex_a73_a35
319 bool "cortex-A73/A35 big.LITTLE"
320 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
321 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
322 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
323 select BR2_ARM_CPU_HAS_FP_ARMV8
324 select BR2_ARM_CPU_ARMV8A
325 select BR2_ARCH_HAS_MMU_OPTIONAL
326 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
327 config BR2_cortex_a73_a53
328 bool "cortex-A73/A53 big.LITTLE"
329 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
330 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
331 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
332 select BR2_ARM_CPU_HAS_FP_ARMV8
333 select BR2_ARM_CPU_ARMV8A
334 select BR2_ARCH_HAS_MMU_OPTIONAL
335 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
338 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
339 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
340 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
341 select BR2_ARM_CPU_HAS_FP_ARMV8
342 select BR2_ARM_CPU_ARMV8A
343 select BR2_ARCH_HAS_MMU_OPTIONAL
344 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
347 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
348 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
349 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
350 select BR2_ARM_CPU_HAS_FP_ARMV8
351 select BR2_ARM_CPU_ARMV8A
352 select BR2_ARCH_HAS_MMU_OPTIONAL
353 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
356 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
357 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
358 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
359 select BR2_ARM_CPU_HAS_FP_ARMV8
360 select BR2_ARM_CPU_ARMV8A
361 select BR2_ARCH_HAS_MMU_OPTIONAL
362 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
366 select BR2_ARM_CPU_HAS_FP_ARMV8
367 select BR2_ARM_CPU_ARMV8A
368 select BR2_ARCH_HAS_MMU_OPTIONAL
369 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
370 config BR2_thunderxt81
372 select BR2_ARM_CPU_HAS_FP_ARMV8
373 select BR2_ARM_CPU_ARMV8A
374 select BR2_ARCH_HAS_MMU_OPTIONAL
375 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
376 config BR2_thunderxt83
378 select BR2_ARM_CPU_HAS_FP_ARMV8
379 select BR2_ARM_CPU_ARMV8A
380 select BR2_ARCH_HAS_MMU_OPTIONAL
381 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
382 config BR2_thunderxt88
384 select BR2_ARM_CPU_HAS_FP_ARMV8
385 select BR2_ARM_CPU_ARMV8A
386 select BR2_ARCH_HAS_MMU_OPTIONAL
387 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
388 config BR2_thunderxt88p1
390 select BR2_ARM_CPU_HAS_FP_ARMV8
391 select BR2_ARM_CPU_ARMV8A
392 select BR2_ARCH_HAS_MMU_OPTIONAL
393 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
394 endif # BR2_ARCH_IS_64
397 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
398 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
399 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
400 select BR2_ARM_CPU_HAS_FP_ARMV8
401 select BR2_ARM_CPU_ARMV8A
402 select BR2_ARCH_HAS_MMU_OPTIONAL
403 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
406 comment "armv8.1a cores"
407 config BR2_thunderx2t99
409 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
410 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
411 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
412 select BR2_ARM_CPU_HAS_FP_ARMV8
413 select BR2_ARM_CPU_ARMV8A
414 select BR2_ARCH_HAS_MMU_OPTIONAL
415 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
416 config BR2_thunderx2t99p1
417 bool "thunderx2t99p1"
418 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
419 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
420 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
421 select BR2_ARM_CPU_HAS_FP_ARMV8
422 select BR2_ARM_CPU_ARMV8A
423 select BR2_ARCH_HAS_MMU_OPTIONAL
424 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
427 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
428 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
429 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
430 select BR2_ARM_CPU_HAS_FP_ARMV8
431 select BR2_ARM_CPU_ARMV8A
432 select BR2_ARCH_HAS_MMU_OPTIONAL
433 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
434 endif # BR2_ARCH_IS_64
437 config BR2_ARM_ENABLE_NEON
438 bool "Enable NEON SIMD extension support"
439 depends on BR2_ARM_CPU_MAYBE_HAS_NEON
440 select BR2_ARM_CPU_HAS_NEON
442 For some CPU cores, the NEON SIMD extension is optional.
443 Select this option if you are certain your particular
444 implementation has NEON support and you want to use it.
446 config BR2_ARM_ENABLE_VFP
447 bool "Enable VFP extension support"
448 depends on BR2_ARM_CPU_MAYBE_HAS_VFPV2
449 select BR2_ARM_CPU_HAS_VFPV4 if BR2_ARM_CPU_MAYBE_HAS_VFPV4
450 select BR2_ARM_CPU_HAS_VFPV3 if BR2_ARM_CPU_MAYBE_HAS_VFPV3
451 select BR2_ARM_CPU_HAS_VFPV2 if BR2_ARM_CPU_MAYBE_HAS_VFPV2
453 For some CPU cores, the VFP extension is optional. Select
454 this option if you are certain your particular
455 implementation has VFP support and you want to use it.
459 default BR2_ARM_EABIHF if BR2_ARM_CPU_HAS_VFPV2
461 depends on BR2_arm || BR2_armeb
463 Application Binary Interface to use. The Application Binary
464 Interface describes the calling conventions (how arguments
465 are passed to functions, how the return value is passed, how
466 system calls are made, etc.).
471 The EABI is currently the standard ARM ABI, which is used in
472 most projects. It supports both the 'soft' floating point
473 model (in which floating point instructions are emulated in
474 software) and the 'softfp' floating point model (in which
475 floating point instructions are executed using an hardware
476 floating point unit, but floating point arguments to
477 functions are passed in integer registers).
479 The 'softfp' floating point model is link-compatible with
480 the 'soft' floating point model, i.e you can link a library
481 built 'soft' with some other code built 'softfp'.
483 However, passing the floating point arguments in integer
484 registers is a bit inefficient, so if your ARM processor has
485 a floating point unit, and you don't have pre-compiled
486 'soft' or 'softfp' code, using the EABIhf ABI will provide
487 better floating point performances.
489 If your processor does not have a floating point unit, then
490 you must use this ABI.
492 config BR2_ARM_EABIHF
494 depends on BR2_ARM_CPU_HAS_VFPV2
496 The EABIhf is an extension of EABI which supports the 'hard'
497 floating point model. This model uses the floating point
498 unit to execute floating point instructions, and passes
499 floating point arguments in floating point registers.
501 It is more efficient than EABI for floating point related
502 workload. However, it does not allow to link against code
503 that has been pre-built for the 'soft' or 'softfp' floating
506 If your processor has a floating point unit, and you don't
507 depend on existing pre-compiled code, this option is most
508 likely the best choice.
513 prompt "Floating point strategy"
514 default BR2_ARM_FPU_FP_ARMV8 if BR2_ARM_CPU_HAS_FP_ARMV8
515 default BR2_ARM_FPU_VFPV4D16 if BR2_ARM_CPU_HAS_VFPV4
516 default BR2_ARM_FPU_VFPV3D16 if BR2_ARM_CPU_HAS_VFPV3
517 default BR2_ARM_FPU_VFPV2 if BR2_ARM_CPU_HAS_VFPV2
518 default BR2_ARM_SOFT_FLOAT if !BR2_ARM_CPU_HAS_VFPV2
520 config BR2_ARM_SOFT_FLOAT
522 depends on BR2_ARM_EABI
523 select BR2_SOFT_FLOAT
525 This option allows to use software emulated floating
526 point. It should be used for ARM cores that do not include a
527 Vector Floating Point unit, such as ARMv5 cores (ARM926 for
528 example) or certain ARMv6 cores.
530 config BR2_ARM_FPU_VFPV2
532 depends on BR2_ARM_CPU_HAS_VFPV2
534 This option allows to use the VFPv2 floating point unit, as
535 available in some ARMv5 processors (ARM926EJ-S) and some
536 ARMv6 processors (ARM1136JF-S, ARM1176JZF-S and ARM11
539 Note that this option is also safe to use for newer cores
540 such as Cortex-A, because the VFPv3 and VFPv4 units are
541 backward compatible with VFPv2.
543 config BR2_ARM_FPU_VFPV3
545 depends on BR2_ARM_CPU_HAS_VFPV3
547 This option allows to use the VFPv3 floating point unit, as
548 available in some ARMv7 processors (Cortex-A{8, 9}). This
549 option requires a VFPv3 unit that has 32 double-precision
550 registers, which is not necessarily the case in all SOCs
551 based on Cortex-A{8, 9}. If you're unsure, use VFPv3-D16
552 instead, which is guaranteed to work on all Cortex-A{8, 9}.
554 Note that this option is also safe to use for newer cores
555 that have a VFPv4 unit, because VFPv4 is backward compatible
556 with VFPv3. They must of course also have 32
557 double-precision registers.
559 config BR2_ARM_FPU_VFPV3D16
561 depends on BR2_ARM_CPU_HAS_VFPV3
563 This option allows to use the VFPv3 floating point unit, as
564 available in some ARMv7 processors (Cortex-A{8, 9}). This
565 option requires a VFPv3 unit that has 16 double-precision
566 registers, which is generally the case in all SOCs based on
567 Cortex-A{8, 9}, even though VFPv3 is technically optional on
568 Cortex-A9. This is the safest option for those cores.
570 Note that this option is also safe to use for newer cores
571 such that have a VFPv4 unit, because the VFPv4 is backward
572 compatible with VFPv3.
574 config BR2_ARM_FPU_VFPV4
576 depends on BR2_ARM_CPU_HAS_VFPV4
578 This option allows to use the VFPv4 floating point unit, as
579 available in some ARMv7 processors (Cortex-A{5, 7, 12,
580 15}). This option requires a VFPv4 unit that has 32
581 double-precision registers, which is not necessarily the
582 case in all SOCs based on Cortex-A{5, 7, 12, 15}. If you're
583 unsure, you should probably use VFPv4-D16 instead.
585 Note that if you want binary code that works on all ARMv7
586 cores, including the earlier Cortex-A{8, 9}, you should
587 instead select VFPv3.
589 config BR2_ARM_FPU_VFPV4D16
591 depends on BR2_ARM_CPU_HAS_VFPV4
593 This option allows to use the VFPv4 floating point unit, as
594 available in some ARMv7 processors (Cortex-A{5, 7, 12,
595 15}). This option requires a VFPv4 unit that has 16
596 double-precision registers, which is always available on
597 Cortex-A12 and Cortex-A15, but optional on Cortex-A5 and
600 Note that if you want binary code that works on all ARMv7
601 cores, including the earlier Cortex-A{8, 9}, you should
602 instead select VFPv3-D16.
604 config BR2_ARM_FPU_NEON
606 depends on BR2_ARM_CPU_HAS_NEON
608 This option allows to use the NEON SIMD unit, as available
609 in some ARMv7 processors, as a floating-point unit. It
610 should however be noted that using NEON for floating point
611 operations doesn't provide a complete compatibility with the
614 config BR2_ARM_FPU_NEON_VFPV4
616 depends on BR2_ARM_CPU_HAS_VFPV4
617 depends on BR2_ARM_CPU_HAS_NEON
619 This option allows to use both the VFPv4 and the NEON SIMD
620 units for floating point operations. Note that some ARMv7
621 cores do not necessarily have VFPv4 and/or NEON support, for
622 example on Cortex-A5 and Cortex-A7, support for VFPv4 and
625 config BR2_ARM_FPU_FP_ARMV8
627 depends on BR2_ARM_CPU_HAS_FP_ARMV8
629 This option allows to use the ARMv8 floating point unit.
631 config BR2_ARM_FPU_NEON_FP_ARMV8
633 depends on BR2_ARM_CPU_HAS_FP_ARMV8
634 depends on BR2_ARM_CPU_HAS_NEON
636 This option allows to use both the ARMv8 floating point unit
637 and the NEON SIMD unit for floating point operations.
642 prompt "ARM instruction set"
643 depends on BR2_arm || BR2_armeb
645 config BR2_ARM_INSTRUCTIONS_ARM
647 depends on BR2_ARM_CPU_HAS_ARM
649 This option instructs the compiler to generate regular ARM
650 instructions, that are all 32 bits wide.
652 config BR2_ARM_INSTRUCTIONS_THUMB
654 depends on BR2_ARM_CPU_HAS_THUMB
655 # Thumb-1 and VFP are not compatible
656 depends on BR2_ARM_SOFT_FLOAT
658 This option instructions the compiler to generate Thumb
659 instructions, which allows to mix 16 bits instructions and
660 32 bits instructions. This generally provides a much smaller
661 compiled binary size.
663 comment "Thumb1 is not compatible with VFP"
664 depends on BR2_ARM_CPU_HAS_THUMB
665 depends on !BR2_ARM_SOFT_FLOAT
667 config BR2_ARM_INSTRUCTIONS_THUMB2
669 depends on BR2_ARM_CPU_HAS_THUMB2
671 This option instructions the compiler to generate Thumb2
672 instructions, which allows to mix 16 bits instructions and
673 32 bits instructions. This generally provides a much smaller
674 compiled binary size.
679 default "arm" if BR2_arm
680 default "armeb" if BR2_armeb
681 default "aarch64" if BR2_aarch64
682 default "aarch64_be" if BR2_aarch64_be
685 default "LITTLE" if (BR2_arm || BR2_aarch64)
686 default "BIG" if (BR2_armeb || BR2_aarch64_be)
688 config BR2_GCC_TARGET_CPU
690 default "arm920t" if BR2_arm920t
691 default "arm922t" if BR2_arm922t
692 default "fa526" if BR2_fa526
693 default "strongarm" if BR2_strongarm
695 default "arm926ej-s" if BR2_arm926t
696 default "iwmmxt" if BR2_iwmmxt
697 default "xscale" if BR2_xscale
699 default "arm1136j-s" if BR2_arm1136j_s
700 default "arm1136jf-s" if BR2_arm1136jf_s
701 default "arm1176jz-s" if BR2_arm1176jz_s
702 default "arm1176jzf-s" if BR2_arm1176jzf_s
703 default "mpcore" if BR2_arm11mpcore && BR2_ARM_CPU_HAS_VFPV2
704 default "mpcorenovfp" if BR2_arm11mpcore
706 default "cortex-a5" if BR2_cortex_a5
707 default "cortex-a7" if BR2_cortex_a7
708 default "cortex-a8" if BR2_cortex_a8
709 default "cortex-a9" if BR2_cortex_a9
710 default "cortex-a12" if BR2_cortex_a12
711 default "cortex-a15" if BR2_cortex_a15
712 default "cortex-a15.cortex-a7" if BR2_cortex_a15_a7
713 default "cortex-a17" if BR2_cortex_a17
714 default "cortex-a17.cortex-a7" if BR2_cortex_a17_a7
715 default "marvell-pj4" if BR2_pj4
717 default "cortex-m3" if BR2_cortex_m3
718 default "cortex-m4" if BR2_cortex_m4
720 default "cortex-a32" if BR2_cortex_a32
721 default "cortex-a35" if BR2_cortex_a35
722 default "cortex-a53" if BR2_cortex_a53
723 default "cortex-a57" if BR2_cortex_a57
724 default "cortex-a57.cortex-a53" if BR2_cortex_a57_a53
725 default "cortex-a72" if BR2_cortex_a72
726 default "cortex-a72.cortex-a53" if BR2_cortex_a72_a53
727 default "cortex-a73" if BR2_cortex_a73
728 default "cortex-a73.cortex-a35" if BR2_cortex_a73_a35
729 default "cortex-a73.cortex-a53" if BR2_cortex_a73_a53
730 default "exynos-m1" if BR2_exynos_m1
731 default "falkor" if BR2_falkor
732 default "qdf24xx" if BR2_qdf24xx
733 default "thunderx" if BR2_thunderx
734 default "thunderxt81" if BR2_thunderxt81
735 default "thunderxt83" if BR2_thunderxt83
736 default "thunderxt88" if BR2_thunderxt88
737 default "thunderxt88p1" if BR2_thunderxt88p1
738 default "xgene1" if BR2_xgene1
740 default "thunderx2t99" if BR2_thunderx2t99
741 default "thunderx2t99p1" if BR2_thunderx2t99p1
742 default "vulcan" if BR2_vulcan
744 config BR2_GCC_TARGET_ABI
745 default "aapcs-linux" if BR2_arm || BR2_armeb
746 default "lp64" if BR2_aarch64 || BR2_aarch64_be
748 config BR2_GCC_TARGET_FPU
749 default "vfp" if BR2_ARM_FPU_VFPV2
750 default "vfpv3" if BR2_ARM_FPU_VFPV3
751 default "vfpv3-d16" if BR2_ARM_FPU_VFPV3D16
752 default "vfpv4" if BR2_ARM_FPU_VFPV4
753 default "vfpv4-d16" if BR2_ARM_FPU_VFPV4D16
754 default "neon" if BR2_ARM_FPU_NEON
755 default "neon-vfpv4" if BR2_ARM_FPU_NEON_VFPV4
756 default "fp-armv8" if BR2_ARM_FPU_FP_ARMV8
757 default "neon-fp-armv8" if BR2_ARM_FPU_NEON_FP_ARMV8
758 depends on BR2_arm || BR2_armeb
760 config BR2_GCC_TARGET_FLOAT_ABI
761 default "soft" if BR2_ARM_SOFT_FLOAT
762 default "softfp" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABI
763 default "hard" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABIHF
765 config BR2_GCC_TARGET_MODE
766 default "arm" if BR2_ARM_INSTRUCTIONS_ARM
767 default "thumb" if BR2_ARM_INSTRUCTIONS_THUMB || BR2_ARM_INSTRUCTIONS_THUMB2
769 config BR2_READELF_ARCH_NAME
770 default "ARM" if BR2_arm || BR2_armeb
771 default "AArch64" if BR2_aarch64 || BR2_aarch64_be