Files
Arch-R/config/arch.aarch64
Ian Leonard 148f1d563c arch.aarch64: don't attempt to use the LSE cpu feature
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>
2020-09-07 17:44:43 +00:00

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"