|
From: | Richard Henderson |
Subject: | Re: [PATCH 19/24] bsd-user/arm/target_arch_signal.h: arm user context and trapframe for signals |
Date: | Thu, 28 Oct 2021 10:22:39 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 |
On 10/19/21 9:44 AM, Warner Losh wrote:
Arm specific user context structures for signal handling and the closely related trap frame. Signed-off-by: Stacey Son <sson@FreeBSD.org> Signed-off-by: Warner Losh <imp@bsdimp.com> --- bsd-user/arm/target_arch_signal.h | 38 +++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/bsd-user/arm/target_arch_signal.h b/bsd-user/arm/target_arch_signal.h index 9fee58ca9c..67355ff28f 100644 --- a/bsd-user/arm/target_arch_signal.h +++ b/bsd-user/arm/target_arch_signal.h @@ -90,4 +90,42 @@ typedef struct target_mcontext { } __fpu; } target_mcontext_t;+typedef struct target_ucontext {+ target_sigset_t uc_sigmask; + target_mcontext_t uc_mcontext; + abi_ulong uc_link; + target_stack_t uc_stack; + int32_t uc_flags; + int32_t __spare__[4]; +} target_ucontext_t;
This is from the common <sys/_ucontext.h>. Is there any way we can share that here in qemu as well?
+struct target_sigframe { + target_siginfo_t sf_si; /* saved siginfo */ + target_ucontext_t sf_uc; /* saved ucontext */ +};
You're missing the storage for mcontext_vfp_t sf_vfpthe address of which goes in mcontext_t.mc_vfp_ptr (which isn't in the version of mcontext_t from patch 18).
+/* compare to sys/arm/include/frame.h */ +struct target_trapframe { + abi_ulong tf_spsr; /* Zero on arm26 */ + abi_ulong tf_r0; + abi_ulong tf_r1; + abi_ulong tf_r2; + abi_ulong tf_r3; + abi_ulong tf_r4; + abi_ulong tf_r5; + abi_ulong tf_r6; + abi_ulong tf_r7; + abi_ulong tf_r8; + abi_ulong tf_r9; + abi_ulong tf_r10; + abi_ulong tf_r11; + abi_ulong tf_r12; + abi_ulong tf_usr_sp; + abi_ulong tf_usr_lr; + abi_ulong tf_svc_sp; /* Not used on arm26 */ + abi_ulong tf_svc_lr; /* Not used on arm26 */ + abi_ulong tf_pc; +};
This is not used by the user abi for signals. It is a kernel structure for its own internal trap handling. Why are you including it?
r~
[Prev in Thread] | Current Thread | [Next in Thread] |