2
1

Config.in.arm 14 KB

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