diff options
author | Stafford Horne <shorne@gmail.com> | 2023-04-14 08:27:51 +0100 |
---|---|---|
committer | Stafford Horne <shorne@gmail.com> | 2023-04-26 15:08:06 +0100 |
commit | 27267655c5313ba0f5a3caa9ad35d887d9a12574 (patch) | |
tree | d72bb9628b509240ca045f77f9bfc98c4680cb0d /arch/openrisc/kernel/signal.c | |
parent | 63d7f9f11e5e81de2ce8f1c7a8aaed5b0288eddf (diff) | |
download | linux-27267655c5313ba0f5a3caa9ad35d887d9a12574.tar.gz linux-27267655c5313ba0f5a3caa9ad35d887d9a12574.tar.bz2 linux-27267655c5313ba0f5a3caa9ad35d887d9a12574.zip |
openrisc: Support floating point user api
Add support for handling floating point exceptions and forwarding the
SIGFPE signal to processes. Also, add fpu state to sigcontext.
Signed-off-by: Stafford Horne <shorne@gmail.com>
Diffstat (limited to 'arch/openrisc/kernel/signal.c')
-rw-r--r-- | arch/openrisc/kernel/signal.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/openrisc/kernel/signal.c b/arch/openrisc/kernel/signal.c index 80f69740c731..4664a18f0787 100644 --- a/arch/openrisc/kernel/signal.c +++ b/arch/openrisc/kernel/signal.c @@ -50,6 +50,7 @@ static int restore_sigcontext(struct pt_regs *regs, err |= __copy_from_user(regs, sc->regs.gpr, 32 * sizeof(unsigned long)); err |= __copy_from_user(®s->pc, &sc->regs.pc, sizeof(unsigned long)); err |= __copy_from_user(®s->sr, &sc->regs.sr, sizeof(unsigned long)); + err |= __copy_from_user(®s->fpcsr, &sc->fpu.fpcsr, sizeof(unsigned long)); /* make sure the SM-bit is cleared so user-mode cannot fool us */ regs->sr &= ~SPR_SR_SM; @@ -112,6 +113,7 @@ static int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc) err |= __copy_to_user(sc->regs.gpr, regs, 32 * sizeof(unsigned long)); err |= __copy_to_user(&sc->regs.pc, ®s->pc, sizeof(unsigned long)); err |= __copy_to_user(&sc->regs.sr, ®s->sr, sizeof(unsigned long)); + err |= __copy_to_user(&sc->fpu.fpcsr, ®s->fpcsr, sizeof(unsigned long)); return err; } |