diff options
author | John Baldwin <jhb@FreeBSD.org> | 2020-05-10 14:53:08 +0000 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2020-05-10 14:53:08 +0000 |
commit | 9549bc679661ea52ea35126d3ac95801ab176cb3 (patch) | |
tree | 2a98443dd2cea75311f846067bfc3cbae61bd5ad /sys/arm64 | |
parent | 6d0e3cbac7f96482de36a161a460213649ccc5b9 (diff) | |
download | src-test2-9549bc679661ea52ea35126d3ac95801ab176cb3.tar.gz src-test2-9549bc679661ea52ea35126d3ac95801ab176cb3.zip |
Notes
Diffstat (limited to 'sys/arm64')
-rw-r--r-- | sys/arm64/arm64/machdep.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/arm64/arm64/machdep.c b/sys/arm64/arm64/machdep.c index e004a1eb63a9..62c2491f8cb7 100644 --- a/sys/arm64/arm64/machdep.c +++ b/sys/arm64/arm64/machdep.c @@ -95,6 +95,8 @@ __FBSDID("$FreeBSD$"); #include <dev/ofw/openfirm.h> #endif +static void get_fpcontext(struct thread *td, mcontext_t *mcp); +static void set_fpcontext(struct thread *td, mcontext_t *mcp); enum arm64_bus arm64_bus_method = ARM64_BUS_NONE; @@ -385,6 +387,7 @@ get_mcontext(struct thread *td, mcontext_t *mcp, int clear_ret) mcp->mc_gpregs.gp_sp = tf->tf_sp; mcp->mc_gpregs.gp_lr = tf->tf_lr; mcp->mc_gpregs.gp_elr = tf->tf_elr; + get_fpcontext(td, mcp); return (0); } @@ -406,6 +409,7 @@ set_mcontext(struct thread *td, mcontext_t *mcp) tf->tf_lr = mcp->mc_gpregs.gp_lr; tf->tf_elr = mcp->mc_gpregs.gp_elr; tf->tf_spsr = mcp->mc_gpregs.gp_spsr; + set_fpcontext(td, mcp); return (0); } @@ -577,15 +581,12 @@ sys_sigreturn(struct thread *td, struct sigreturn_args *uap) ucontext_t uc; int error; - if (uap == NULL) - return (EFAULT); if (copyin(uap->sigcntxp, &uc, sizeof(uc))) return (EFAULT); error = set_mcontext(td, &uc.uc_mcontext); if (error != 0) return (error); - set_fpcontext(td, &uc.uc_mcontext); /* Restore signal mask. */ kern_sigprocmask(td, SIG_SETMASK, &uc.uc_sigmask, NULL, 0); @@ -657,7 +658,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) /* Fill in the frame to copy out */ bzero(&frame, sizeof(frame)); get_mcontext(td, &frame.sf_uc.uc_mcontext, 0); - get_fpcontext(td, &frame.sf_uc.uc_mcontext); frame.sf_si = ksi->ksi_info; frame.sf_uc.uc_sigmask = *mask; frame.sf_uc.uc_stack.ss_flags = (td->td_pflags & TDP_ALTSTACK) ? |