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
246 select BR2_ARM_CPU_HAS_THUMB2
247 select BR2_ARM_CPU_ARMV7M
248 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
249 endif # !BR2_ARCH_IS_64
251 comment "armv8 cores"
252 config BR2_cortex_a32
254 depends on !BR2_ARCH_IS_64
255 select BR2_ARM_CPU_HAS_ARM
256 select BR2_ARM_CPU_HAS_NEON
257 select BR2_ARM_CPU_HAS_THUMB2
258 select BR2_ARM_CPU_HAS_FP_ARMV8
259 select BR2_ARM_CPU_ARMV8A
260 select BR2_ARCH_HAS_MMU_OPTIONAL
261 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
262 config BR2_cortex_a35
264 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
265 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
266 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
267 select BR2_ARM_CPU_HAS_FP_ARMV8
268 select BR2_ARM_CPU_ARMV8A
269 select BR2_ARCH_HAS_MMU_OPTIONAL
270 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
271 config BR2_cortex_a53
273 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
274 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
275 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
276 select BR2_ARM_CPU_HAS_FP_ARMV8
277 select BR2_ARM_CPU_ARMV8A
278 select BR2_ARCH_HAS_MMU_OPTIONAL
279 config BR2_cortex_a57
281 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
282 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
283 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
284 select BR2_ARM_CPU_HAS_FP_ARMV8
285 select BR2_ARM_CPU_ARMV8A
286 select BR2_ARCH_HAS_MMU_OPTIONAL
287 config BR2_cortex_a57_a53
288 bool "cortex-A57/A53 big.LITTLE"
289 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
290 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
291 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
292 select BR2_ARM_CPU_HAS_FP_ARMV8
293 select BR2_ARM_CPU_ARMV8A
294 select BR2_ARCH_HAS_MMU_OPTIONAL
295 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
296 config BR2_cortex_a72
298 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
299 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
300 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
301 select BR2_ARM_CPU_HAS_FP_ARMV8
302 select BR2_ARM_CPU_ARMV8A
303 select BR2_ARCH_HAS_MMU_OPTIONAL
304 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
305 config BR2_cortex_a72_a53
306 bool "cortex-A72/A53 big.LITTLE"
307 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
308 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
309 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
310 select BR2_ARM_CPU_HAS_FP_ARMV8
311 select BR2_ARM_CPU_ARMV8A
312 select BR2_ARCH_HAS_MMU_OPTIONAL
313 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
314 config BR2_cortex_a73
316 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
317 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
318 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
319 select BR2_ARM_CPU_HAS_FP_ARMV8
320 select BR2_ARM_CPU_ARMV8A
321 select BR2_ARCH_HAS_MMU_OPTIONAL
322 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
323 config BR2_cortex_a73_a35
324 bool "cortex-A73/A35 big.LITTLE"
325 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
326 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
327 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
328 select BR2_ARM_CPU_HAS_FP_ARMV8
329 select BR2_ARM_CPU_ARMV8A
330 select BR2_ARCH_HAS_MMU_OPTIONAL
331 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
332 config BR2_cortex_a73_a53
333 bool "cortex-A73/A53 big.LITTLE"
334 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
335 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
336 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
337 select BR2_ARM_CPU_HAS_FP_ARMV8
338 select BR2_ARM_CPU_ARMV8A
339 select BR2_ARCH_HAS_MMU_OPTIONAL
340 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
343 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
344 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
345 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
346 select BR2_ARM_CPU_HAS_FP_ARMV8
347 select BR2_ARM_CPU_ARMV8A
348 select BR2_ARCH_HAS_MMU_OPTIONAL
349 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
352 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
353 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
354 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
355 select BR2_ARM_CPU_HAS_FP_ARMV8
356 select BR2_ARM_CPU_ARMV8A
357 select BR2_ARCH_HAS_MMU_OPTIONAL
358 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
361 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
362 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
363 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
364 select BR2_ARM_CPU_HAS_FP_ARMV8
365 select BR2_ARM_CPU_ARMV8A
366 select BR2_ARCH_HAS_MMU_OPTIONAL
367 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
371 select BR2_ARM_CPU_HAS_FP_ARMV8
372 select BR2_ARM_CPU_ARMV8A
373 select BR2_ARCH_HAS_MMU_OPTIONAL
374 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
375 config BR2_thunderxt81
377 select BR2_ARM_CPU_HAS_FP_ARMV8
378 select BR2_ARM_CPU_ARMV8A
379 select BR2_ARCH_HAS_MMU_OPTIONAL
380 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
381 config BR2_thunderxt83
383 select BR2_ARM_CPU_HAS_FP_ARMV8
384 select BR2_ARM_CPU_ARMV8A
385 select BR2_ARCH_HAS_MMU_OPTIONAL
386 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
387 config BR2_thunderxt88
389 select BR2_ARM_CPU_HAS_FP_ARMV8
390 select BR2_ARM_CPU_ARMV8A
391 select BR2_ARCH_HAS_MMU_OPTIONAL
392 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
393 config BR2_thunderxt88p1
395 select BR2_ARM_CPU_HAS_FP_ARMV8
396 select BR2_ARM_CPU_ARMV8A
397 select BR2_ARCH_HAS_MMU_OPTIONAL
398 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
399 endif # BR2_ARCH_IS_64
402 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
403 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
404 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
405 select BR2_ARM_CPU_HAS_FP_ARMV8
406 select BR2_ARM_CPU_ARMV8A
407 select BR2_ARCH_HAS_MMU_OPTIONAL
408 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
411 comment "armv8.1a cores"
412 config BR2_thunderx2t99
414 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
415 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
416 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
417 select BR2_ARM_CPU_HAS_FP_ARMV8
418 select BR2_ARM_CPU_ARMV8A
419 select BR2_ARCH_HAS_MMU_OPTIONAL
420 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
421 config BR2_thunderx2t99p1
422 bool "thunderx2t99p1"
423 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
424 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
425 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
426 select BR2_ARM_CPU_HAS_FP_ARMV8
427 select BR2_ARM_CPU_ARMV8A
428 select BR2_ARCH_HAS_MMU_OPTIONAL
429 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
432 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
433 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
434 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
435 select BR2_ARM_CPU_HAS_FP_ARMV8
436 select BR2_ARM_CPU_ARMV8A
437 select BR2_ARCH_HAS_MMU_OPTIONAL
438 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
439 endif # BR2_ARCH_IS_64
442 config BR2_ARM_ENABLE_NEON
443 bool "Enable NEON SIMD extension support"
444 depends on BR2_ARM_CPU_MAYBE_HAS_NEON
445 select BR2_ARM_CPU_HAS_NEON
447 For some CPU cores, the NEON SIMD extension is optional.
448 Select this option if you are certain your particular
449 implementation has NEON support and you want to use it.
451 config BR2_ARM_ENABLE_VFP
452 bool "Enable VFP extension support"
453 depends on BR2_ARM_CPU_MAYBE_HAS_VFPV2
454 select BR2_ARM_CPU_HAS_VFPV4 if BR2_ARM_CPU_MAYBE_HAS_VFPV4
455 select BR2_ARM_CPU_HAS_VFPV3 if BR2_ARM_CPU_MAYBE_HAS_VFPV3
456 select BR2_ARM_CPU_HAS_VFPV2 if BR2_ARM_CPU_MAYBE_HAS_VFPV2
458 For some CPU cores, the VFP extension is optional. Select
459 this option if you are certain your particular
460 implementation has VFP support and you want to use it.
464 default BR2_ARM_EABIHF if BR2_ARM_CPU_HAS_VFPV2
466 depends on BR2_arm || BR2_armeb
468 Application Binary Interface to use. The Application Binary
469 Interface describes the calling conventions (how arguments
470 are passed to functions, how the return value is passed, how
471 system calls are made, etc.).
476 The EABI is currently the standard ARM ABI, which is used in
477 most projects. It supports both the 'soft' floating point
478 model (in which floating point instructions are emulated in
479 software) and the 'softfp' floating point model (in which
480 floating point instructions are executed using an hardware
481 floating point unit, but floating point arguments to
482 functions are passed in integer registers).
484 The 'softfp' floating point model is link-compatible with
485 the 'soft' floating point model, i.e you can link a library
486 built 'soft' with some other code built 'softfp'.
488 However, passing the floating point arguments in integer
489 registers is a bit inefficient, so if your ARM processor has
490 a floating point unit, and you don't have pre-compiled
491 'soft' or 'softfp' code, using the EABIhf ABI will provide
492 better floating point performances.
494 If your processor does not have a floating point unit, then
495 you must use this ABI.
497 config BR2_ARM_EABIHF
499 depends on BR2_ARM_CPU_HAS_VFPV2
501 The EABIhf is an extension of EABI which supports the 'hard'
502 floating point model. This model uses the floating point
503 unit to execute floating point instructions, and passes
504 floating point arguments in floating point registers.
506 It is more efficient than EABI for floating point related
507 workload. However, it does not allow to link against code
508 that has been pre-built for the 'soft' or 'softfp' floating
511 If your processor has a floating point unit, and you don't
512 depend on existing pre-compiled code, this option is most
513 likely the best choice.
518 prompt "Floating point strategy"
519 default BR2_ARM_FPU_FP_ARMV8 if BR2_ARM_CPU_HAS_FP_ARMV8
520 default BR2_ARM_FPU_VFPV4D16 if BR2_ARM_CPU_HAS_VFPV4
521 default BR2_ARM_FPU_VFPV3D16 if BR2_ARM_CPU_HAS_VFPV3
522 default BR2_ARM_FPU_VFPV2 if BR2_ARM_CPU_HAS_VFPV2
523 default BR2_ARM_SOFT_FLOAT if !BR2_ARM_CPU_HAS_VFPV2
525 config BR2_ARM_SOFT_FLOAT
527 depends on BR2_ARM_EABI
528 select BR2_SOFT_FLOAT
530 This option allows to use software emulated floating
531 point. It should be used for ARM cores that do not include a
532 Vector Floating Point unit, such as ARMv5 cores (ARM926 for
533 example) or certain ARMv6 cores.
535 config BR2_ARM_FPU_VFPV2
537 depends on BR2_ARM_CPU_HAS_VFPV2
539 This option allows to use the VFPv2 floating point unit, as
540 available in some ARMv5 processors (ARM926EJ-S) and some
541 ARMv6 processors (ARM1136JF-S, ARM1176JZF-S and ARM11
544 Note that this option is also safe to use for newer cores
545 such as Cortex-A, because the VFPv3 and VFPv4 units are
546 backward compatible with VFPv2.
548 config BR2_ARM_FPU_VFPV3
550 depends on BR2_ARM_CPU_HAS_VFPV3
552 This option allows to use the VFPv3 floating point unit, as
553 available in some ARMv7 processors (Cortex-A{8, 9}). This
554 option requires a VFPv3 unit that has 32 double-precision
555 registers, which is not necessarily the case in all SOCs
556 based on Cortex-A{8, 9}. If you're unsure, use VFPv3-D16
557 instead, which is guaranteed to work on all Cortex-A{8, 9}.
559 Note that this option is also safe to use for newer cores
560 that have a VFPv4 unit, because VFPv4 is backward compatible
561 with VFPv3. They must of course also have 32
562 double-precision registers.
564 config BR2_ARM_FPU_VFPV3D16
566 depends on BR2_ARM_CPU_HAS_VFPV3
568 This option allows to use the VFPv3 floating point unit, as
569 available in some ARMv7 processors (Cortex-A{8, 9}). This
570 option requires a VFPv3 unit that has 16 double-precision
571 registers, which is generally the case in all SOCs based on
572 Cortex-A{8, 9}, even though VFPv3 is technically optional on
573 Cortex-A9. This is the safest option for those cores.
575 Note that this option is also safe to use for newer cores
576 such that have a VFPv4 unit, because the VFPv4 is backward
577 compatible with VFPv3.
579 config BR2_ARM_FPU_VFPV4
581 depends on BR2_ARM_CPU_HAS_VFPV4
583 This option allows to use the VFPv4 floating point unit, as
584 available in some ARMv7 processors (Cortex-A{5, 7, 12,
585 15}). This option requires a VFPv4 unit that has 32
586 double-precision registers, which is not necessarily the
587 case in all SOCs based on Cortex-A{5, 7, 12, 15}. If you're
588 unsure, you should probably use VFPv4-D16 instead.
590 Note that if you want binary code that works on all ARMv7
591 cores, including the earlier Cortex-A{8, 9}, you should
592 instead select VFPv3.
594 config BR2_ARM_FPU_VFPV4D16
596 depends on BR2_ARM_CPU_HAS_VFPV4
598 This option allows to use the VFPv4 floating point unit, as
599 available in some ARMv7 processors (Cortex-A{5, 7, 12,
600 15}). This option requires a VFPv4 unit that has 16
601 double-precision registers, which is always available on
602 Cortex-A12 and Cortex-A15, but optional on Cortex-A5 and
605 Note that if you want binary code that works on all ARMv7
606 cores, including the earlier Cortex-A{8, 9}, you should
607 instead select VFPv3-D16.
609 config BR2_ARM_FPU_NEON
611 depends on BR2_ARM_CPU_HAS_NEON
613 This option allows to use the NEON SIMD unit, as available
614 in some ARMv7 processors, as a floating-point unit. It
615 should however be noted that using NEON for floating point
616 operations doesn't provide a complete compatibility with the
619 config BR2_ARM_FPU_NEON_VFPV4
621 depends on BR2_ARM_CPU_HAS_VFPV4
622 depends on BR2_ARM_CPU_HAS_NEON
624 This option allows to use both the VFPv4 and the NEON SIMD
625 units for floating point operations. Note that some ARMv7
626 cores do not necessarily have VFPv4 and/or NEON support, for
627 example on Cortex-A5 and Cortex-A7, support for VFPv4 and
630 config BR2_ARM_FPU_FP_ARMV8
632 depends on BR2_ARM_CPU_HAS_FP_ARMV8
634 This option allows to use the ARMv8 floating point unit.
636 config BR2_ARM_FPU_NEON_FP_ARMV8
638 depends on BR2_ARM_CPU_HAS_FP_ARMV8
639 depends on BR2_ARM_CPU_HAS_NEON
641 This option allows to use both the ARMv8 floating point unit
642 and the NEON SIMD unit for floating point operations.
647 prompt "ARM instruction set"
648 depends on BR2_arm || BR2_armeb
650 config BR2_ARM_INSTRUCTIONS_ARM
652 depends on BR2_ARM_CPU_HAS_ARM
654 This option instructs the compiler to generate regular ARM
655 instructions, that are all 32 bits wide.
657 config BR2_ARM_INSTRUCTIONS_THUMB
659 depends on BR2_ARM_CPU_HAS_THUMB
660 # Thumb-1 and VFP are not compatible
661 depends on BR2_ARM_SOFT_FLOAT
663 This option instructions the compiler to generate Thumb
664 instructions, which allows to mix 16 bits instructions and
665 32 bits instructions. This generally provides a much smaller
666 compiled binary size.
668 comment "Thumb1 is not compatible with VFP"
669 depends on BR2_ARM_CPU_HAS_THUMB
670 depends on !BR2_ARM_SOFT_FLOAT
672 config BR2_ARM_INSTRUCTIONS_THUMB2
674 depends on BR2_ARM_CPU_HAS_THUMB2
676 This option instructions the compiler to generate Thumb2
677 instructions, which allows to mix 16 bits instructions and
678 32 bits instructions. This generally provides a much smaller
679 compiled binary size.
684 default "arm" if BR2_arm
685 default "armeb" if BR2_armeb
686 default "aarch64" if BR2_aarch64
687 default "aarch64_be" if BR2_aarch64_be
690 default "LITTLE" if (BR2_arm || BR2_aarch64)
691 default "BIG" if (BR2_armeb || BR2_aarch64_be)
693 config BR2_GCC_TARGET_CPU
695 default "arm920t" if BR2_arm920t
696 default "arm922t" if BR2_arm922t
697 default "fa526" if BR2_fa526
698 default "strongarm" if BR2_strongarm
700 default "arm926ej-s" if BR2_arm926t
701 default "iwmmxt" if BR2_iwmmxt
702 default "xscale" if BR2_xscale
704 default "arm1136j-s" if BR2_arm1136j_s
705 default "arm1136jf-s" if BR2_arm1136jf_s
706 default "arm1176jz-s" if BR2_arm1176jz_s
707 default "arm1176jzf-s" if BR2_arm1176jzf_s
708 default "mpcore" if BR2_arm11mpcore && BR2_ARM_CPU_HAS_VFPV2
709 default "mpcorenovfp" if BR2_arm11mpcore
711 default "cortex-a5" if BR2_cortex_a5
712 default "cortex-a7" if BR2_cortex_a7
713 default "cortex-a8" if BR2_cortex_a8
714 default "cortex-a9" if BR2_cortex_a9
715 default "cortex-a12" if BR2_cortex_a12
716 default "cortex-a15" if BR2_cortex_a15
717 default "cortex-a15.cortex-a7" if BR2_cortex_a15_a7
718 default "cortex-a17" if BR2_cortex_a17
719 default "cortex-a17.cortex-a7" if BR2_cortex_a17_a7
720 default "marvell-pj4" if BR2_pj4
722 default "cortex-m3" if BR2_cortex_m3
723 default "cortex-m4" if BR2_cortex_m4
724 default "cortex-m7" if BR2_cortex_m7
726 default "cortex-a32" if BR2_cortex_a32
727 default "cortex-a35" if BR2_cortex_a35
728 default "cortex-a53" if BR2_cortex_a53
729 default "cortex-a57" if BR2_cortex_a57
730 default "cortex-a57.cortex-a53" if BR2_cortex_a57_a53
731 default "cortex-a72" if BR2_cortex_a72
732 default "cortex-a72.cortex-a53" if BR2_cortex_a72_a53
733 default "cortex-a73" if BR2_cortex_a73
734 default "cortex-a73.cortex-a35" if BR2_cortex_a73_a35
735 default "cortex-a73.cortex-a53" if BR2_cortex_a73_a53
736 default "exynos-m1" if BR2_exynos_m1
737 default "falkor" if BR2_falkor
738 default "qdf24xx" if BR2_qdf24xx
739 default "thunderx" if BR2_thunderx
740 default "thunderxt81" if BR2_thunderxt81
741 default "thunderxt83" if BR2_thunderxt83
742 default "thunderxt88" if BR2_thunderxt88
743 default "thunderxt88p1" if BR2_thunderxt88p1
744 default "xgene1" if BR2_xgene1
746 default "thunderx2t99" if BR2_thunderx2t99
747 default "thunderx2t99p1" if BR2_thunderx2t99p1
748 default "vulcan" if BR2_vulcan
750 config BR2_GCC_TARGET_ABI
751 default "aapcs-linux" if BR2_arm || BR2_armeb
752 default "lp64" if BR2_aarch64 || BR2_aarch64_be
754 config BR2_GCC_TARGET_FPU
755 default "vfp" if BR2_ARM_FPU_VFPV2
756 default "vfpv3" if BR2_ARM_FPU_VFPV3
757 default "vfpv3-d16" if BR2_ARM_FPU_VFPV3D16
758 default "vfpv4" if BR2_ARM_FPU_VFPV4
759 default "vfpv4-d16" if BR2_ARM_FPU_VFPV4D16
760 default "neon" if BR2_ARM_FPU_NEON
761 default "neon-vfpv4" if BR2_ARM_FPU_NEON_VFPV4
762 default "fp-armv8" if BR2_ARM_FPU_FP_ARMV8
763 default "neon-fp-armv8" if BR2_ARM_FPU_NEON_FP_ARMV8
764 depends on BR2_arm || BR2_armeb
766 config BR2_GCC_TARGET_FLOAT_ABI
767 default "soft" if BR2_ARM_SOFT_FLOAT
768 default "softfp" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABI
769 default "hard" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABIHF
771 config BR2_GCC_TARGET_MODE
772 default "arm" if BR2_ARM_INSTRUCTIONS_ARM
773 default "thumb" if BR2_ARM_INSTRUCTIONS_THUMB || BR2_ARM_INSTRUCTIONS_THUMB2
775 config BR2_READELF_ARCH_NAME
776 default "ARM" if BR2_arm || BR2_armeb
777 default "AArch64" if BR2_aarch64 || BR2_aarch64_be