Maintain si_code field properly for FP exceptions]
PATCH 1/1 Maintain si_code field properly for FP exceptions]
----- Forwarded message from Thiemo Seufer <[email protected]> -----
From: Thiemo Seufer <[email protected]>
Date: Wed, 22 Aug 2007 01:42:04 +0100
To: [email protected]
Subject: [PATCH] Maintain si_code field properly for FP exceptions
Content-Type: text/plain; charset=us-ascii
The appended patch adds code to update siginfo_t's si_code field. It fixes e.g. a floating point overflow regression in the SBCL testsuite.
Thiemo
Signed-off-by Thiemo Seufer <[email protected]>
arch/mips/kernel/traps.c +18 -3
@@ -606,6 +606,8 @@ asmlinkage void do_ov(struct pt_regs *regs)*/ asmlinkage void do_fpe(struct pt_regs *regs, unsigned long fcr31) { +siginfo_t info; +die_if_kernel ("FP exception in kernel code" , regs);if (fcr31 &FPU_CSR_UNI_X ) {
@@ -641,9 +643,22 @@ asmlinkage void do_fpe(struct pt_regs *regs, unsigned long fcr31)force_sig (sig, current);return ; - } - -force_sig (SIGFPE , current); + }else if (fcr31 &FPU_CSR_INV_X ) + info.si_code =FPE_FLTINV ; +else if (fcr31 &FPU_CSR_DIV_X ) + info.si_code =FPE_FLTDIV ; +else if (fcr31 &FPU_CSR_OVF_X ) + info.si_code =FPE_FLTOVF ; +else if (fcr31 &FPU_CSR_UDF_X ) + info.si_code =FPE_FLTUND ; +else if (fcr31 &FPU_CSR_INE_X ) + info.si_code =FPE_FLTRES ; +else + info.si_code = __SI_FAULT; + info.si_signo =SIGFPE ; + info.si_errno =0 ; + info.si_addr = (void __user *) regs->cp0_epc; +force_sig_info (SIGFPE , &info, current); } asmlinkage void do_bp(struct pt_regs *regs)
----- End forwarded message -----
Ralf
Ralf Baechle
AppliedQuoted 8 lines · Ralf Baechle
The appended patch adds code to update siginfo_t's
si_codefield. It fixes e.g. a floating point overflow regression in the SBCL testsuite.Thiemo
Signed-off-by Thiemo Seufer <[email protected]>
Applied. Thanks!
Ralf