Config.in.arm 13 KB

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