git: f0e05595a1b4 - stable/14 - Fix arm64 build after llvm 18.1.3 upgrade (take 2)
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 20 Apr 2024 10:32:41 UTC
The branch stable/14 has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=f0e05595a1b47554cdbfcb84f33d03b921d375de commit f0e05595a1b47554cdbfcb84f33d03b921d375de Author: Dimitry Andric <dim@FreeBSD.org> AuthorDate: 2024-04-07 09:23:06 +0000 Commit: Dimitry Andric <dim@FreeBSD.org> CommitDate: 2024-04-20 10:03:25 +0000 Fix arm64 build after llvm 18.1.3 upgrade (take 2) Instead of compiling the whole sys/arm64/arm64/vfp.c file without -mgeneral-regs-only, which might have unwanted side effects, add ".arch_extension fp" / ".arch_extension nofp" pairs to the inline assembly. PR: 276104 Suggested by: andrew MFC after: 1 month (cherry picked from commit 61e482f2fcd53bbc7fd3d4cc8b7df79d5d57d75c) --- sys/arm64/arm64/vfp.c | 4 ++++ sys/conf/files.arm64 | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/arm64/arm64/vfp.c b/sys/arm64/arm64/vfp.c index ced1a446f0a8..be98af945b0a 100644 --- a/sys/arm64/arm64/vfp.c +++ b/sys/arm64/arm64/vfp.c @@ -110,6 +110,7 @@ vfp_store(struct vfpstate *state) vfp_state = state->vfp_regs; __asm __volatile( + ".arch_extension fp\n" "mrs %0, fpcr \n" "mrs %1, fpsr \n" "stp q0, q1, [%2, #16 * 0]\n" @@ -128,6 +129,7 @@ vfp_store(struct vfpstate *state) "stp q26, q27, [%2, #16 * 26]\n" "stp q28, q29, [%2, #16 * 28]\n" "stp q30, q31, [%2, #16 * 30]\n" + ".arch_extension nofp\n" : "=&r"(fpcr), "=&r"(fpsr) : "r"(vfp_state)); state->vfp_fpcr = fpcr; @@ -145,6 +147,7 @@ vfp_restore(struct vfpstate *state) fpsr = state->vfp_fpsr; __asm __volatile( + ".arch_extension fp\n" "ldp q0, q1, [%2, #16 * 0]\n" "ldp q2, q3, [%2, #16 * 2]\n" "ldp q4, q5, [%2, #16 * 4]\n" @@ -163,6 +166,7 @@ vfp_restore(struct vfpstate *state) "ldp q30, q31, [%2, #16 * 30]\n" "msr fpcr, %0 \n" "msr fpsr, %1 \n" + ".arch_extension nofp\n" : : "r"(fpcr), "r"(fpsr), "r"(vfp_state)); } diff --git a/sys/conf/files.arm64 b/sys/conf/files.arm64 index b142999ec659..218571d0e23a 100644 --- a/sys/conf/files.arm64 +++ b/sys/conf/files.arm64 @@ -82,8 +82,7 @@ arm64/arm64/uma_machdep.c standard arm64/arm64/undefined.c standard arm64/arm64/unwind.c optional ddb | kdtrace_hooks | stack \ compile-with "${NORMAL_C:N-fsanitize*}" -arm64/arm64/vfp.c standard \ - compile-with "${NORMAL_C:N-mgeneral-regs-only}" +arm64/arm64/vfp.c standard arm64/arm64/vm_machdep.c standard arm64/coresight/coresight.c standard