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"
69 Specific CPU variant to use
75 select BR2_ARM_CPU_HAS_ARM
76 select BR2_ARM_CPU_HAS_THUMB
77 select BR2_ARM_CPU_ARMV4
78 select BR2_ARCH_HAS_MMU_OPTIONAL
81 select BR2_ARM_CPU_HAS_ARM
82 select BR2_ARM_CPU_HAS_THUMB
83 select BR2_ARM_CPU_ARMV4
84 select BR2_ARCH_HAS_MMU_OPTIONAL
87 select BR2_ARM_CPU_HAS_ARM
88 select BR2_ARM_CPU_ARMV4
89 select BR2_ARCH_HAS_MMU_OPTIONAL
91 bool "strongarm sa110/sa1100"
92 select BR2_ARM_CPU_HAS_ARM
93 select BR2_ARM_CPU_ARMV4
94 select BR2_ARCH_HAS_MMU_OPTIONAL
99 select BR2_ARM_CPU_HAS_ARM
100 select BR2_ARM_CPU_MAYBE_HAS_VFPV2
101 select BR2_ARM_CPU_HAS_THUMB
102 select BR2_ARM_CPU_ARMV5
103 select BR2_ARCH_HAS_MMU_OPTIONAL
106 select BR2_ARM_CPU_HAS_ARM
107 select BR2_ARM_CPU_ARMV5
108 select BR2_ARCH_HAS_MMU_OPTIONAL
111 select BR2_ARM_CPU_HAS_ARM
112 select BR2_ARM_CPU_HAS_THUMB
113 select BR2_ARM_CPU_ARMV5
114 select BR2_ARCH_HAS_MMU_OPTIONAL
116 comment "armv6 cores"
117 config BR2_arm1136j_s
119 select BR2_ARM_CPU_HAS_ARM
120 select BR2_ARM_CPU_HAS_THUMB
121 select BR2_ARM_CPU_ARMV6
122 select BR2_ARCH_HAS_MMU_OPTIONAL
123 config BR2_arm1136jf_s
125 select BR2_ARM_CPU_HAS_ARM
126 select BR2_ARM_CPU_HAS_VFPV2
127 select BR2_ARM_CPU_HAS_THUMB
128 select BR2_ARM_CPU_ARMV6
129 select BR2_ARCH_HAS_MMU_OPTIONAL
130 config BR2_arm1176jz_s
132 select BR2_ARM_CPU_HAS_ARM
133 select BR2_ARM_CPU_HAS_THUMB
134 select BR2_ARM_CPU_ARMV6
135 select BR2_ARCH_HAS_MMU_OPTIONAL
136 config BR2_arm1176jzf_s
138 select BR2_ARM_CPU_HAS_ARM
139 select BR2_ARM_CPU_HAS_VFPV2
140 select BR2_ARM_CPU_HAS_THUMB
141 select BR2_ARM_CPU_ARMV6
142 select BR2_ARCH_HAS_MMU_OPTIONAL
143 config BR2_arm11mpcore
145 select BR2_ARM_CPU_HAS_ARM
146 select BR2_ARM_CPU_MAYBE_HAS_VFPV2
147 select BR2_ARM_CPU_HAS_THUMB
148 select BR2_ARM_CPU_ARMV6
149 select BR2_ARCH_HAS_MMU_OPTIONAL
151 comment "armv7a cores"
154 select BR2_ARM_CPU_HAS_ARM
155 select BR2_ARM_CPU_MAYBE_HAS_NEON
156 select BR2_ARM_CPU_MAYBE_HAS_VFPV4
157 select BR2_ARM_CPU_HAS_THUMB2
158 select BR2_ARM_CPU_ARMV7A
159 select BR2_ARCH_HAS_MMU_OPTIONAL
162 select BR2_ARM_CPU_HAS_ARM
163 select BR2_ARM_CPU_HAS_NEON
164 select BR2_ARM_CPU_HAS_VFPV4
165 select BR2_ARM_CPU_HAS_THUMB2
166 select BR2_ARM_CPU_ARMV7A
167 select BR2_ARCH_HAS_MMU_OPTIONAL
170 select BR2_ARM_CPU_HAS_ARM
171 select BR2_ARM_CPU_HAS_NEON
172 select BR2_ARM_CPU_HAS_VFPV3
173 select BR2_ARM_CPU_HAS_THUMB2
174 select BR2_ARM_CPU_ARMV7A
175 select BR2_ARCH_HAS_MMU_OPTIONAL
178 select BR2_ARM_CPU_HAS_ARM
179 select BR2_ARM_CPU_MAYBE_HAS_NEON
180 select BR2_ARM_CPU_MAYBE_HAS_VFPV3
181 select BR2_ARM_CPU_HAS_THUMB2
182 select BR2_ARM_CPU_ARMV7A
183 select BR2_ARCH_HAS_MMU_OPTIONAL
184 config BR2_cortex_a12
186 select BR2_ARM_CPU_HAS_ARM
187 select BR2_ARM_CPU_HAS_NEON
188 select BR2_ARM_CPU_HAS_VFPV4
189 select BR2_ARM_CPU_HAS_THUMB2
190 select BR2_ARM_CPU_ARMV7A
191 select BR2_ARCH_HAS_MMU_OPTIONAL
192 config BR2_cortex_a15
194 select BR2_ARM_CPU_HAS_ARM
195 select BR2_ARM_CPU_HAS_NEON
196 select BR2_ARM_CPU_HAS_VFPV4
197 select BR2_ARM_CPU_HAS_THUMB2
198 select BR2_ARM_CPU_ARMV7A
199 select BR2_ARCH_HAS_MMU_OPTIONAL
200 config BR2_cortex_a15_a7
201 bool "cortex-A15/A7 big.LITTLE"
202 select BR2_ARM_CPU_HAS_ARM
203 select BR2_ARM_CPU_HAS_NEON
204 select BR2_ARM_CPU_HAS_VFPV4
205 select BR2_ARM_CPU_HAS_THUMB2
206 select BR2_ARM_CPU_ARMV7A
207 select BR2_ARCH_HAS_MMU_OPTIONAL
208 select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9
209 config BR2_cortex_a17
211 select BR2_ARM_CPU_HAS_ARM
212 select BR2_ARM_CPU_HAS_NEON
213 select BR2_ARM_CPU_HAS_VFPV4
214 select BR2_ARM_CPU_HAS_THUMB2
215 select BR2_ARM_CPU_ARMV7A
216 select BR2_ARCH_HAS_MMU_OPTIONAL
217 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
218 config BR2_cortex_a17_a7
219 bool "cortex-A17/A7 big.LITTLE"
220 select BR2_ARM_CPU_HAS_ARM
221 select BR2_ARM_CPU_HAS_NEON
222 select BR2_ARM_CPU_HAS_VFPV4
223 select BR2_ARM_CPU_HAS_THUMB2
224 select BR2_ARM_CPU_ARMV7A
225 select BR2_ARCH_HAS_MMU_OPTIONAL
226 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
229 select BR2_ARM_CPU_HAS_ARM
230 select BR2_ARM_CPU_HAS_VFPV3
231 select BR2_ARM_CPU_ARMV7A
232 select BR2_ARCH_HAS_MMU_OPTIONAL
234 comment "armv7m cores"
237 select BR2_ARM_CPU_HAS_THUMB2
238 select BR2_ARM_CPU_ARMV7M
241 select BR2_ARM_CPU_HAS_THUMB2
242 select BR2_ARM_CPU_ARMV7M
243 endif # !BR2_ARCH_IS_64
245 comment "armv8 cores"
246 config BR2_cortex_a32
248 depends on !BR2_ARCH_IS_64
249 select BR2_ARM_CPU_HAS_ARM
250 select BR2_ARM_CPU_HAS_NEON
251 select BR2_ARM_CPU_HAS_THUMB2
252 select BR2_ARM_CPU_HAS_FP_ARMV8
253 select BR2_ARM_CPU_ARMV8A
254 select BR2_ARCH_HAS_MMU_OPTIONAL
255 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
256 config BR2_cortex_a35
258 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
259 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
260 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
261 select BR2_ARM_CPU_HAS_FP_ARMV8
262 select BR2_ARM_CPU_ARMV8A
263 select BR2_ARCH_HAS_MMU_OPTIONAL
264 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
265 config BR2_cortex_a53
267 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
268 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
269 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
270 select BR2_ARM_CPU_HAS_FP_ARMV8
271 select BR2_ARM_CPU_ARMV8A
272 select BR2_ARCH_HAS_MMU_OPTIONAL
273 config BR2_cortex_a57
275 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
276 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
277 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
278 select BR2_ARM_CPU_HAS_FP_ARMV8
279 select BR2_ARM_CPU_ARMV8A
280 select BR2_ARCH_HAS_MMU_OPTIONAL
281 config BR2_cortex_a57_a53
282 bool "cortex-A57/A53 big.LITTLE"
283 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
284 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
285 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
286 select BR2_ARM_CPU_HAS_FP_ARMV8
287 select BR2_ARM_CPU_ARMV8A
288 select BR2_ARCH_HAS_MMU_OPTIONAL
289 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
290 config BR2_cortex_a72
292 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
293 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
294 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
295 select BR2_ARM_CPU_HAS_FP_ARMV8
296 select BR2_ARM_CPU_ARMV8A
297 select BR2_ARCH_HAS_MMU_OPTIONAL
298 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
299 config BR2_cortex_a72_a53
300 bool "cortex-A72/A53 big.LITTLE"
301 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
302 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
303 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
304 select BR2_ARM_CPU_HAS_FP_ARMV8
305 select BR2_ARM_CPU_ARMV8A
306 select BR2_ARCH_HAS_MMU_OPTIONAL
307 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
308 config BR2_cortex_a73
310 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
311 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
312 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
313 select BR2_ARM_CPU_HAS_FP_ARMV8
314 select BR2_ARM_CPU_ARMV8A
315 select BR2_ARCH_HAS_MMU_OPTIONAL
316 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
317 config BR2_cortex_a73_a35
318 bool "cortex-A73/A35 big.LITTLE"
319 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
320 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
321 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
322 select BR2_ARM_CPU_HAS_FP_ARMV8
323 select BR2_ARM_CPU_ARMV8A
324 select BR2_ARCH_HAS_MMU_OPTIONAL
325 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
326 config BR2_cortex_a73_a53
327 bool "cortex-A73/A53 big.LITTLE"
328 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
329 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
330 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
331 select BR2_ARM_CPU_HAS_FP_ARMV8
332 select BR2_ARM_CPU_ARMV8A
333 select BR2_ARCH_HAS_MMU_OPTIONAL
334 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
337 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
338 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
339 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
340 select BR2_ARM_CPU_HAS_FP_ARMV8
341 select BR2_ARM_CPU_ARMV8A
342 select BR2_ARCH_HAS_MMU_OPTIONAL
343 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
346 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
347 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
348 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
349 select BR2_ARM_CPU_HAS_FP_ARMV8
350 select BR2_ARM_CPU_ARMV8A
351 select BR2_ARCH_HAS_MMU_OPTIONAL
352 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
355 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
356 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
357 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
358 select BR2_ARM_CPU_HAS_FP_ARMV8
359 select BR2_ARM_CPU_ARMV8A
360 select BR2_ARCH_HAS_MMU_OPTIONAL
361 select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
365 select BR2_ARM_CPU_HAS_FP_ARMV8
366 select BR2_ARM_CPU_ARMV8A
367 select BR2_ARCH_HAS_MMU_OPTIONAL
368 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
369 config BR2_thunderxt81
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_7
375 config BR2_thunderxt83
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_thunderxt88
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_thunderxt88p1
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 endif # BR2_ARCH_IS_64
396 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
397 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
398 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
399 select BR2_ARM_CPU_HAS_FP_ARMV8
400 select BR2_ARM_CPU_ARMV8A
401 select BR2_ARCH_HAS_MMU_OPTIONAL
402 select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
405 comment "armv8.1a cores"
406 config BR2_thunderx2t99
408 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
409 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
410 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
411 select BR2_ARM_CPU_HAS_FP_ARMV8
412 select BR2_ARM_CPU_ARMV8A
413 select BR2_ARCH_HAS_MMU_OPTIONAL
414 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
415 config BR2_thunderx2t99p1
416 bool "thunderx2t99p1"
417 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
418 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
419 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
420 select BR2_ARM_CPU_HAS_FP_ARMV8
421 select BR2_ARM_CPU_ARMV8A
422 select BR2_ARCH_HAS_MMU_OPTIONAL
423 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
426 select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
427 select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
428 select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
429 select BR2_ARM_CPU_HAS_FP_ARMV8
430 select BR2_ARM_CPU_ARMV8A
431 select BR2_ARCH_HAS_MMU_OPTIONAL
432 select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
433 endif # BR2_ARCH_IS_64
436 config BR2_ARM_ENABLE_NEON
437 bool "Enable NEON SIMD extension support"
438 depends on BR2_ARM_CPU_MAYBE_HAS_NEON
439 select BR2_ARM_CPU_HAS_NEON
441 For some CPU cores, the NEON SIMD extension is optional.
442 Select this option if you are certain your particular
443 implementation has NEON support and you want to use it.
445 config BR2_ARM_ENABLE_VFP
446 bool "Enable VFP extension support"
447 depends on BR2_ARM_CPU_MAYBE_HAS_VFPV2
448 select BR2_ARM_CPU_HAS_VFPV4 if BR2_ARM_CPU_MAYBE_HAS_VFPV4
449 select BR2_ARM_CPU_HAS_VFPV3 if BR2_ARM_CPU_MAYBE_HAS_VFPV3
450 select BR2_ARM_CPU_HAS_VFPV2 if BR2_ARM_CPU_MAYBE_HAS_VFPV2
452 For some CPU cores, the VFP extension is optional. Select
453 this option if you are certain your particular
454 implementation has VFP support and you want to use it.
458 depends on BR2_arm || BR2_armeb
459 default BR2_ARM_EABIHF if BR2_ARM_CPU_HAS_VFPV2
462 Application Binary Interface to use. The Application Binary
463 Interface describes the calling conventions (how arguments
464 are passed to functions, how the return value is passed, how
465 system calls are made, etc.).
470 The EABI is currently the standard ARM ABI, which is used in
471 most projects. It supports both the 'soft' floating point
472 model (in which floating point instructions are emulated in
473 software) and the 'softfp' floating point model (in which
474 floating point instructions are executed using an hardware
475 floating point unit, but floating point arguments to
476 functions are passed in integer registers).
478 The 'softfp' floating point model is link-compatible with
479 the 'soft' floating point model, i.e you can link a library
480 built 'soft' with some other code built 'softfp'.
482 However, passing the floating point arguments in integer
483 registers is a bit inefficient, so if your ARM processor has
484 a floating point unit, and you don't have pre-compiled
485 'soft' or 'softfp' code, using the EABIhf ABI will provide
486 better floating point performances.
488 If your processor does not have a floating point unit, then
489 you must use this ABI.
491 config BR2_ARM_EABIHF
493 depends on BR2_ARM_CPU_HAS_VFPV2
495 The EABIhf is an extension of EABI which supports the 'hard'
496 floating point model. This model uses the floating point
497 unit to execute floating point instructions, and passes
498 floating point arguments in floating point registers.
500 It is more efficient than EABI for floating point related
501 workload. However, it does not allow to link against code
502 that has been pre-built for the 'soft' or 'softfp' floating
505 If your processor has a floating point unit, and you don't
506 depend on existing pre-compiled code, this option is most
507 likely the best choice.
512 prompt "Floating point strategy"
513 default BR2_ARM_FPU_FP_ARMV8 if BR2_ARM_CPU_HAS_FP_ARMV8
514 default BR2_ARM_FPU_VFPV4D16 if BR2_ARM_CPU_HAS_VFPV4
515 default BR2_ARM_FPU_VFPV3D16 if BR2_ARM_CPU_HAS_VFPV3
516 default BR2_ARM_FPU_VFPV2 if BR2_ARM_CPU_HAS_VFPV2
517 default BR2_ARM_SOFT_FLOAT if !BR2_ARM_CPU_HAS_VFPV2
519 config BR2_ARM_SOFT_FLOAT
521 depends on BR2_ARM_EABI
522 select BR2_SOFT_FLOAT
524 This option allows to use software emulated floating
525 point. It should be used for ARM cores that do not include a
526 Vector Floating Point unit, such as ARMv5 cores (ARM926 for
527 example) or certain ARMv6 cores.
529 config BR2_ARM_FPU_VFPV2
531 depends on BR2_ARM_CPU_HAS_VFPV2
533 This option allows to use the VFPv2 floating point unit, as
534 available in some ARMv5 processors (ARM926EJ-S) and some
535 ARMv6 processors (ARM1136JF-S, ARM1176JZF-S and ARM11
538 Note that this option is also safe to use for newer cores
539 such as Cortex-A, because the VFPv3 and VFPv4 units are
540 backward compatible with VFPv2.
542 config BR2_ARM_FPU_VFPV3
544 depends on BR2_ARM_CPU_HAS_VFPV3
546 This option allows to use the VFPv3 floating point unit, as
547 available in some ARMv7 processors (Cortex-A{8, 9}). This
548 option requires a VFPv3 unit that has 32 double-precision
549 registers, which is not necessarily the case in all SOCs
550 based on Cortex-A{8, 9}. If you're unsure, use VFPv3-D16
551 instead, which is guaranteed to work on all Cortex-A{8, 9}.
553 Note that this option is also safe to use for newer cores
554 that have a VFPv4 unit, because VFPv4 is backward compatible
555 with VFPv3. They must of course also have 32
556 double-precision registers.
558 config BR2_ARM_FPU_VFPV3D16
560 depends on BR2_ARM_CPU_HAS_VFPV3
562 This option allows to use the VFPv3 floating point unit, as
563 available in some ARMv7 processors (Cortex-A{8, 9}). This
564 option requires a VFPv3 unit that has 16 double-precision
565 registers, which is generally the case in all SOCs based on
566 Cortex-A{8, 9}, even though VFPv3 is technically optional on
567 Cortex-A9. This is the safest option for those cores.
569 Note that this option is also safe to use for newer cores
570 such that have a VFPv4 unit, because the VFPv4 is backward
571 compatible with VFPv3.
573 config BR2_ARM_FPU_VFPV4
575 depends on BR2_ARM_CPU_HAS_VFPV4
577 This option allows to use the VFPv4 floating point unit, as
578 available in some ARMv7 processors (Cortex-A{5, 7, 12,
579 15}). This option requires a VFPv4 unit that has 32
580 double-precision registers, which is not necessarily the
581 case in all SOCs based on Cortex-A{5, 7, 12, 15}. If you're
582 unsure, you should probably use VFPv4-D16 instead.
584 Note that if you want binary code that works on all ARMv7
585 cores, including the earlier Cortex-A{8, 9}, you should
586 instead select VFPv3.
588 config BR2_ARM_FPU_VFPV4D16
590 depends on BR2_ARM_CPU_HAS_VFPV4
592 This option allows to use the VFPv4 floating point unit, as
593 available in some ARMv7 processors (Cortex-A{5, 7, 12,
594 15}). This option requires a VFPv4 unit that has 16
595 double-precision registers, which is always available on
596 Cortex-A12 and Cortex-A15, but optional on Cortex-A5 and
599 Note that if you want binary code that works on all ARMv7
600 cores, including the earlier Cortex-A{8, 9}, you should
601 instead select VFPv3-D16.
603 config BR2_ARM_FPU_NEON
605 depends on BR2_ARM_CPU_HAS_NEON
607 This option allows to use the NEON SIMD unit, as available
608 in some ARMv7 processors, as a floating-point unit. It
609 should however be noted that using NEON for floating point
610 operations doesn't provide a complete compatibility with the
613 config BR2_ARM_FPU_NEON_VFPV4
615 depends on BR2_ARM_CPU_HAS_VFPV4
616 depends on BR2_ARM_CPU_HAS_NEON
618 This option allows to use both the VFPv4 and the NEON SIMD
619 units for floating point operations. Note that some ARMv7
620 cores do not necessarily have VFPv4 and/or NEON support, for
621 example on Cortex-A5 and Cortex-A7, support for VFPv4 and
624 config BR2_ARM_FPU_FP_ARMV8
626 depends on BR2_ARM_CPU_HAS_FP_ARMV8
628 This option allows to use the ARMv8 floating point unit.
630 config BR2_ARM_FPU_NEON_FP_ARMV8
632 depends on BR2_ARM_CPU_HAS_FP_ARMV8
633 depends on BR2_ARM_CPU_HAS_NEON
635 This option allows to use both the ARMv8 floating point unit
636 and the NEON SIMD unit for floating point operations.
641 prompt "ARM instruction set"
642 depends on BR2_arm || BR2_armeb
644 config BR2_ARM_INSTRUCTIONS_ARM
646 depends on BR2_ARM_CPU_HAS_ARM
648 This option instructs the compiler to generate regular ARM
649 instructions, that are all 32 bits wide.
651 config BR2_ARM_INSTRUCTIONS_THUMB
653 depends on BR2_ARM_CPU_HAS_THUMB
654 # Thumb-1 and VFP are not compatible
655 depends on BR2_ARM_SOFT_FLOAT
657 This option instructions the compiler to generate Thumb
658 instructions, which allows to mix 16 bits instructions and
659 32 bits instructions. This generally provides a much smaller
660 compiled binary size.
662 comment "Thumb1 is not compatible with VFP"
663 depends on BR2_ARM_CPU_HAS_THUMB
664 depends on !BR2_ARM_SOFT_FLOAT
666 config BR2_ARM_INSTRUCTIONS_THUMB2
668 depends on BR2_ARM_CPU_HAS_THUMB2
670 This option instructions the compiler to generate Thumb2
671 instructions, which allows to mix 16 bits instructions and
672 32 bits instructions. This generally provides a much smaller
673 compiled binary size.
678 default "arm" if BR2_arm
679 default "armeb" if BR2_armeb
680 default "aarch64" if BR2_aarch64
681 default "aarch64_be" if BR2_aarch64_be
684 default "LITTLE" if (BR2_arm || BR2_aarch64)
685 default "BIG" if (BR2_armeb || BR2_aarch64_be)
687 config BR2_GCC_TARGET_CPU
689 default "arm920t" if BR2_arm920t
690 default "arm922t" if BR2_arm922t
691 default "fa526" if BR2_fa526
692 default "strongarm" if BR2_strongarm
694 default "arm926ej-s" if BR2_arm926t
695 default "iwmmxt" if BR2_iwmmxt
696 default "xscale" if BR2_xscale
698 default "arm1136j-s" if BR2_arm1136j_s
699 default "arm1136jf-s" if BR2_arm1136jf_s
700 default "arm1176jz-s" if BR2_arm1176jz_s
701 default "arm1176jzf-s" if BR2_arm1176jzf_s
702 default "mpcore" if BR2_arm11mpcore && BR2_ARM_CPU_HAS_VFPV2
703 default "mpcorenovfp" if BR2_arm11mpcore
705 default "cortex-a5" if BR2_cortex_a5
706 default "cortex-a7" if BR2_cortex_a7
707 default "cortex-a8" if BR2_cortex_a8
708 default "cortex-a9" if BR2_cortex_a9
709 default "cortex-a12" if BR2_cortex_a12
710 default "cortex-a15" if BR2_cortex_a15
711 default "cortex-a15.cortex-a7" if BR2_cortex_a15_a7
712 default "cortex-a17" if BR2_cortex_a17
713 default "cortex-a17.cortex-a7" if BR2_cortex_a17_a7
714 default "marvell-pj4" if BR2_pj4
716 default "cortex-m3" if BR2_cortex_m3
717 default "cortex-m4" if BR2_cortex_m4
719 default "cortex-a32" if BR2_cortex_a32
720 default "cortex-a35" if BR2_cortex_a35
721 default "cortex-a53" if BR2_cortex_a53
722 default "cortex-a57" if BR2_cortex_a57
723 default "cortex-a57.cortex-a53" if BR2_cortex_a57_a53
724 default "cortex-a72" if BR2_cortex_a72
725 default "cortex-a72.cortex-a53" if BR2_cortex_a72_a53
726 default "cortex-a73" if BR2_cortex_a73
727 default "cortex-a73.cortex-a35" if BR2_cortex_a73_a35
728 default "cortex-a73.cortex-a53" if BR2_cortex_a73_a53
729 default "exynos-m1" if BR2_exynos_m1
730 default "falkor" if BR2_falkor
731 default "qdf24xx" if BR2_qdf24xx
732 default "thunderx" if BR2_thunderx
733 default "thunderxt81" if BR2_thunderxt81
734 default "thunderxt83" if BR2_thunderxt83
735 default "thunderxt88" if BR2_thunderxt88
736 default "thunderxt88p1" if BR2_thunderxt88p1
737 default "xgene1" if BR2_xgene1
739 default "thunderx2t99" if BR2_thunderx2t99
740 default "thunderx2t99p1" if BR2_thunderx2t99p1
741 default "vulcan" if BR2_vulcan
743 config BR2_GCC_TARGET_ABI
744 default "aapcs-linux" if BR2_arm || BR2_armeb
745 default "lp64" if BR2_aarch64 || BR2_aarch64_be
747 config BR2_GCC_TARGET_FPU
748 depends on BR2_arm || BR2_armeb
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
759 config BR2_GCC_TARGET_FLOAT_ABI
760 default "soft" if BR2_ARM_SOFT_FLOAT
761 default "softfp" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABI
762 default "hard" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABIHF
764 config BR2_GCC_TARGET_MODE
765 default "arm" if BR2_ARM_INSTRUCTIONS_ARM
766 default "thumb" if BR2_ARM_INSTRUCTIONS_THUMB || BR2_ARM_INSTRUCTIONS_THUMB2
768 config BR2_READELF_ARCH_NAME
769 default "ARM" if BR2_arm || BR2_armeb
770 default "AArch64" if BR2_aarch64 || BR2_aarch64_be