Config.in.arm 27 KB

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