mirror of
https://gitlab.com/qemu-project/qemu.git
synced 2024-10-06 21:49:46 +03:00
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>
This commit is contained in:
parent
5b6828d194
commit
5fa2a10ba6
@ -77,4 +77,6 @@ struct target_sigframe {
|
||||
target_ucontext_t sf_uc; /* saved ucontext */
|
||||
};
|
||||
|
||||
#define TARGET_SIGSTACK_ALIGN 16
|
||||
|
||||
#endif /* TARGET_ARCH_SIGNAL_H */
|
||||
|
@ -86,4 +86,6 @@ struct target_sigframe {
|
||||
target_mcontext_vfp_t sf_vfp; /* actual saved VFP context */
|
||||
};
|
||||
|
||||
#define TARGET_SIGSTACK_ALIGN 8
|
||||
|
||||
#endif /* TARGET_ARCH_SIGNAL_H */
|
||||
|
@ -88,4 +88,6 @@ struct target_sigframe {
|
||||
uint32_t __spare__[2];
|
||||
};
|
||||
|
||||
#define TARGET_SIGSTACK_ALIGN 8
|
||||
|
||||
#endif /* TARGET_ARCH_SIGNAL_H */
|
||||
|
@ -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 */
|
||||
|
@ -97,4 +97,6 @@ struct target_sigframe {
|
||||
uint32_t __spare__[2];
|
||||
};
|
||||
|
||||
#define TARGET_SIGSTACK_ALIGN 16
|
||||
|
||||
#endif /* TARGET_ARCH_SIGNAL_H */
|
||||
|
Loading…
Reference in New Issue
Block a user