summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--toolchain.mk2
-rwxr-xr-xutil/xcompile/xcompile5
2 files changed, 6 insertions, 1 deletions
diff --git a/toolchain.mk b/toolchain.mk
index f985e8843a..77fb46eb69 100644
--- a/toolchain.mk
+++ b/toolchain.mk
@@ -60,7 +60,7 @@ ARCHDIR-riscv := riscv
ARCHDIR-ppc64 := ppc64
CFLAGS_arm +=
-CFLAGS_arm64 += -mgeneral-regs-only
+CFLAGS_arm64 +=
CFLAGS_riscv +=
CFLAGS_x86_32 +=
CFLAGS_x86_64 += -mcmodel=large -mno-red-zone
diff --git a/util/xcompile/xcompile b/util/xcompile/xcompile
index 13ed48be52..3fb0cb7591 100755
--- a/util/xcompile/xcompile
+++ b/util/xcompile/xcompile
@@ -256,6 +256,11 @@ detect_special_flags() {
testld "$GCC" "$FLAGS_GCC" "${GCCPREFIX}ld${LINKER_SUFFIX}" \
"$LDFLAGS --fix-cortex-a53-843419" && \
LDFLAGS_ARM64_A53_ERRATUM_843419+=" --fix-cortex-a53-843419"
+ # https://bugs.llvm.org/show_bug.cgi?id=30792
+ # LLVM/clang runs into problems when encountering SIMD registers in assembly
+ # with -mgeneral-regs-only. -mno-implicit-float achieves the same though.
+ CFLAGS_GCC="$CFLAGS_GCC -mgeneral-regs-only" &&
+ CFLAGS_CLANG="$CFLAGS_CLANG -mno-implicit-float"
;;
riscv)
testcc "$GCC" "$FLAGS_GCC -march=rv64iadc_zicsr_zifencei" &&