diff options
author | Paul Mundt <lethal@linux-sh.org> | 2007-06-11 15:57:42 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2007-06-11 15:57:42 +0900 |
commit | d3efbdd6c5e8c823b732df26a355ec931ccab374 (patch) | |
tree | 097cd487ffc3005ca4d1deabf01a3f3562609438 /arch/sh/math-emu | |
parent | a1e2833d13db6c2f0456b20338f66c0b248f5367 (diff) | |
download | linux-d3efbdd6c5e8c823b732df26a355ec931ccab374.tar.gz linux-d3efbdd6c5e8c823b732df26a355ec931ccab374.tar.bz2 linux-d3efbdd6c5e8c823b732df26a355ec931ccab374.zip |
sh: Fix up the math-emu build.
math-emu wasn't converted for the trap_no/errno_code changes,
get it building again.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/math-emu')
-rw-r--r-- | arch/sh/math-emu/math.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/arch/sh/math-emu/math.c b/arch/sh/math-emu/math.c index a38e1eed9e77..ac2d7abd2567 100644 --- a/arch/sh/math-emu/math.c +++ b/arch/sh/math-emu/math.c @@ -507,6 +507,7 @@ static int ieee_fpe_handler(struct pt_regs *regs) unsigned short insn = *(unsigned short *)regs->pc; unsigned short finsn; unsigned long nextpc; + siginfo_t info; int nib[4] = { (insn >> 12) & 0xf, (insn >> 8) & 0xf, @@ -559,9 +560,11 @@ static int ieee_fpe_handler(struct pt_regs *regs) ~(FPSCR_CAUSE_MASK | FPSCR_FLAG_MASK); set_tsk_thread_flag(tsk, TIF_USEDFPU); } else { - tsk->thread.trap_no = 11; - tsk->thread.error_code = 0; - force_sig(SIGFPE, tsk); + info.si_signo = SIGFPE; + info.si_errno = 0; + info.si_code = FPE_FLTINV; + info.si_addr = (void __user *)regs->pc; + force_sig_info(SIGFPE, &info, tsk); } regs->pc = nextpc; @@ -576,14 +579,17 @@ asmlinkage void do_fpu_error(unsigned long r4, unsigned long r5, struct pt_regs regs) { struct task_struct *tsk = current; + siginfo_t info; if (ieee_fpe_handler (®s)) return; regs.pc += 2; - tsk->thread.trap_no = 11; - tsk->thread.error_code = 0; - force_sig(SIGFPE, tsk); + info.si_signo = SIGFPE; + info.si_errno = 0; + info.si_code = FPE_FLTINV; + info.si_addr = (void __user *)regs.pc; + force_sig_info(SIGFPE, &info, tsk); } /** |