arch.arm 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # determines TARGET_CPU, if not forced by user
  2. if [ -z "$TARGET_CPU" ]; then
  3. TARGET_CPU=cortex-a8
  4. fi
  5. # 32bit userland
  6. if [ -z "${TARGET_FEATURES}" ]; then
  7. TARGET_FEATURES="32bit"
  8. else
  9. TARGET_FEATURES+=" 32bit"
  10. fi
  11. # TARGET_CPU:
  12. # arm2 arm250 arm3 arm6 arm60 arm600 arm610 arm620 arm7 arm7m arm7d
  13. # arm7dm arm7di arm7dmi arm70 arm700 arm700i arm710 arm710c
  14. # arm7100 arm720 arm7500 arm7500fe arm7tdmi arm7tdmi-s arm710t
  15. # arm720t arm740t strongarm strongarm110 strongarm1100
  16. # strongarm1110 arm8 arm810 arm9 arm9e arm920 arm920t arm922t
  17. # arm946e-s arm966e-s arm968e-s arm926ej-s arm940t arm9tdmi
  18. # arm10tdmi arm1020t arm1026ej-s arm10e arm1020e arm1022e
  19. # arm1136j-s arm1136jf-s mpcore mpcorenovfp arm1156t2-s
  20. # arm1176jz-s arm1176jzf-s cortex-a8 cortex-a9 cortex-r4
  21. # cortex-r4f cortex-m3 cortex-m1 xscale iwmmxt iwmmxt2 ep9312.
  22. # TARGET_FPU:
  23. # This specifies what floating point hardware (or hardware emulation) is
  24. # available on the target. Permissible names are:
  25. # fpa fpe2 fpe3 maverick vfp vfpv3 vfpv3-fp16 vfpv3-d16 vfpv3-d16-fp16
  26. # vfpv3xd vfpv3xd-fp16 neon neon-fp16 vfpv4 vfpv4-d16 fpv4-sp-d16
  27. # neon-vfpv4.
  28. # determine architecture's family
  29. case $TARGET_CPU in
  30. arm1176jzf-s)
  31. TARGET_SUBARCH=armv6zk
  32. TARGET_ABI=eabi
  33. TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
  34. ;;
  35. cortex-a7|cortex-a15|cortex-a17|cortex-a15.cortex-a7|cortex-a17.cortex-a7)
  36. TARGET_SUBARCH=armv7ve
  37. TARGET_ABI=eabi
  38. TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
  39. TARGET_FEATURES+=" neon"
  40. ;;
  41. cortex-a5|cortex-a8|cortex-a9)
  42. TARGET_SUBARCH=armv7-a
  43. TARGET_ABI=eabi
  44. TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
  45. TARGET_FEATURES+=" neon"
  46. ;;
  47. cortex-a53|cortex-a72.cortex-a53)
  48. TARGET_SUBARCH=armv8-a
  49. TARGET_ABI=eabi
  50. TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
  51. TARGET_FEATURES+=" neon"
  52. ;;
  53. esac
  54. if [ "${TARGET_FLOAT}" = "hard" ]; then
  55. TARGET_ABI+="hf"
  56. fi
  57. TARGET_VARIANT="${TARGET_SUBARCH}${TARGET_CPU_FLAGS}"
  58. TARGET_GCC_ARCH=${TARGET_SUBARCH/-}
  59. TARGET_KERNEL_ARCH=${TARGET_KERNEL_ARCH:-arm}
  60. if [ "${TARGET_KERNEL_ARCH}" = "arm64" ]; then
  61. TARGET_KERNEL_PATCH_ARCH="aarch64"
  62. fi
  63. # setup ARCH specific *FLAGS
  64. TARGET_CFLAGS="-march=$TARGET_VARIANT -mtune=$TARGET_CPU -mabi=aapcs-linux -Wno-psabi -Wa,-mno-warn-deprecated"
  65. [ -n "$TARGET_FPU" ] && TARGET_CFLAGS="$TARGET_CFLAGS $TARGET_FPU_FLAGS"
  66. TARGET_LDFLAGS=""
  67. TARGET_ARCH_GCC_OPTS="--with-abi=aapcs-linux --with-arch=$TARGET_SUBARCH --with-float=$TARGET_FLOAT --with-fpu=$TARGET_FPU"