Commit aeb1c0f6 authored by Eric W. Biederman's avatar Eric W. Biederman

signal/powerpc: Replace FPE_FIXME with FPE_FLTUNK

Using an si_code of 0 that aliases with SI_USER is clearly the
wrong thing todo, and causes problems in interesting ways.

The newly defined FPE_FLTUNK semantically appears to fit the
bill so use it instead.

Cc: Paul Mackerras <paulus@samba.org>
Cc: Kumar Gala <kumar.gala@freescale.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc:  linuxppc-dev@lists.ozlabs.org
Fixes: 9bad068c ("[PATCH] ppc32: support for e500 and 85xx")
Fixes: 0ed70f61 ("PPC32: Provide proper siginfo information on various exceptions.")
History Tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.gitSigned-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
parent 51dd709f
...@@ -15,13 +15,6 @@ ...@@ -15,13 +15,6 @@
#include <asm-generic/siginfo.h> #include <asm-generic/siginfo.h>
/*
* SIGFPE si_codes
*/
#ifdef __KERNEL__
#define FPE_FIXME 0 /* Broken dup of SI_USER */
#endif /* __KERNEL__ */
/* /*
* SIGTRAP si_codes * SIGTRAP si_codes
*/ */
......
...@@ -1031,7 +1031,7 @@ static void emulate_single_step(struct pt_regs *regs) ...@@ -1031,7 +1031,7 @@ static void emulate_single_step(struct pt_regs *regs)
static inline int __parse_fpscr(unsigned long fpscr) static inline int __parse_fpscr(unsigned long fpscr)
{ {
int ret = FPE_FIXME; int ret = FPE_FLTUNK;
/* Invalid operation */ /* Invalid operation */
if ((fpscr & FPSCR_VE) && (fpscr & FPSCR_VX)) if ((fpscr & FPSCR_VE) && (fpscr & FPSCR_VX))
...@@ -1972,7 +1972,7 @@ void SPEFloatingPointException(struct pt_regs *regs) ...@@ -1972,7 +1972,7 @@ void SPEFloatingPointException(struct pt_regs *regs)
extern int do_spe_mathemu(struct pt_regs *regs); extern int do_spe_mathemu(struct pt_regs *regs);
unsigned long spefscr; unsigned long spefscr;
int fpexc_mode; int fpexc_mode;
int code = FPE_FIXME; int code = FPE_FLTUNK;
int err; int err;
flush_spe_to_thread(current); flush_spe_to_thread(current);
...@@ -2041,7 +2041,7 @@ void SPEFloatingPointRoundException(struct pt_regs *regs) ...@@ -2041,7 +2041,7 @@ void SPEFloatingPointRoundException(struct pt_regs *regs)
printk(KERN_ERR "unrecognized spe instruction " printk(KERN_ERR "unrecognized spe instruction "
"in %s at %lx\n", current->comm, regs->nip); "in %s at %lx\n", current->comm, regs->nip);
} else { } else {
_exception(SIGFPE, regs, FPE_FIXME, regs->nip); _exception(SIGFPE, regs, FPE_FLTUNK, regs->nip);
return; return;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment