[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 20/24] bsd-user/arm/target_arch_signal.h: arm set_sigtramp_ar
From: |
Kyle Evans |
Subject: |
Re: [PATCH 20/24] bsd-user/arm/target_arch_signal.h: arm set_sigtramp_args |
Date: |
Tue, 26 Oct 2021 01:10:19 -0500 |
On Tue, Oct 19, 2021 at 11:45 AM Warner Losh <imp@bsdimp.com> wrote:
>
> Implement set_sigtramp_args to setup the arguments to the sigtramp
> calls.
>
> Signed-off-by: Stacey Son <sson@FreeBSD.org>
> Signed-off-by: Warner Losh <imp@bsdimp.com>
> ---
> bsd-user/arm/target_arch_signal.h | 35 +++++++++++++++++++++++++++++++
> 1 file changed, 35 insertions(+)
>
> diff --git a/bsd-user/arm/target_arch_signal.h
> b/bsd-user/arm/target_arch_signal.h
> index 67355ff28f..b421c2522c 100644
> --- a/bsd-user/arm/target_arch_signal.h
> +++ b/bsd-user/arm/target_arch_signal.h
> @@ -128,4 +128,39 @@ struct target_trapframe {
> abi_ulong tf_pc;
> };
>
> +/*
> + * Compare to arm/arm/machdep.c sendsig()
> + * Assumes that target stack frame memory is locked.
> + */
> +static inline abi_long
> +set_sigtramp_args(CPUARMState *regs, int sig, struct target_sigframe *frame,
> + abi_ulong frame_addr, struct target_sigaction *ka)
> +{
> + /*
> + * Arguments to signal handler:
> + * r0 = signal number
> + * r1 = siginfo pointer
> + * r2 = ucontext pointer
> + * r5 = ucontext pointer
> + * pc = signal handler pointer
> + * sp = sigframe struct pointer
> + * lr = sigtramp at base of user stack
> + */
> +
> + regs->regs[0] = sig;
> + regs->regs[1] = frame_addr +
> + offsetof(struct target_sigframe, sf_si);
> + regs->regs[2] = frame_addr +
> + offsetof(struct target_sigframe, sf_uc);
> +
> + /* the trampoline uses r5 as the uc address */
> + regs->regs[5] = frame_addr +
> + offsetof(struct target_sigframe, sf_uc);
> + regs->regs[TARGET_REG_PC] = ka->_sa_handler;
> + regs->regs[TARGET_REG_SP] = frame_addr;
> + regs->regs[TARGET_REG_LR] = TARGET_PS_STRINGS - TARGET_SZSIGCODE;
> +
> + return 0;
> +}
> +
> #endif /* !_TARGET_ARCH_SIGNAL_H_ */
> --
> 2.32.0
>
Reviewed-by: Kyle Evans <kevans@FreeBSD.org>
- Re: [PATCH 15/24] bsd-user/arm/target_arch_elf.h: arm get hwcap, (continued)
[PATCH 21/24] bsd-user/arm/target_arch_signal.h: arm get_mcontext, Warner Losh, 2021/10/19
[PATCH 19/24] bsd-user/arm/target_arch_signal.h: arm user context and trapframe for signals, Warner Losh, 2021/10/19