Config.in.arm 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916
  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, the FPU is optional
  8. config BR2_ARM_CPU_MAYBE_HAS_FPU
  9. bool
  10. config BR2_ARM_CPU_HAS_FPU
  11. bool
  12. # for some cores, VFPv2 is optional
  13. config BR2_ARM_CPU_MAYBE_HAS_VFPV2
  14. bool
  15. select BR2_ARM_CPU_MAYBE_HAS_FPU
  16. config BR2_ARM_CPU_HAS_VFPV2
  17. bool
  18. select BR2_ARM_CPU_HAS_FPU
  19. # for some cores, VFPv3 is optional
  20. config BR2_ARM_CPU_MAYBE_HAS_VFPV3
  21. bool
  22. select BR2_ARM_CPU_MAYBE_HAS_VFPV2
  23. config BR2_ARM_CPU_HAS_VFPV3
  24. bool
  25. select BR2_ARM_CPU_HAS_VFPV2
  26. # for some cores, VFPv4 is optional
  27. config BR2_ARM_CPU_MAYBE_HAS_VFPV4
  28. bool
  29. select BR2_ARM_CPU_MAYBE_HAS_VFPV3
  30. config BR2_ARM_CPU_HAS_VFPV4
  31. bool
  32. select BR2_ARM_CPU_HAS_VFPV3
  33. # FPv4 is always optional
  34. config BR2_ARM_CPU_MAYBE_HAS_FPV4
  35. bool
  36. select BR2_ARM_CPU_MAYBE_HAS_FPU
  37. config BR2_ARM_CPU_HAS_FPV4
  38. bool
  39. select BR2_ARM_CPU_HAS_FPU
  40. # FPv5 is always optional
  41. config BR2_ARM_CPU_MAYBE_HAS_FPV5
  42. bool
  43. select BR2_ARM_CPU_MAYBE_HAS_FPV4
  44. config BR2_ARM_CPU_HAS_FPV5
  45. bool
  46. select BR2_ARM_CPU_HAS_FPV4
  47. config BR2_ARM_CPU_HAS_FP_ARMV8
  48. bool
  49. select BR2_ARM_CPU_HAS_VFPV4
  50. config BR2_ARM_CPU_HAS_ARM
  51. bool
  52. config BR2_ARM_CPU_HAS_THUMB
  53. bool
  54. config BR2_ARM_CPU_HAS_THUMB2
  55. bool
  56. config BR2_ARM_CPU_ARMV4
  57. bool
  58. select BR2_USE_MMU
  59. config BR2_ARM_CPU_ARMV5
  60. bool
  61. select BR2_USE_MMU
  62. config BR2_ARM_CPU_ARMV6
  63. bool
  64. select BR2_USE_MMU
  65. config BR2_ARM_CPU_ARMV7A
  66. bool
  67. select BR2_USE_MMU
  68. config BR2_ARM_CPU_ARMV7M
  69. bool
  70. config BR2_ARM_CPU_ARMV8A
  71. bool
  72. select BR2_USE_MMU
  73. choice
  74. prompt "Target Architecture Variant"
  75. default BR2_cortex_a53 if BR2_ARCH_IS_64
  76. default BR2_arm926t
  77. help
  78. Specific CPU variant to use
  79. if !BR2_ARCH_IS_64
  80. comment "armv4 cores"
  81. config BR2_arm920t
  82. bool "arm920t"
  83. select BR2_ARM_CPU_HAS_ARM
  84. select BR2_ARM_CPU_HAS_THUMB
  85. select BR2_ARM_CPU_ARMV4
  86. config BR2_arm922t
  87. bool "arm922t"
  88. select BR2_ARM_CPU_HAS_ARM
  89. select BR2_ARM_CPU_HAS_THUMB
  90. select BR2_ARM_CPU_ARMV4
  91. config BR2_fa526
  92. bool "fa526/626"
  93. select BR2_ARM_CPU_HAS_ARM
  94. select BR2_ARM_CPU_ARMV4
  95. config BR2_strongarm
  96. bool "strongarm sa110/sa1100"
  97. select BR2_ARM_CPU_HAS_ARM
  98. select BR2_ARM_CPU_ARMV4
  99. comment "armv5 cores"
  100. config BR2_arm926t
  101. bool "arm926t"
  102. select BR2_ARM_CPU_HAS_ARM
  103. select BR2_ARM_CPU_MAYBE_HAS_VFPV2
  104. select BR2_ARM_CPU_HAS_THUMB
  105. select BR2_ARM_CPU_ARMV5
  106. config BR2_xscale
  107. bool "xscale"
  108. select BR2_ARM_CPU_HAS_ARM
  109. select BR2_ARM_CPU_HAS_THUMB
  110. select BR2_ARM_CPU_ARMV5
  111. comment "armv6 cores"
  112. config BR2_arm1136j_s
  113. bool "arm1136j-s"
  114. select BR2_ARM_CPU_HAS_ARM
  115. select BR2_ARM_CPU_HAS_THUMB
  116. select BR2_ARM_CPU_ARMV6
  117. config BR2_arm1136jf_s
  118. bool "arm1136jf-s"
  119. select BR2_ARM_CPU_HAS_ARM
  120. select BR2_ARM_CPU_HAS_VFPV2
  121. select BR2_ARM_CPU_HAS_THUMB
  122. select BR2_ARM_CPU_ARMV6
  123. config BR2_arm1176jz_s
  124. bool "arm1176jz-s"
  125. select BR2_ARM_CPU_HAS_ARM
  126. select BR2_ARM_CPU_HAS_THUMB
  127. select BR2_ARM_CPU_ARMV6
  128. config BR2_arm1176jzf_s
  129. bool "arm1176jzf-s"
  130. select BR2_ARM_CPU_HAS_ARM
  131. select BR2_ARM_CPU_HAS_VFPV2
  132. select BR2_ARM_CPU_HAS_THUMB
  133. select BR2_ARM_CPU_ARMV6
  134. config BR2_arm11mpcore
  135. bool "mpcore"
  136. select BR2_ARM_CPU_HAS_ARM
  137. select BR2_ARM_CPU_MAYBE_HAS_VFPV2
  138. select BR2_ARM_CPU_HAS_THUMB
  139. select BR2_ARM_CPU_ARMV6
  140. comment "armv7a cores"
  141. config BR2_cortex_a5
  142. bool "cortex-A5"
  143. select BR2_ARM_CPU_HAS_ARM
  144. select BR2_ARM_CPU_MAYBE_HAS_NEON
  145. select BR2_ARM_CPU_MAYBE_HAS_VFPV4
  146. select BR2_ARM_CPU_HAS_THUMB2
  147. select BR2_ARM_CPU_ARMV7A
  148. config BR2_cortex_a7
  149. bool "cortex-A7"
  150. select BR2_ARM_CPU_HAS_ARM
  151. select BR2_ARM_CPU_HAS_NEON
  152. select BR2_ARM_CPU_HAS_VFPV4
  153. select BR2_ARM_CPU_HAS_THUMB2
  154. select BR2_ARM_CPU_ARMV7A
  155. config BR2_cortex_a8
  156. bool "cortex-A8"
  157. select BR2_ARM_CPU_HAS_ARM
  158. select BR2_ARM_CPU_HAS_NEON
  159. select BR2_ARM_CPU_HAS_VFPV3
  160. select BR2_ARM_CPU_HAS_THUMB2
  161. select BR2_ARM_CPU_ARMV7A
  162. config BR2_cortex_a9
  163. bool "cortex-A9"
  164. select BR2_ARM_CPU_HAS_ARM
  165. select BR2_ARM_CPU_MAYBE_HAS_NEON
  166. select BR2_ARM_CPU_MAYBE_HAS_VFPV3
  167. select BR2_ARM_CPU_HAS_THUMB2
  168. select BR2_ARM_CPU_ARMV7A
  169. config BR2_cortex_a12
  170. bool "cortex-A12"
  171. select BR2_ARM_CPU_HAS_ARM
  172. select BR2_ARM_CPU_HAS_NEON
  173. select BR2_ARM_CPU_HAS_VFPV4
  174. select BR2_ARM_CPU_HAS_THUMB2
  175. select BR2_ARM_CPU_ARMV7A
  176. config BR2_cortex_a15
  177. bool "cortex-A15"
  178. select BR2_ARM_CPU_HAS_ARM
  179. select BR2_ARM_CPU_HAS_NEON
  180. select BR2_ARM_CPU_HAS_VFPV4
  181. select BR2_ARM_CPU_HAS_THUMB2
  182. select BR2_ARM_CPU_ARMV7A
  183. config BR2_cortex_a15_a7
  184. bool "cortex-A15/A7 big.LITTLE"
  185. select BR2_ARM_CPU_HAS_ARM
  186. select BR2_ARM_CPU_HAS_NEON
  187. select BR2_ARM_CPU_HAS_VFPV4
  188. select BR2_ARM_CPU_HAS_THUMB2
  189. select BR2_ARM_CPU_ARMV7A
  190. select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9
  191. config BR2_cortex_a17
  192. bool "cortex-A17"
  193. select BR2_ARM_CPU_HAS_ARM
  194. select BR2_ARM_CPU_HAS_NEON
  195. select BR2_ARM_CPU_HAS_VFPV4
  196. select BR2_ARM_CPU_HAS_THUMB2
  197. select BR2_ARM_CPU_ARMV7A
  198. select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
  199. config BR2_cortex_a17_a7
  200. bool "cortex-A17/A7 big.LITTLE"
  201. select BR2_ARM_CPU_HAS_ARM
  202. select BR2_ARM_CPU_HAS_NEON
  203. select BR2_ARM_CPU_HAS_VFPV4
  204. select BR2_ARM_CPU_HAS_THUMB2
  205. select BR2_ARM_CPU_ARMV7A
  206. select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
  207. config BR2_pj4
  208. bool "pj4"
  209. select BR2_ARM_CPU_HAS_ARM
  210. select BR2_ARM_CPU_HAS_VFPV3
  211. select BR2_ARM_CPU_ARMV7A
  212. # Cortex-M cores are only supported for little endian configurations
  213. if BR2_arm
  214. comment "armv7m cores"
  215. config BR2_cortex_m3
  216. bool "cortex-M3"
  217. select BR2_ARM_CPU_HAS_THUMB2
  218. select BR2_ARM_CPU_ARMV7M
  219. config BR2_cortex_m4
  220. bool "cortex-M4"
  221. select BR2_ARM_CPU_HAS_THUMB2
  222. select BR2_ARM_CPU_MAYBE_HAS_FPV4
  223. select BR2_ARM_CPU_ARMV7M
  224. config BR2_cortex_m7
  225. bool "cortex-M7"
  226. select BR2_ARM_CPU_HAS_THUMB2
  227. select BR2_ARM_CPU_MAYBE_HAS_FPV5
  228. select BR2_ARM_CPU_ARMV7M
  229. select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
  230. endif # BR2_arm
  231. endif # !BR2_ARCH_IS_64
  232. comment "armv8 cores"
  233. config BR2_cortex_a32
  234. bool "cortex-A32"
  235. depends on !BR2_ARCH_IS_64
  236. select BR2_ARM_CPU_HAS_ARM
  237. select BR2_ARM_CPU_HAS_NEON
  238. select BR2_ARM_CPU_HAS_THUMB2
  239. select BR2_ARM_CPU_HAS_FP_ARMV8
  240. select BR2_ARM_CPU_ARMV8A
  241. select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
  242. config BR2_cortex_a35
  243. bool "cortex-A35"
  244. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  245. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  246. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  247. select BR2_ARM_CPU_HAS_FP_ARMV8
  248. select BR2_ARM_CPU_ARMV8A
  249. select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
  250. config BR2_cortex_a53
  251. bool "cortex-A53"
  252. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  253. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  254. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  255. select BR2_ARM_CPU_HAS_FP_ARMV8
  256. select BR2_ARM_CPU_ARMV8A
  257. config BR2_cortex_a57
  258. bool "cortex-A57"
  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. config BR2_cortex_a57_a53
  265. bool "cortex-A57/A53 big.LITTLE"
  266. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  267. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  268. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  269. select BR2_ARM_CPU_HAS_FP_ARMV8
  270. select BR2_ARM_CPU_ARMV8A
  271. select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
  272. config BR2_cortex_a72
  273. bool "cortex-A72"
  274. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  275. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  276. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  277. select BR2_ARM_CPU_HAS_FP_ARMV8
  278. select BR2_ARM_CPU_ARMV8A
  279. select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
  280. config BR2_cortex_a72_a53
  281. bool "cortex-A72/A53 big.LITTLE"
  282. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  283. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  284. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  285. select BR2_ARM_CPU_HAS_FP_ARMV8
  286. select BR2_ARM_CPU_ARMV8A
  287. select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
  288. config BR2_cortex_a73
  289. bool "cortex-A73"
  290. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  291. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  292. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  293. select BR2_ARM_CPU_HAS_FP_ARMV8
  294. select BR2_ARM_CPU_ARMV8A
  295. select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
  296. config BR2_cortex_a73_a35
  297. bool "cortex-A73/A35 big.LITTLE"
  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_NEEDS_GCC_AT_LEAST_7
  304. config BR2_cortex_a73_a53
  305. bool "cortex-A73/A53 big.LITTLE"
  306. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  307. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  308. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  309. select BR2_ARM_CPU_HAS_FP_ARMV8
  310. select BR2_ARM_CPU_ARMV8A
  311. select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
  312. config BR2_emag
  313. bool "emag"
  314. depends on BR2_ARCH_IS_64
  315. select BR2_ARM_CPU_HAS_FP_ARMV8
  316. select BR2_ARM_CPU_ARMV8A
  317. select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
  318. config BR2_exynos_m1
  319. bool "exynos-m1"
  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_NEEDS_GCC_AT_LEAST_5
  326. config BR2_falkor
  327. bool "falkor"
  328. depends on BR2_ARCH_IS_64
  329. select BR2_ARM_CPU_HAS_FP_ARMV8
  330. select BR2_ARM_CPU_ARMV8A
  331. select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
  332. config BR2_phecda
  333. bool "phecda"
  334. depends on BR2_ARCH_IS_64
  335. select BR2_ARM_CPU_HAS_FP_ARMV8
  336. select BR2_ARM_CPU_ARMV8A
  337. select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
  338. config BR2_qdf24xx
  339. bool "qdf24xx"
  340. depends on BR2_ARCH_IS_64
  341. select BR2_ARM_CPU_HAS_FP_ARMV8
  342. select BR2_ARM_CPU_ARMV8A
  343. select BR2_ARCH_NEEDS_GCC_AT_LEAST_6
  344. config BR2_thunderx
  345. bool "thunderx (aka octeontx)"
  346. depends on BR2_ARCH_IS_64
  347. select BR2_ARM_CPU_HAS_FP_ARMV8
  348. select BR2_ARM_CPU_ARMV8A
  349. select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
  350. config BR2_thunderxt81
  351. bool "thunderxt81 (aka octeontx81)"
  352. depends on BR2_ARCH_IS_64
  353. select BR2_ARM_CPU_HAS_FP_ARMV8
  354. select BR2_ARM_CPU_ARMV8A
  355. select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
  356. config BR2_thunderxt83
  357. bool "thunderxt83 (aka octeontx83)"
  358. depends on BR2_ARCH_IS_64
  359. select BR2_ARM_CPU_HAS_FP_ARMV8
  360. select BR2_ARM_CPU_ARMV8A
  361. select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
  362. config BR2_thunderxt88
  363. bool "thunderxt88"
  364. depends on BR2_ARCH_IS_64
  365. select BR2_ARM_CPU_HAS_FP_ARMV8
  366. select BR2_ARM_CPU_ARMV8A
  367. select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
  368. config BR2_thunderxt88p1
  369. bool "thunderxt88p1"
  370. depends on BR2_ARCH_IS_64
  371. select BR2_ARM_CPU_HAS_FP_ARMV8
  372. select BR2_ARM_CPU_ARMV8A
  373. select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
  374. config BR2_xgene1
  375. bool "xgene1"
  376. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  377. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  378. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  379. select BR2_ARM_CPU_HAS_FP_ARMV8
  380. select BR2_ARM_CPU_ARMV8A
  381. select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
  382. comment "armv8.1a cores"
  383. config BR2_thunderx2t99
  384. bool "thunderx2t99"
  385. depends on BR2_ARCH_IS_64
  386. select BR2_ARM_CPU_HAS_FP_ARMV8
  387. select BR2_ARM_CPU_ARMV8A
  388. select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
  389. config BR2_thunderx2t99p1
  390. bool "thunderx2t99p1"
  391. depends on BR2_ARCH_IS_64
  392. select BR2_ARM_CPU_HAS_FP_ARMV8
  393. select BR2_ARM_CPU_ARMV8A
  394. select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
  395. config BR2_vulcan
  396. bool "vulcan"
  397. depends on BR2_ARCH_IS_64
  398. select BR2_ARM_CPU_HAS_FP_ARMV8
  399. select BR2_ARM_CPU_ARMV8A
  400. select BR2_ARCH_NEEDS_GCC_AT_LEAST_7
  401. comment "armv8.2a cores"
  402. config BR2_cortex_a55
  403. bool "cortex-A55"
  404. depends on BR2_ARCH_IS_64
  405. select BR2_ARM_CPU_HAS_FP_ARMV8
  406. select BR2_ARM_CPU_ARMV8A
  407. select BR2_ARCH_NEEDS_GCC_AT_LEAST_8
  408. config BR2_cortex_a75
  409. bool "cortex-A75"
  410. depends on BR2_ARCH_IS_64
  411. select BR2_ARM_CPU_HAS_FP_ARMV8
  412. select BR2_ARM_CPU_ARMV8A
  413. select BR2_ARCH_NEEDS_GCC_AT_LEAST_8
  414. config BR2_cortex_a75_a55
  415. bool "cortex-A75/A55 big.LITTLE"
  416. depends on BR2_ARCH_IS_64
  417. select BR2_ARM_CPU_HAS_FP_ARMV8
  418. select BR2_ARM_CPU_ARMV8A
  419. select BR2_ARCH_NEEDS_GCC_AT_LEAST_8
  420. config BR2_cortex_a76
  421. bool "cortex-A76"
  422. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  423. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  424. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  425. select BR2_ARM_CPU_HAS_FP_ARMV8
  426. select BR2_ARM_CPU_ARMV8A
  427. select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
  428. config BR2_cortex_a76_a55
  429. bool "cortex-A76/A55 big.LITTLE"
  430. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  431. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  432. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  433. select BR2_ARM_CPU_HAS_FP_ARMV8
  434. select BR2_ARM_CPU_ARMV8A
  435. select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
  436. config BR2_neoverse_n1
  437. bool "neoverse-N1 (aka ares)"
  438. select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64
  439. select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64
  440. select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64
  441. select BR2_ARM_CPU_HAS_FP_ARMV8
  442. select BR2_ARM_CPU_ARMV8A
  443. select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
  444. config BR2_tsv110
  445. bool "tsv110"
  446. depends on BR2_ARCH_IS_64
  447. select BR2_ARM_CPU_HAS_FP_ARMV8
  448. select BR2_ARM_CPU_ARMV8A
  449. select BR2_ARCH_NEEDS_GCC_AT_LEAST_9
  450. comment "armv8.4a cores"
  451. config BR2_saphira
  452. bool "saphira"
  453. depends on BR2_ARCH_IS_64
  454. select BR2_ARM_CPU_HAS_FP_ARMV8
  455. select BR2_ARM_CPU_ARMV8A
  456. select BR2_ARCH_NEEDS_GCC_AT_LEAST_8
  457. endchoice
  458. config BR2_ARM_ENABLE_NEON
  459. bool "Enable NEON SIMD extension support"
  460. depends on BR2_ARM_CPU_MAYBE_HAS_NEON
  461. select BR2_ARM_CPU_HAS_NEON
  462. help
  463. For some CPU cores, the NEON SIMD extension is optional.
  464. Select this option if you are certain your particular
  465. implementation has NEON support and you want to use it.
  466. config BR2_ARM_ENABLE_VFP
  467. bool "Enable VFP extension support"
  468. depends on BR2_ARM_CPU_MAYBE_HAS_FPU
  469. select BR2_ARM_CPU_HAS_FPV5 if BR2_ARM_CPU_MAYBE_HAS_FPV5
  470. select BR2_ARM_CPU_HAS_FPV4 if BR2_ARM_CPU_MAYBE_HAS_FPV4
  471. select BR2_ARM_CPU_HAS_VFPV4 if BR2_ARM_CPU_MAYBE_HAS_VFPV4
  472. select BR2_ARM_CPU_HAS_VFPV3 if BR2_ARM_CPU_MAYBE_HAS_VFPV3
  473. select BR2_ARM_CPU_HAS_VFPV2 if BR2_ARM_CPU_MAYBE_HAS_VFPV2
  474. help
  475. For some CPU cores, the VFP extension is optional. Select
  476. this option if you are certain your particular
  477. implementation has VFP support and you want to use it.
  478. choice
  479. prompt "Target ABI"
  480. default BR2_ARM_EABIHF if BR2_ARM_CPU_HAS_FPU
  481. default BR2_ARM_EABI
  482. depends on BR2_arm || BR2_armeb
  483. help
  484. Application Binary Interface to use. The Application Binary
  485. Interface describes the calling conventions (how arguments
  486. are passed to functions, how the return value is passed, how
  487. system calls are made, etc.).
  488. config BR2_ARM_EABI
  489. bool "EABI"
  490. help
  491. The EABI is currently the standard ARM ABI, which is used in
  492. most projects. It supports both the 'soft' floating point
  493. model (in which floating point instructions are emulated in
  494. software) and the 'softfp' floating point model (in which
  495. floating point instructions are executed using an hardware
  496. floating point unit, but floating point arguments to
  497. functions are passed in integer registers).
  498. The 'softfp' floating point model is link-compatible with
  499. the 'soft' floating point model, i.e you can link a library
  500. built 'soft' with some other code built 'softfp'.
  501. However, passing the floating point arguments in integer
  502. registers is a bit inefficient, so if your ARM processor has
  503. a floating point unit, and you don't have pre-compiled
  504. 'soft' or 'softfp' code, using the EABIhf ABI will provide
  505. better floating point performances.
  506. If your processor does not have a floating point unit, then
  507. you must use this ABI.
  508. config BR2_ARM_EABIHF
  509. bool "EABIhf"
  510. depends on BR2_ARM_CPU_HAS_FPU
  511. help
  512. The EABIhf is an extension of EABI which supports the 'hard'
  513. floating point model. This model uses the floating point
  514. unit to execute floating point instructions, and passes
  515. floating point arguments in floating point registers.
  516. It is more efficient than EABI for floating point related
  517. workload. However, it does not allow to link against code
  518. that has been pre-built for the 'soft' or 'softfp' floating
  519. point models.
  520. If your processor has a floating point unit, and you don't
  521. depend on existing pre-compiled code, this option is most
  522. likely the best choice.
  523. endchoice
  524. choice
  525. prompt "Floating point strategy"
  526. default BR2_ARM_FPU_FP_ARMV8 if BR2_ARM_CPU_HAS_FP_ARMV8
  527. default BR2_ARM_FPU_FPV5D16 if BR2_ARM_CPU_HAS_FPV5
  528. default BR2_ARM_FPU_FPV4D16 if BR2_ARM_CPU_HAS_FPV4
  529. default BR2_ARM_FPU_VFPV4D16 if BR2_ARM_CPU_HAS_VFPV4
  530. default BR2_ARM_FPU_VFPV3D16 if BR2_ARM_CPU_HAS_VFPV3
  531. default BR2_ARM_FPU_VFPV2 if BR2_ARM_CPU_HAS_VFPV2
  532. default BR2_ARM_SOFT_FLOAT if !BR2_ARM_CPU_HAS_FPU
  533. config BR2_ARM_SOFT_FLOAT
  534. bool "Soft float"
  535. depends on BR2_ARM_EABI
  536. select BR2_SOFT_FLOAT
  537. help
  538. This option allows to use software emulated floating
  539. point. It should be used for ARM cores that do not include a
  540. Vector Floating Point unit, such as ARMv5 cores (ARM926 for
  541. example) or certain ARMv6 cores.
  542. config BR2_ARM_FPU_VFPV2
  543. bool "VFPv2"
  544. depends on BR2_ARM_CPU_HAS_VFPV2
  545. help
  546. This option allows to use the VFPv2 floating point unit, as
  547. available in some ARMv5 processors (ARM926EJ-S) and some
  548. ARMv6 processors (ARM1136JF-S, ARM1176JZF-S and ARM11
  549. MPCore).
  550. Note that this option is also safe to use for newer cores
  551. such as Cortex-A, because the VFPv3 and VFPv4 units are
  552. backward compatible with VFPv2.
  553. config BR2_ARM_FPU_VFPV3
  554. bool "VFPv3"
  555. depends on BR2_ARM_CPU_HAS_VFPV3
  556. help
  557. This option allows to use the VFPv3 floating point unit, as
  558. available in some ARMv7 processors (Cortex-A{8, 9}). This
  559. option requires a VFPv3 unit that has 32 double-precision
  560. registers, which is not necessarily the case in all SOCs
  561. based on Cortex-A{8, 9}. If you're unsure, use VFPv3-D16
  562. instead, which is guaranteed to work on all Cortex-A{8, 9}.
  563. Note that this option is also safe to use for newer cores
  564. that have a VFPv4 unit, because VFPv4 is backward compatible
  565. with VFPv3. They must of course also have 32
  566. double-precision registers.
  567. config BR2_ARM_FPU_VFPV3D16
  568. bool "VFPv3-D16"
  569. depends on BR2_ARM_CPU_HAS_VFPV3
  570. help
  571. This option allows to use the VFPv3 floating point unit, as
  572. available in some ARMv7 processors (Cortex-A{8, 9}). This
  573. option requires a VFPv3 unit that has 16 double-precision
  574. registers, which is generally the case in all SOCs based on
  575. Cortex-A{8, 9}, even though VFPv3 is technically optional on
  576. Cortex-A9. This is the safest option for those cores.
  577. Note that this option is also safe to use for newer cores
  578. such that have a VFPv4 unit, because the VFPv4 is backward
  579. compatible with VFPv3.
  580. config BR2_ARM_FPU_VFPV4
  581. bool "VFPv4"
  582. depends on BR2_ARM_CPU_HAS_VFPV4
  583. help
  584. This option allows to use the VFPv4 floating point unit, as
  585. available in some ARMv7 processors (Cortex-A{5, 7, 12,
  586. 15}). This option requires a VFPv4 unit that has 32
  587. double-precision registers, which is not necessarily the
  588. case in all SOCs based on Cortex-A{5, 7, 12, 15}. If you're
  589. 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.
  593. config BR2_ARM_FPU_VFPV4D16
  594. bool "VFPv4-D16"
  595. depends on BR2_ARM_CPU_HAS_VFPV4
  596. help
  597. This option allows to use the VFPv4 floating point unit, as
  598. available in some ARMv7 processors (Cortex-A{5, 7, 12,
  599. 15}). This option requires a VFPv4 unit that has 16
  600. double-precision registers, which is always available on
  601. Cortex-A12 and Cortex-A15, but optional on Cortex-A5 and
  602. Cortex-A7.
  603. Note that if you want binary code that works on all ARMv7
  604. cores, including the earlier Cortex-A{8, 9}, you should
  605. instead select VFPv3-D16.
  606. config BR2_ARM_FPU_NEON
  607. bool "NEON"
  608. depends on BR2_ARM_CPU_HAS_NEON
  609. help
  610. This option allows to use the NEON SIMD unit, as available
  611. in some ARMv7 processors, as a floating-point unit. It
  612. should however be noted that using NEON for floating point
  613. operations doesn't provide a complete compatibility with the
  614. IEEE 754.
  615. config BR2_ARM_FPU_NEON_VFPV4
  616. bool "NEON/VFPv4"
  617. depends on BR2_ARM_CPU_HAS_VFPV4
  618. depends on BR2_ARM_CPU_HAS_NEON
  619. help
  620. This option allows to use both the VFPv4 and the NEON SIMD
  621. units for floating point operations. Note that some ARMv7
  622. cores do not necessarily have VFPv4 and/or NEON support, for
  623. example on Cortex-A5 and Cortex-A7, support for VFPv4 and
  624. NEON is optional.
  625. config BR2_ARM_FPU_FPV4D16
  626. bool "FPv4-D16"
  627. depends on BR2_ARM_CPU_HAS_FPV4
  628. help
  629. This option allows to use the FPv4-SP (single precision)
  630. floating point unit, as available in some ARMv7m processors
  631. (Cortex-M4).
  632. config BR2_ARM_FPU_FPV5D16
  633. bool "FPv5-D16"
  634. depends on BR2_ARM_CPU_HAS_FPV5
  635. select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
  636. help
  637. This option allows to use the FPv5-SP (single precision)
  638. floating point unit, as available in some ARMv7m processors
  639. (Cortex-M7).
  640. Note that if you want binary code that works on the earlier
  641. Cortex-M4, you should instead select FPv4-D16.
  642. config BR2_ARM_FPU_FPV5DPD16
  643. bool "FPv5-DP-D16"
  644. depends on BR2_ARM_CPU_HAS_FPV5
  645. select BR2_ARCH_NEEDS_GCC_AT_LEAST_5
  646. help
  647. This option allows to use the FPv5-DP (double precision)
  648. floating point unit, as available in some ARMv7m processors
  649. (Cortex-M7).
  650. Note that if you want binary code that works on the earlier
  651. Cortex-M4, you should instead select FPv4-D16.
  652. config BR2_ARM_FPU_FP_ARMV8
  653. bool "FP-ARMv8"
  654. depends on BR2_ARM_CPU_HAS_FP_ARMV8
  655. help
  656. This option allows to use the ARMv8 floating point unit.
  657. config BR2_ARM_FPU_NEON_FP_ARMV8
  658. bool "NEON/FP-ARMv8"
  659. depends on BR2_ARM_CPU_HAS_FP_ARMV8
  660. depends on BR2_ARM_CPU_HAS_NEON
  661. help
  662. This option allows to use both the ARMv8 floating point unit
  663. and the NEON SIMD unit for floating point operations.
  664. endchoice
  665. choice
  666. prompt "ARM instruction set"
  667. depends on BR2_arm || BR2_armeb
  668. config BR2_ARM_INSTRUCTIONS_ARM
  669. bool "ARM"
  670. depends on BR2_ARM_CPU_HAS_ARM
  671. help
  672. This option instructs the compiler to generate regular ARM
  673. instructions, that are all 32 bits wide.
  674. config BR2_ARM_INSTRUCTIONS_THUMB
  675. bool "Thumb"
  676. depends on BR2_ARM_CPU_HAS_THUMB
  677. # Thumb-1 and VFP are not compatible
  678. depends on BR2_ARM_SOFT_FLOAT
  679. help
  680. This option instructions the compiler to generate Thumb
  681. instructions, which allows to mix 16 bits instructions and
  682. 32 bits instructions. This generally provides a much smaller
  683. compiled binary size.
  684. comment "Thumb1 is not compatible with VFP"
  685. depends on BR2_ARM_CPU_HAS_THUMB
  686. depends on !BR2_ARM_SOFT_FLOAT
  687. config BR2_ARM_INSTRUCTIONS_THUMB2
  688. bool "Thumb2"
  689. depends on BR2_ARM_CPU_HAS_THUMB2
  690. help
  691. This option instructions the compiler to generate Thumb2
  692. instructions, which allows to mix 16 bits instructions and
  693. 32 bits instructions. This generally provides a much smaller
  694. compiled binary size.
  695. endchoice
  696. choice
  697. prompt "MMU Page Size"
  698. default BR2_ARM64_PAGE_SIZE_4K
  699. depends on BR2_aarch64 || BR2_aarch64_be
  700. help
  701. The default is 4KB, and you should probably keep this unless
  702. you know what you are doing. In particular, the kernel
  703. configuration must match this choice. If your kernel is
  704. built by Buildroot, the kernel configuration is
  705. automatically adjusted, but not if you built your kernel
  706. outside of Buildroot.
  707. config BR2_ARM64_PAGE_SIZE_4K
  708. bool "4KB"
  709. config BR2_ARM64_PAGE_SIZE_16K
  710. bool "16KB"
  711. config BR2_ARM64_PAGE_SIZE_64K
  712. bool "64KB"
  713. endchoice
  714. config BR2_ARM64_PAGE_SIZE
  715. string
  716. default "4K" if BR2_ARM64_PAGE_SIZE_4K
  717. default "16K" if BR2_ARM64_PAGE_SIZE_16K
  718. default "64K" if BR2_ARM64_PAGE_SIZE_64K
  719. config BR2_ARCH
  720. default "arm" if BR2_arm
  721. default "armeb" if BR2_armeb
  722. default "aarch64" if BR2_aarch64
  723. default "aarch64_be" if BR2_aarch64_be
  724. config BR2_NORMALIZED_ARCH
  725. default "arm" if BR2_arm || BR2_armeb
  726. default "arm64" if BR2_aarch64 || BR2_aarch64_be
  727. config BR2_ENDIAN
  728. default "LITTLE" if (BR2_arm || BR2_aarch64)
  729. default "BIG" if (BR2_armeb || BR2_aarch64_be)
  730. config BR2_GCC_TARGET_CPU
  731. # armv4
  732. default "arm920t" if BR2_arm920t
  733. default "arm922t" if BR2_arm922t
  734. default "fa526" if BR2_fa526
  735. default "strongarm" if BR2_strongarm
  736. # armv5
  737. default "arm926ej-s" if BR2_arm926t
  738. default "xscale" if BR2_xscale
  739. # armv6
  740. default "arm1136j-s" if BR2_arm1136j_s
  741. default "arm1136jf-s" if BR2_arm1136jf_s
  742. default "arm1176jz-s" if BR2_arm1176jz_s
  743. default "arm1176jzf-s" if BR2_arm1176jzf_s
  744. default "mpcore" if BR2_arm11mpcore && BR2_ARM_CPU_HAS_VFPV2
  745. default "mpcorenovfp" if BR2_arm11mpcore
  746. # armv7a
  747. default "cortex-a5" if BR2_cortex_a5
  748. default "cortex-a7" if BR2_cortex_a7
  749. default "cortex-a8" if BR2_cortex_a8
  750. default "cortex-a9" if BR2_cortex_a9
  751. default "cortex-a12" if BR2_cortex_a12
  752. default "cortex-a15" if BR2_cortex_a15
  753. default "cortex-a15.cortex-a7" if BR2_cortex_a15_a7
  754. default "cortex-a17" if BR2_cortex_a17
  755. default "cortex-a17.cortex-a7" if BR2_cortex_a17_a7
  756. default "marvell-pj4" if BR2_pj4
  757. # armv7m
  758. default "cortex-m3" if BR2_cortex_m3
  759. default "cortex-m4" if BR2_cortex_m4
  760. default "cortex-m7" if BR2_cortex_m7
  761. # armv8a
  762. default "cortex-a32" if BR2_cortex_a32
  763. default "cortex-a35" if BR2_cortex_a35
  764. default "cortex-a53" if BR2_cortex_a53
  765. default "cortex-a57" if BR2_cortex_a57
  766. default "cortex-a57.cortex-a53" if BR2_cortex_a57_a53
  767. default "cortex-a72" if BR2_cortex_a72
  768. default "cortex-a72.cortex-a53" if BR2_cortex_a72_a53
  769. default "cortex-a73" if BR2_cortex_a73
  770. default "cortex-a73.cortex-a35" if BR2_cortex_a73_a35
  771. default "cortex-a73.cortex-a53" if BR2_cortex_a73_a53
  772. default "emag" if BR2_emag
  773. default "exynos-m1" if BR2_exynos_m1
  774. default "falkor" if BR2_falkor
  775. default "phecda" if BR2_phecda
  776. default "qdf24xx" if BR2_qdf24xx
  777. default "thunderx" if BR2_thunderx && !BR2_TOOLCHAIN_GCC_AT_LEAST_9
  778. default "octeontx" if BR2_thunderx && BR2_TOOLCHAIN_GCC_AT_LEAST_9
  779. default "thunderxt81" if BR2_thunderxt81 && !BR2_TOOLCHAIN_GCC_AT_LEAST_9
  780. default "octeontx81" if BR2_thunderxt81 && BR2_TOOLCHAIN_GCC_AT_LEAST_9
  781. default "thunderxt83" if BR2_thunderxt83 && !BR2_TOOLCHAIN_GCC_AT_LEAST_9
  782. default "octeontx83" if BR2_thunderxt83 && BR2_TOOLCHAIN_GCC_AT_LEAST_9
  783. default "thunderxt88" if BR2_thunderxt88
  784. default "thunderxt88p1" if BR2_thunderxt88p1
  785. default "xgene1" if BR2_xgene1
  786. # armv8.1a
  787. default "thunderx2t99" if BR2_thunderx2t99
  788. default "thunderx2t99p1" if BR2_thunderx2t99p1
  789. default "vulcan" if BR2_vulcan
  790. # armv8.2a
  791. default "cortex-a55" if BR2_cortex_a55
  792. default "cortex-a75" if BR2_cortex_a75
  793. default "cortex-a75.cortex-a55" if BR2_cortex_a75_a55
  794. default "cortex-a76" if BR2_cortex_a76
  795. default "cortex-a76.cortex-a55" if BR2_cortex_a76_a55
  796. default "neoverse-n1" if BR2_neoverse_n1
  797. default "tsv110" if BR2_tsv110
  798. # armv8.4a
  799. default "saphira" if BR2_saphira
  800. config BR2_GCC_TARGET_ABI
  801. default "aapcs-linux" if BR2_arm || BR2_armeb
  802. default "lp64" if BR2_aarch64 || BR2_aarch64_be
  803. config BR2_GCC_TARGET_FPU
  804. default "vfp" if BR2_ARM_FPU_VFPV2
  805. default "vfpv3" if BR2_ARM_FPU_VFPV3
  806. default "vfpv3-d16" if BR2_ARM_FPU_VFPV3D16
  807. default "vfpv4" if BR2_ARM_FPU_VFPV4
  808. default "vfpv4-d16" if BR2_ARM_FPU_VFPV4D16
  809. default "neon" if BR2_ARM_FPU_NEON
  810. default "neon-vfpv4" if BR2_ARM_FPU_NEON_VFPV4
  811. default "fpv4-sp-d16" if BR2_ARM_FPU_FPV4D16
  812. default "fpv5-sp-d16" if BR2_ARM_FPU_FPV5D16
  813. default "fpv5-d16" if BR2_ARM_FPU_FPV5DPD16
  814. default "fp-armv8" if BR2_ARM_FPU_FP_ARMV8
  815. default "neon-fp-armv8" if BR2_ARM_FPU_NEON_FP_ARMV8
  816. depends on BR2_arm || BR2_armeb
  817. config BR2_GCC_TARGET_FLOAT_ABI
  818. default "soft" if BR2_ARM_SOFT_FLOAT
  819. default "softfp" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABI
  820. default "hard" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABIHF
  821. config BR2_GCC_TARGET_MODE
  822. default "arm" if BR2_ARM_INSTRUCTIONS_ARM
  823. default "thumb" if BR2_ARM_INSTRUCTIONS_THUMB || BR2_ARM_INSTRUCTIONS_THUMB2
  824. config BR2_READELF_ARCH_NAME
  825. default "ARM" if BR2_arm || BR2_armeb
  826. default "AArch64" if BR2_aarch64 || BR2_aarch64_be
  827. # vim: ft=kconfig
  828. # -*- mode:kconfig; -*-