mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-03-31 14:41:55 -07:00
ARMv8.0-A cpus have an optional LSE feature. This is mandatory in ARMv8.1-A. By default, gcc will attempt to build support for runtime detection of the LSE feature on ARMv8.0-A. This causes build failures when attempting to create a 64-bit userland. Test packages for this failure include gdb and mesa. Errors manifest as undefined references to "__aarch64_cas4_acq_rel" or "__aarch64_swp4_acq_rel" at compile time. Disable runtime detection to always use its fallback by adding -mno-outline-atomics to cflags. Signed-off-by: Ian Leonard <antonlacon@gmail.com>
30 lines
1.0 KiB
Plaintext
30 lines
1.0 KiB
Plaintext
# determines TARGET_CPU, if not forced by user
|
|
if [ -z "$TARGET_CPU" ]; then
|
|
TARGET_CPU=cortex-a53
|
|
fi
|
|
|
|
# TARGET_CPU:
|
|
# generic cortex-a35 cortex-a53 cortex-a57 cortex-a72
|
|
# exynos-m1 qdf24xx thunderx xgene1 cortex-a57.cortex-a53
|
|
# cortex-a72.cortex-a53
|
|
|
|
# determine architecture's family
|
|
case $TARGET_CPU in
|
|
generic|cortex-a35|cortex-a53|cortex-a57|cortex-a72|exynos-m1|qdf24xx|thunderx|xgene1|cortex-a57.cortex-a53|cortex-a72.cortex-a53)
|
|
TARGET_SUBARCH=aarch64
|
|
TARGET_VARIANT=armv8-a
|
|
TARGET_ABI=eabi
|
|
TARGET_FEATURES+=" neon"
|
|
;;
|
|
esac
|
|
|
|
TARGET_GCC_ARCH=${TARGET_SUBARCH/-}
|
|
TARGET_KERNEL_ARCH=arm64
|
|
|
|
# setup ARCH specific *FLAGS
|
|
TARGET_CFLAGS="-march=${TARGET_VARIANT}${TARGET_CPU_FLAGS} -mabi=lp64 -Wno-psabi -mtune=$TARGET_CPU"
|
|
# Disable runtime checking support of ARMv8.0's optional LSE feature. Breaks gdb and mesa compile.
|
|
TARGET_CFLAGS="${TARGET_CFLAGS} -mno-outline-atomics"
|
|
TARGET_LDFLAGS="-march=${TARGET_VARIANT}${TARGET_CPU_FLAGS} -mtune=$TARGET_CPU"
|
|
GCC_OPTS="--with-abi=lp64 --with-arch=$TARGET_VARIANT"
|