[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 23/24] bsd-user/arm/target_arch_signal.h: arm get_ucontext_sigret
From: |
Warner Losh |
Subject: |
[PATCH 23/24] bsd-user/arm/target_arch_signal.h: arm get_ucontext_sigreturn |
Date: |
Tue, 19 Oct 2021 10:44:46 -0600 |
Update ucontext to implement sigreturn.
Signed-off-by: Stacey Son <sson@FreeBSD.org>
Signed-off-by: Warner Losh <imp@bsdimp.com>
---
bsd-user/arm/target_arch_signal.h | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/bsd-user/arm/target_arch_signal.h
b/bsd-user/arm/target_arch_signal.h
index 1d051af9ae..7da68c727c 100644
--- a/bsd-user/arm/target_arch_signal.h
+++ b/bsd-user/arm/target_arch_signal.h
@@ -232,4 +232,22 @@ static inline abi_long set_mcontext(CPUARMState *regs,
target_mcontext_t *mcp,
return err;
}
+/* Compare to arm/arm/machdep.c sys_sigreturn() */
+static inline abi_long get_ucontext_sigreturn(CPUARMState *regs,
+ abi_ulong target_sf, abi_ulong *target_uc)
+{
+ uint32_t cpsr = cpsr_read(regs);
+
+ *target_uc = 0;
+
+ if ((cpsr & CPSR_M) != ARM_CPU_MODE_USR ||
+ (cpsr & (CPSR_I | CPSR_F)) != 0) {
+ return -TARGET_EINVAL;
+ }
+
+ *target_uc = target_sf;
+
+ return 0;
+}
+
#endif /* !_TARGET_ARCH_SIGNAL_H_ */
--
2.32.0