1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-10-18 02:19:39 +00:00

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
This commit is contained in:
Dimitry Andric 2024-04-07 11:23:06 +02:00
parent f4d93b6761
commit 61e482f2fc
2 changed files with 5 additions and 2 deletions

View File

@ -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));
}

View File

@ -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*:N-fno-sanitize*}"
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