Config.in.arm 27 KB

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