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:
parent
f4d93b6761
commit
61e482f2fc
@ -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));
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user