Config.in.arm 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607
  1. # arm cpu features
  2. config BR2_ARM_CPU_HAS_NEON
  3. bool
  4. # for some cores, NEON support is optional
  5. config BR2_ARM_CPU_MAYBE_HAS_NEON
  6. bool
  7. # for some cores, VFPv2 is optional
  8. config BR2_ARM_CPU_MAYBE_HAS_VFPV2
  9. bool
  10. config BR2_ARM_CPU_HAS_VFPV2
  11. bool
  12. # for some cores, VFPv3 is optional
  13. config BR2_ARM_CPU_MAYBE_HAS_VFPV3
  14. bool
  15. select BR2_ARM_CPU_MAYBE_HAS_VFPV2
  16. config BR2_ARM_CPU_HAS_VFPV3
  17. bool
  18. select BR2_ARM_CPU_HAS_VFPV2
  19. # for some cores, VFPv4 is optional
  20. config BR2_ARM_CPU_MAYBE_HAS_VFPV4
  21. bool
  22. select BR2_ARM_CPU_MAYBE_HAS_VFPV3
  23. config BR2_ARM_CPU_HAS_VFPV4
  24. bool
  25. select BR2_ARM_CPU_HAS_VFPV3
  26. config BR2_ARM_CPU_HAS_FP_ARMV8
  27. bool
  28. select BR2_ARM_CPU_HAS_VFPV4
  29. config BR2_ARM_CPU_HAS_ARM
  30. bool
  31. config BR2_ARM_CPU_HAS_THUMB
  32. bool
  33. config BR2_ARM_CPU_HAS_THUMB2
  34. bool
  35. config BR2_ARM_CPU_ARMV4
  36. bool
  37. config BR2_ARM_CPU_ARMV5
  38. bool
  39. config BR2_ARM_CPU_ARMV6
  40. bool
  41. config BR2_ARM_CPU_ARMV7A
  42. bool
  43. config BR2_ARM_CPU_ARMV7M
  44. bool
  45. config BR2_ARM_CPU_ARMV8
  46. bool
  47. choice
  48. prompt "Target Architecture Variant"
  49. default BR2_arm926t
  50. help
  51. Specific CPU variant to use
  52. if !BR2_ARCH_IS_64
  53. comment "armv4 cores"
  54. config BR2_arm920t
  55. bool "arm920t"
  56. select BR2_ARM_CPU_HAS_ARM
  57. select BR2_ARM_CPU_HAS_THUMB
  58. select BR2_ARM_CPU_ARMV4
  59. select BR2_ARCH_HAS_MMU_OPTIONAL
  60. config BR2_arm922t
  61. bool "arm922t"
  62. select BR2_ARM_CPU_HAS_ARM
  63. select BR2_ARM_CPU_HAS_THUMB
  64. select BR2_ARM_CPU_ARMV4
  65. select BR2_ARCH_HAS_MMU_OPTIONAL
  66. config BR2_fa526
  67. bool "fa526/626"
  68. select BR2_ARM_CPU_HAS_ARM
  69. select BR2_ARM_CPU_ARMV4
  70. select BR2_ARCH_HAS_MMU_OPTIONAL
  71. config BR2_strongarm
  72. bool "strongarm sa110/sa1100"
  73. select BR2_ARM_CPU_HAS_ARM
  74. select BR2_ARM_CPU_ARMV4
  75. select BR2_ARCH_HAS_MMU_OPTIONAL
  76. comment "armv5 cores"
  77. config BR2_arm926t
  78. bool "arm926t"
  79. select BR2_ARM_CPU_HAS_ARM
  80. select BR2_ARM_CPU_MAYBE_HAS_VFPV2
  81. select BR2_ARM_CPU_HAS_THUMB
  82. select BR2_ARM_CPU_ARMV5
  83. select BR2_ARCH_HAS_MMU_OPTIONAL
  84. config BR2_iwmmxt
  85. bool "iwmmxt"
  86. select BR2_ARM_CPU_HAS_ARM
  87. select BR2_ARM_CPU_ARMV5
  88. select BR2_ARCH_HAS_MMU_OPTIONAL
  89. config BR2_xscale
  90. bool "xscale"
  91. select BR2_ARM_CPU_HAS_ARM
  92. select BR2_ARM_CPU_HAS_THUMB
  93. select BR2_ARM_CPU_ARMV5
  94. select BR2_ARCH_HAS_MMU_OPTIONAL
  95. comment "armv6 cores"
  96. config BR2_arm1136j_s
  97. bool "arm1136j-s"
  98. select BR2_ARM_CPU_HAS_ARM
  99. select BR2_ARM_CPU_HAS_THUMB
  100. select BR2_ARM_CPU_ARMV6
  101. select BR2_ARCH_HAS_MMU_OPTIONAL
  102. config BR2_arm1136jf_s
  103. bool "arm1136jf-s"
  104. select BR2_ARM_CPU_HAS_ARM
  105. select BR2_ARM_CPU_HAS_VFPV2
  106. select BR2_ARM_CPU_HAS_THUMB
  107. select BR2_ARM_CPU_ARMV6
  108. select BR2_ARCH_HAS_MMU_OPTIONAL
  109. config BR2_arm1176jz_s
  110. bool "arm1176jz-s"
  111. select BR2_ARM_CPU_HAS_ARM
  112. select BR2_ARM_CPU_HAS_THUMB
  113. select BR2_ARM_CPU_ARMV6
  114. select BR2_ARCH_HAS_MMU_OPTIONAL
  115. config BR2_arm1176jzf_s
  116. bool "arm1176jzf-s"
  117. select BR2_ARM_CPU_HAS_ARM
  118. select BR2_ARM_CPU_HAS_VFPV2
  119. select BR2_ARM_CPU_HAS_THUMB
  120. select BR2_ARM_CPU_ARMV6
  121. select BR2_ARCH_HAS_MMU_OPTIONAL
  122. config BR2_arm11mpcore
  123. bool "mpcore"
  124. select BR2_ARM_CPU_HAS_ARM
  125. select BR2_ARM_CPU_MAYBE_HAS_VFPV2
  126. select BR2_ARM_CPU_HAS_THUMB
  127. select BR2_ARM_CPU_ARMV6
  128. select BR2_ARCH_HAS_MMU_OPTIONAL
  129. comment "armv7a cores"
  130. config BR2_cortex_a5
  131. bool "cortex-A5"
  132. select BR2_ARM_CPU_HAS_ARM
  133. select BR2_ARM_CPU_MAYBE_HAS_NEON
  134. select BR2_ARM_CPU_MAYBE_HAS_VFPV4
  135. select BR2_ARM_CPU_HAS_THUMB2
  136. select BR2_ARM_CPU_ARMV7A
  137. select BR2_ARCH_HAS_MMU_OPTIONAL
  138. config BR2_cortex_a7
  139. bool "cortex-A7"
  140. select BR2_ARM_CPU_HAS_ARM
  141. select BR2_ARM_CPU_HAS_NEON
  142. select BR2_ARM_CPU_HAS_VFPV4
  143. select BR2_ARM_CPU_HAS_THUMB2
  144. select BR2_ARM_CPU_ARMV7A
  145. select BR2_ARCH_HAS_MMU_OPTIONAL
  146. config BR2_cortex_a8
  147. bool "cortex-A8"
  148. select BR2_ARM_CPU_HAS_ARM
  149. select BR2_ARM_CPU_HAS_NEON
  150. select BR2_ARM_CPU_HAS_VFPV3
  151. select BR2_ARM_CPU_HAS_THUMB2
  152. select BR2_ARM_CPU_ARMV7A
  153. select BR2_ARCH_HAS_MMU_OPTIONAL
  154. config BR2_cortex_a9
  155. bool "cortex-A9"
  156. select BR2_ARM_CPU_HAS_ARM
  157. select BR2_ARM_CPU_MAYBE_HAS_NEON
  158. select BR2_ARM_CPU_MAYBE_HAS_VFPV3
  159. select BR2_ARM_CPU_HAS_THUMB2
  160. select BR2_ARM_CPU_ARMV7A
  161. select BR2_ARCH_HAS_MMU_OPTIONAL
  162. config BR2_cortex_a12
  163. bool "cortex-A12"
  164. select BR2_ARM_CPU_HAS_ARM
  165. select BR2_ARM_CPU_HAS_NEON
  166. select BR2_ARM_CPU_HAS_VFPV4
  167. select BR2_ARM_CPU_HAS_THUMB2
  168. select BR2_ARM_CPU_ARMV7A
  169. select BR2_ARCH_HAS_MMU_OPTIONAL
  170. config BR2_cortex_a15
  171. bool "cortex-A15"
  172. select BR2_ARM_CPU_HAS_ARM
  173. select BR2_ARM_CPU_HAS_NEON
  174. select BR2_ARM_CPU_HAS_VFPV4
  175. select BR2_ARM_CPU_HAS_THUMB2
  176. select BR2_ARM_CPU_ARMV7A
  177. select BR2_ARCH_HAS_MMU_OPTIONAL
  178. config BR2_cortex_a15_a7
  179. bool "cortex-A15/A7 big.LITTLE"
  180. select BR2_ARM_CPU_HAS_ARM
  181. select BR2_ARM_CPU_HAS_NEON
  182. select BR2_ARM_CPU_HAS_VFPV4
  183. select BR2_ARM_CPU_HAS_THUMB2
  184. select BR2_ARM_CPU_ARMV7A
  185. select BR2_ARCH_HAS_MMU_OPTIONAL
  186. select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9
  187. config BR2_cortex_a17
  188. bool "cortex-A17"
  189. select BR2_ARM_CPU_HAS_ARM
  190. select BR2_ARM_CPU_HAS_NEON
  191. select BR2_ARM_CPU_HAS_VFPV4
  192. select BR2_ARM_CPU_HAS_THUMB2
  193. select BR2_ARM_CPU_ARMV7A
  194. select BR2_ARCH_HAS_MMU_OPTIONAL
  195. select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
  196. config BR2_cortex_a17_a7
  197. bool "cortex-A17/A7 big.LITTLE"
  198. select BR2_ARM_CPU_HAS_ARM
  199. select BR2_ARM_CPU_HAS_NEON
  200. select BR2_ARM_CPU_HAS_VFPV4
  201. select BR2_ARM_CPU_HAS_THUMB2
  202. select BR2_ARM_CPU_ARMV7A
  203. select BR2_ARCH_HAS_MMU_OPTIONAL
  204. select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
  205. config BR2_pj4
  206. bool "pj4"
  207. select BR2_ARM_CPU_HAS_ARM
  208. select BR2_ARM_CPU_HAS_VFPV3
  209. select BR2_ARM_CPU_ARMV7A
  210. select BR2_ARCH_HAS_MMU_OPTIONAL
  211. comment "armv7m cores"
  212. config BR2_cortex_m3
  213. bool "cortex-M3"
  214. select BR2_ARM_CPU_HAS_THUMB2
  215. select BR2_ARM_CPU_ARMV7M
  216. config BR2_cortex_m4
  217. bool "cortex-M4"
  218. select BR2_ARM_CPU_HAS_THUMB2
  219. select BR2_ARM_CPU_ARMV7M
  220. endif # !BR2_ARCH_IS_64
  221. comment "armv8 cores"
  222. config BR2_cortex_a53
  223. bool "cortex-A53"
  224. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  225. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  226. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  227. select BR2_ARM_CPU_HAS_FP_ARMV8
  228. select BR2_ARM_CPU_ARMV8
  229. select BR2_ARCH_HAS_MMU_OPTIONAL
  230. config BR2_cortex_a57
  231. bool "cortex-A57"
  232. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  233. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  234. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  235. select BR2_ARM_CPU_HAS_FP_ARMV8
  236. select BR2_ARM_CPU_ARMV8
  237. select BR2_ARCH_HAS_MMU_OPTIONAL
  238. config BR2_cortex_a57_a53
  239. bool "cortex-A57/A53 big.LITTLE"
  240. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  241. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  242. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  243. select BR2_ARM_CPU_HAS_FP_ARMV8
  244. select BR2_ARM_CPU_ARMV8
  245. select BR2_ARCH_HAS_MMU_OPTIONAL
  246. select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
  247. config BR2_cortex_a72
  248. bool "cortex-A72"
  249. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  250. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  251. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  252. select BR2_ARM_CPU_HAS_FP_ARMV8
  253. select BR2_ARM_CPU_ARMV8
  254. select BR2_ARCH_HAS_MMU_OPTIONAL
  255. select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
  256. config BR2_cortex_a72_a53
  257. bool "cortex-A72/A53 big.LITTLE"
  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_ARMV8
  263. select BR2_ARCH_HAS_MMU_OPTIONAL
  264. select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
  265. endchoice
  266. config BR2_ARM_ENABLE_NEON
  267. bool "Enable NEON SIMD extension support"
  268. depends on BR2_ARM_CPU_MAYBE_HAS_NEON
  269. select BR2_ARM_CPU_HAS_NEON
  270. help
  271. For some CPU cores, the NEON SIMD extension is optional.
  272. Select this option if you are certain your particular
  273. implementation has NEON support and you want to use it.
  274. config BR2_ARM_ENABLE_VFP
  275. bool "Enable VFP extension support"
  276. depends on BR2_ARM_CPU_MAYBE_HAS_VFPV2
  277. select BR2_ARM_CPU_HAS_VFPV4 if BR2_ARM_CPU_MAYBE_HAS_VFPV4
  278. select BR2_ARM_CPU_HAS_VFPV3 if BR2_ARM_CPU_MAYBE_HAS_VFPV3
  279. select BR2_ARM_CPU_HAS_VFPV2 if BR2_ARM_CPU_MAYBE_HAS_VFPV2
  280. help
  281. For some CPU cores, the VFP extension is optional. Select
  282. this option if you are certain your particular
  283. implementation has VFP support and you want to use it.
  284. choice
  285. prompt "Target ABI"
  286. depends on BR2_arm || BR2_armeb
  287. default BR2_ARM_EABIHF if BR2_ARM_CPU_HAS_VFPV2
  288. default BR2_ARM_EABI
  289. help
  290. Application Binary Interface to use. The Application Binary
  291. Interface describes the calling conventions (how arguments
  292. are passed to functions, how the return value is passed, how
  293. system calls are made, etc.).
  294. config BR2_ARM_EABI
  295. bool "EABI"
  296. help
  297. The EABI is currently the standard ARM ABI, which is used in
  298. most projects. It supports both the 'soft' floating point
  299. model (in which floating point instructions are emulated in
  300. software) and the 'softfp' floating point model (in which
  301. floating point instructions are executed using an hardware
  302. floating point unit, but floating point arguments to
  303. functions are passed in integer registers).
  304. The 'softfp' floating point model is link-compatible with
  305. the 'soft' floating point model, i.e you can link a library
  306. built 'soft' with some other code built 'softfp'.
  307. However, passing the floating point arguments in integer
  308. registers is a bit inefficient, so if your ARM processor has
  309. a floating point unit, and you don't have pre-compiled
  310. 'soft' or 'softfp' code, using the EABIhf ABI will provide
  311. better floating point performances.
  312. If your processor does not have a floating point unit, then
  313. you must use this ABI.
  314. config BR2_ARM_EABIHF
  315. bool "EABIhf"
  316. depends on BR2_ARM_CPU_HAS_VFPV2
  317. help
  318. The EABIhf is an extension of EABI which supports the 'hard'
  319. floating point model. This model uses the floating point
  320. unit to execute floating point instructions, and passes
  321. floating point arguments in floating point registers.
  322. It is more efficient than EABI for floating point related
  323. workload. However, it does not allow to link against code
  324. that has been pre-built for the 'soft' or 'softfp' floating
  325. point models.
  326. If your processor has a floating point unit, and you don't
  327. depend on existing pre-compiled code, this option is most
  328. likely the best choice.
  329. endchoice
  330. choice
  331. prompt "Floating point strategy"
  332. default BR2_ARM_FPU_FP_ARMV8 if BR2_ARM_CPU_HAS_FP_ARMV8
  333. default BR2_ARM_FPU_VFPV4D16 if BR2_ARM_CPU_HAS_VFPV4
  334. default BR2_ARM_FPU_VFPV3D16 if BR2_ARM_CPU_HAS_VFPV3
  335. default BR2_ARM_FPU_VFPV2 if BR2_ARM_CPU_HAS_VFPV2
  336. default BR2_ARM_SOFT_FLOAT if !BR2_ARM_CPU_HAS_VFPV2
  337. config BR2_ARM_SOFT_FLOAT
  338. bool "Soft float"
  339. depends on BR2_ARM_EABI
  340. select BR2_SOFT_FLOAT
  341. help
  342. This option allows to use software emulated floating
  343. point. It should be used for ARM cores that do not include a
  344. Vector Floating Point unit, such as ARMv5 cores (ARM926 for
  345. example) or certain ARMv6 cores.
  346. config BR2_ARM_FPU_VFPV2
  347. bool "VFPv2"
  348. depends on BR2_ARM_CPU_HAS_VFPV2
  349. help
  350. This option allows to use the VFPv2 floating point unit, as
  351. available in some ARMv5 processors (ARM926EJ-S) and some
  352. ARMv6 processors (ARM1136JF-S, ARM1176JZF-S and ARM11
  353. MPCore).
  354. Note that this option is also safe to use for newer cores
  355. such as Cortex-A, because the VFPv3 and VFPv4 units are
  356. backward compatible with VFPv2.
  357. config BR2_ARM_FPU_VFPV3
  358. bool "VFPv3"
  359. depends on BR2_ARM_CPU_HAS_VFPV3
  360. help
  361. This option allows to use the VFPv3 floating point unit, as
  362. available in some ARMv7 processors (Cortex-A{8, 9}). This
  363. option requires a VFPv3 unit that has 32 double-precision
  364. registers, which is not necessarily the case in all SOCs
  365. based on Cortex-A{8, 9}. If you're unsure, use VFPv3-D16
  366. instead, which is guaranteed to work on all Cortex-A{8, 9}.
  367. Note that this option is also safe to use for newer cores
  368. that have a VFPv4 unit, because VFPv4 is backward compatible
  369. with VFPv3. They must of course also have 32
  370. double-precision registers.
  371. config BR2_ARM_FPU_VFPV3D16
  372. bool "VFPv3-D16"
  373. depends on BR2_ARM_CPU_HAS_VFPV3
  374. help
  375. This option allows to use the VFPv3 floating point unit, as
  376. available in some ARMv7 processors (Cortex-A{8, 9}). This
  377. option requires a VFPv3 unit that has 16 double-precision
  378. registers, which is generally the case in all SOCs based on
  379. Cortex-A{8, 9}, even though VFPv3 is technically optional on
  380. Cortex-A9. This is the safest option for those cores.
  381. Note that this option is also safe to use for newer cores
  382. such that have a VFPv4 unit, because the VFPv4 is backward
  383. compatible with VFPv3.
  384. config BR2_ARM_FPU_VFPV4
  385. bool "VFPv4"
  386. depends on BR2_ARM_CPU_HAS_VFPV4
  387. help
  388. This option allows to use the VFPv4 floating point unit, as
  389. available in some ARMv7 processors (Cortex-A{5, 7, 12,
  390. 15}). This option requires a VFPv4 unit that has 32
  391. double-precision registers, which is not necessarily the
  392. case in all SOCs based on Cortex-A{5, 7, 12, 15}. If you're
  393. unsure, you should probably use VFPv4-D16 instead.
  394. Note that if you want binary code that works on all ARMv7
  395. cores, including the earlier Cortex-A{8, 9}, you should
  396. instead select VFPv3.
  397. config BR2_ARM_FPU_VFPV4D16
  398. bool "VFPv4-D16"
  399. depends on BR2_ARM_CPU_HAS_VFPV4
  400. help
  401. This option allows to use the VFPv4 floating point unit, as
  402. available in some ARMv7 processors (Cortex-A{5, 7, 12,
  403. 15}). This option requires a VFPv4 unit that has 16
  404. double-precision registers, which is always available on
  405. Cortex-A12 and Cortex-A15, but optional on Cortex-A5 and
  406. Cortex-A7.
  407. Note that if you want binary code that works on all ARMv7
  408. cores, including the earlier Cortex-A{8, 9}, you should
  409. instead select VFPv3-D16.
  410. config BR2_ARM_FPU_NEON
  411. bool "NEON"
  412. depends on BR2_ARM_CPU_HAS_NEON
  413. help
  414. This option allows to use the NEON SIMD unit, as available
  415. in some ARMv7 processors, as a floating-point unit. It
  416. should however be noted that using NEON for floating point
  417. operations doesn't provide a complete compatibility with the
  418. IEEE 754.
  419. config BR2_ARM_FPU_NEON_VFPV4
  420. bool "NEON/VFPv4"
  421. depends on BR2_ARM_CPU_HAS_VFPV4
  422. depends on BR2_ARM_CPU_HAS_NEON
  423. help
  424. This option allows to use both the VFPv4 and the NEON SIMD
  425. units for floating point operations. Note that some ARMv7
  426. cores do not necessarily have VFPv4 and/or NEON support, for
  427. example on Cortex-A5 and Cortex-A7, support for VFPv4 and
  428. NEON is optional.
  429. config BR2_ARM_FPU_FP_ARMV8
  430. bool "FP-ARMv8"
  431. depends on BR2_ARM_CPU_HAS_FP_ARMV8
  432. help
  433. This option allows to use the ARMv8 floating point unit.
  434. config BR2_ARM_FPU_NEON_FP_ARMV8
  435. bool "NEON/FP-ARMv8"
  436. depends on BR2_ARM_CPU_HAS_FP_ARMV8
  437. depends on BR2_ARM_CPU_HAS_NEON
  438. help
  439. This option allows to use both the ARMv8 floating point unit
  440. and the NEON SIMD unit for floating point operations.
  441. endchoice
  442. choice
  443. prompt "ARM instruction set"
  444. depends on BR2_arm || BR2_armeb
  445. config BR2_ARM_INSTRUCTIONS_ARM
  446. bool "ARM"
  447. depends on BR2_ARM_CPU_HAS_ARM
  448. help
  449. This option instructs the compiler to generate regular ARM
  450. instructions, that are all 32 bits wide.
  451. config BR2_ARM_INSTRUCTIONS_THUMB
  452. bool "Thumb"
  453. depends on BR2_ARM_CPU_HAS_THUMB
  454. # Thumb-1 and VFP are not compatible
  455. depends on BR2_ARM_SOFT_FLOAT
  456. help
  457. This option instructions the compiler to generate Thumb
  458. instructions, which allows to mix 16 bits instructions and
  459. 32 bits instructions. This generally provides a much smaller
  460. compiled binary size.
  461. comment "Thumb1 is not compatible with VFP"
  462. depends on BR2_ARM_CPU_HAS_THUMB
  463. depends on !BR2_ARM_SOFT_FLOAT
  464. config BR2_ARM_INSTRUCTIONS_THUMB2
  465. bool "Thumb2"
  466. depends on BR2_ARM_CPU_HAS_THUMB2
  467. help
  468. This option instructions the compiler to generate Thumb2
  469. instructions, which allows to mix 16 bits instructions and
  470. 32 bits instructions. This generally provides a much smaller
  471. compiled binary size.
  472. endchoice
  473. config BR2_ARCH
  474. default "arm" if BR2_arm
  475. default "armeb" if BR2_armeb
  476. default "aarch64" if BR2_aarch64
  477. default "aarch64_be" if BR2_aarch64_be
  478. config BR2_ENDIAN
  479. default "LITTLE" if (BR2_arm || BR2_aarch64)
  480. default "BIG" if (BR2_armeb || BR2_aarch64_be)
  481. config BR2_GCC_TARGET_CPU
  482. # armv4
  483. default "arm920t" if BR2_arm920t
  484. default "arm922t" if BR2_arm922t
  485. default "fa526" if BR2_fa526
  486. default "strongarm" if BR2_strongarm
  487. # armv5
  488. default "arm926ej-s" if BR2_arm926t
  489. default "iwmmxt" if BR2_iwmmxt
  490. default "xscale" if BR2_xscale
  491. # armv6
  492. default "arm1136j-s" if BR2_arm1136j_s
  493. default "arm1136jf-s" if BR2_arm1136jf_s
  494. default "arm1176jz-s" if BR2_arm1176jz_s
  495. default "arm1176jzf-s" if BR2_arm1176jzf_s
  496. default "mpcore" if BR2_arm11mpcore && BR2_ARM_CPU_HAS_VFPV2
  497. default "mpcorenovfp" if BR2_arm11mpcore
  498. # armv7a
  499. default "cortex-a5" if BR2_cortex_a5
  500. default "cortex-a7" if BR2_cortex_a7
  501. default "cortex-a8" if BR2_cortex_a8
  502. default "cortex-a9" if BR2_cortex_a9
  503. default "cortex-a12" if BR2_cortex_a12
  504. default "cortex-a15" if BR2_cortex_a15
  505. default "cortex-a15.cortex-a7" if BR2_cortex_a15_a7
  506. default "cortex-a17" if BR2_cortex_a17
  507. default "cortex-a17.cortex-a7" if BR2_cortex_a17_a7
  508. default "marvell-pj4" if BR2_pj4
  509. # armv7m
  510. default "cortex-m3" if BR2_cortex_m3
  511. default "cortex-m4" if BR2_cortex_m4
  512. # armv8
  513. default "cortex-a53" if BR2_cortex_a53
  514. default "cortex-a57" if BR2_cortex_a57
  515. default "cortex-a57.cortex-a53" if BR2_cortex_a57_a53
  516. default "cortex-a72" if BR2_cortex_a72
  517. default "cortex-a72.cortex-a53" if BR2_cortex_a72_a53
  518. config BR2_GCC_TARGET_ABI
  519. default "aapcs-linux" if BR2_arm || BR2_armeb
  520. default "lp64" if BR2_aarch64 || BR2_aarch64_be
  521. config BR2_GCC_TARGET_FPU
  522. depends on BR2_arm || BR2_armeb
  523. default "vfp" if BR2_ARM_FPU_VFPV2
  524. default "vfpv3" if BR2_ARM_FPU_VFPV3
  525. default "vfpv3-d16" if BR2_ARM_FPU_VFPV3D16
  526. default "vfpv4" if BR2_ARM_FPU_VFPV4
  527. default "vfpv4-d16" if BR2_ARM_FPU_VFPV4D16
  528. default "neon" if BR2_ARM_FPU_NEON
  529. default "neon-vfpv4" if BR2_ARM_FPU_NEON_VFPV4
  530. default "fp-armv8" if BR2_ARM_FPU_FP_ARMV8
  531. default "neon-fp-armv8" if BR2_ARM_FPU_NEON_FP_ARMV8
  532. config BR2_GCC_TARGET_FLOAT_ABI
  533. default "soft" if BR2_ARM_SOFT_FLOAT
  534. default "softfp" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABI
  535. default "hard" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABIHF
  536. config BR2_GCC_TARGET_MODE
  537. default "arm" if BR2_ARM_INSTRUCTIONS_ARM
  538. default "thumb" if BR2_ARM_INSTRUCTIONS_THUMB || BR2_ARM_INSTRUCTIONS_THUMB2
  539. config BR2_READELF_ARCH_NAME
  540. default "ARM" if BR2_arm || BR2_armeb
  541. default "AArch64" if BR2_aarch64 || BR2_aarch64_be