parisc: clear floating point exception flag on SIGFPE signal
authorHelge Deller <deller@gmx.de>
Mon, 3 May 2010 20:44:21 +0000 (20:44 +0000)
committerKyle McMartin <kyle@dreadnought.i.jkkm.org>
Sun, 30 May 2010 09:39:58 +0000 (05:39 -0400)
Clear the floating point exception flag before returning to
user space. This is needed, else the libc trampoline handler
may hit the same SIGFPE again while building up a trampoline
to a signal handler.

Fixes debian bug #559406.

Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
arch/parisc/math-emu/decode_exc.c

index 3ca1c61..27a7492 100644 (file)
@@ -342,6 +342,7 @@ decode_fpu(unsigned int Fpu_register[], unsigned int trap_counts[])
                return SIGNALCODE(SIGFPE, FPE_FLTINV);
          case DIVISIONBYZEROEXCEPTION:
                update_trap_counts(Fpu_register, aflags, bflags, trap_counts);
+               Clear_excp_register(exception_index);
                return SIGNALCODE(SIGFPE, FPE_FLTDIV);
          case INEXACTEXCEPTION:
                update_trap_counts(Fpu_register, aflags, bflags, trap_counts);