From: Warner Losh <imp@bsdimp.com>
To: qemu-devel@nongnu.org
Cc: Kyle Evans <kevans@freebsd.org>,
qemu-arm@nongnu.org, Warner Losh <imp@bsdimp.com>,
Peter Maydell <peter.maydell@linaro.org>
Subject: [PATCH 12/14] bsd-user: Define TARGET_SIGSTACK_ALIGN and use it to round stack
Date: Mon, 22 Jul 2024 15:43:11 -0600 [thread overview]
Message-ID: <20240722214313.89503-13-imp@bsdimp.com> (raw)
In-Reply-To: <20240722214313.89503-1-imp@bsdimp.com>
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>
---
bsd-user/aarch64/target_arch_signal.h | 2 ++
bsd-user/arm/target_arch_signal.h | 2 ++
bsd-user/i386/target_arch_signal.h | 2 ++
bsd-user/signal.c | 9 +--------
bsd-user/x86_64/target_arch_signal.h | 2 ++
5 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/bsd-user/aarch64/target_arch_signal.h b/bsd-user/aarch64/target_arch_signal.h
index bff752a67ab..b72ba7aa504 100644
--- a/bsd-user/aarch64/target_arch_signal.h
+++ b/bsd-user/aarch64/target_arch_signal.h
@@ -77,4 +77,6 @@ struct target_sigframe {
target_ucontext_t sf_uc; /* saved ucontext */
};
+#define TARGET_SIGSTACK_ALIGN 16
+
#endif /* TARGET_ARCH_SIGNAL_H */
diff --git a/bsd-user/arm/target_arch_signal.h b/bsd-user/arm/target_arch_signal.h
index 02b2b33e07a..10f96b8bfc9 100644
--- a/bsd-user/arm/target_arch_signal.h
+++ b/bsd-user/arm/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 */
diff --git a/bsd-user/i386/target_arch_signal.h b/bsd-user/i386/target_arch_signal.h
index 279dadc22c7..2c14153ab6b 100644
--- a/bsd-user/i386/target_arch_signal.h
+++ b/bsd-user/i386/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 */
diff --git a/bsd-user/signal.c b/bsd-user/signal.c
index 8b6654b91da..da49b9bffc1 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 */
diff --git a/bsd-user/x86_64/target_arch_signal.h b/bsd-user/x86_64/target_arch_signal.h
index ca24bf1e7f7..f833ee66cef 100644
--- a/bsd-user/x86_64/target_arch_signal.h
+++ b/bsd-user/x86_64/target_arch_signal.h
@@ -97,4 +97,6 @@ struct target_sigframe {
uint32_t __spare__[2];
};
+#define TARGET_SIGSTACK_ALIGN 16
+
#endif /* TARGET_ARCH_SIGNAL_H */
--
2.45.1
next prev parent reply other threads:[~2024-07-22 21:46 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-22 21:42 [PATCH 00/14] bsd-user: Misc changes for 9.1 (I hope) Warner Losh
2024-07-22 21:43 ` [PATCH 01/14] bsd-user:Add CPU initialization and management functions Warner Losh
2024-07-22 21:43 ` [PATCH 02/14] bsd-user:Add AArch64 register handling and related functions Warner Losh
2024-07-22 21:43 ` [PATCH 03/14] bsd-user:Add ARM AArch64 support and capabilities Warner Losh
2024-07-22 21:43 ` [PATCH 04/14] bsd-user:Add ARM AArch64 signal handling support Warner Losh
2024-07-22 21:43 ` [PATCH 05/14] bsd-user:Add get_mcontext function for ARM AArch64 Warner Losh
2024-07-22 21:43 ` [PATCH 06/14] bsd-user:Add setup_sigframe_arch " Warner Losh
2024-07-22 21:43 ` [PATCH 07/14] bsd-user:Add set_mcontext " Warner Losh
2024-07-22 21:43 ` [PATCH 08/14] bsd-user:Add AArch64 improvements and signal handling functions Warner Losh
2024-07-22 21:43 ` [PATCH 09/14] bsd-user: Simplify the implementation of execve Warner Losh
2024-07-23 1:03 ` Richard Henderson
2024-07-22 21:43 ` [PATCH 10/14] bsd-user: Hard wire aarch64 to be 4k pages only Warner Losh
2024-07-23 1:10 ` Richard Henderson
2024-07-23 5:01 ` Warner Losh
2024-07-23 5:38 ` Richard Henderson
2024-07-22 21:43 ` [PATCH 11/14] bsd-user: Sync fork_start/fork_end with linux-user Warner Losh
2024-07-23 1:13 ` Richard Henderson
2024-07-22 21:43 ` Warner Losh [this message]
2024-07-23 1:14 ` [PATCH 12/14] bsd-user: Define TARGET_SIGSTACK_ALIGN and use it to round stack Richard Henderson
2024-07-22 21:43 ` [PATCH 13/14] bsd-user: Make compile for non-linux user-mode stuff Warner Losh
2024-07-22 22:01 ` Philippe Mathieu-Daudé
2024-07-22 23:09 ` Alex Bennée
2024-07-23 5:12 ` Warner Losh
2024-07-23 1:15 ` Richard Henderson
2024-07-22 21:43 ` [PATCH 14/14] bsd-user: Add aarch64 build to tree Warner Losh
2024-07-22 21:54 ` Philippe Mathieu-Daudé
2024-07-22 22:06 ` Warner Losh
2024-07-22 22:11 ` Philippe Mathieu-Daudé
2024-07-23 1:17 ` Richard Henderson
2024-07-23 5:08 ` Warner Losh
2024-07-23 5:10 ` Warner Losh
2024-07-23 6:38 ` Philippe Mathieu-Daudé
2024-07-23 16:54 ` Warner Losh
2024-07-23 5:39 ` Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240722214313.89503-13-imp@bsdimp.com \
--to=imp@bsdimp.com \
--cc=kevans@freebsd.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.