Use ".arch_extension fp" for the signal trampoline since it saves and
authorkettenis <kettenis@openbsd.org>
Sat, 27 Jul 2024 13:31:26 +0000 (13:31 +0000)
committerkettenis <kettenis@openbsd.org>
Sat, 27 Jul 2024 13:31:26 +0000 (13:31 +0000)
restores the FPU registers (running in userland).  And add an
".arch_extension nofp" afterwards such that the remaining kernel code
can't touch the FPU.

Needed to build with clang18

ok jsg@

sys/arch/arm64/arm64/locore.S

index 4781cdb..54cd592 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: locore.S,v 1.46 2024/03/16 20:46:28 kettenis Exp $ */
+/* $OpenBSD: locore.S,v 1.47 2024/07/27 13:31:26 kettenis Exp $ */
 /*-
  * Copyright (c) 2012-2014 Andrew Turner
  * All rights reserved.
@@ -315,6 +315,9 @@ initstack:
        .globl initstack_end
 initstack_end:
 
+/* The signal trampoline saves and restores the floating-point registers. */
+.arch_extension        fp
+
        .text
        .globl  sigcode
        .type   sigcode,@function
@@ -387,6 +390,9 @@ esigfill:
 sigfillsiz:
        .word   esigfill - sigfill
 
+/* Back to normal kernel code. */
+.arch_extension        nofp
+
        .text
 
 #ifdef MULTIPROCESSOR