summary refs log tree commit diff stats
path: root/bsd-user/signal.c
diff options
context:
space:
mode:
authorWarner Losh <imp@bsdimp.com>2024-06-23 15:29:42 -0600
committerWarner Losh <imp@bsdimp.com>2024-07-23 10:56:30 -0600
commit5fa2a10ba6822fc1e500e921dcae344db46e1649 (patch)
tree53a8955280e815b90aee881addd0b245ad0c339e /bsd-user/signal.c
parent5b6828d194fba3c170a5f717cc1fc3d35645aadd (diff)
downloadfocaccia-qemu-5fa2a10ba6822fc1e500e921dcae344db46e1649.tar.gz
focaccia-qemu-5fa2a10ba6822fc1e500e921dcae344db46e1649.zip
bsd-user: Define TARGET_SIGSTACK_ALIGN and use it to round stack
Most (all?) targets require stacks to be properly aligned. Rather than a
series of ifdefs in bsd-user/signal.h, instead use a manditory #define
for all architectures.

Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'bsd-user/signal.c')
-rw-r--r--bsd-user/signal.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/bsd-user/signal.c b/bsd-user/signal.c
index 8b6654b91d..da49b9bffc 100644
--- a/bsd-user/signal.c
+++ b/bsd-user/signal.c
@@ -728,14 +728,7 @@ static inline abi_ulong get_sigframe(struct target_sigaction *ka,
         sp = ts->sigaltstack_used.ss_sp + ts->sigaltstack_used.ss_size;
     }
 
-/* TODO: make this a target_arch function / define */
-#if defined(TARGET_ARM)
-    return (sp - frame_size) & ~7;
-#elif defined(TARGET_AARCH64)
-    return (sp - frame_size) & ~15;
-#else
-    return sp - frame_size;
-#endif
+    return ROUND_DOWN(sp - frame_size, TARGET_SIGSTACK_ALIGN);
 }
 
 /* compare to $M/$M/exec_machdep.c sendsig and sys/kern/kern_sig.c sigexit */