We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
2 parents 081bc61 + de3629b commit 593bde4Copy full SHA for 593bde4
arch/parisc/math-emu/driver.c
@@ -97,9 +97,19 @@ handle_fpe(struct pt_regs *regs)
97
98
memcpy(regs->fr, frcopy, sizeof regs->fr);
99
if (signalcode != 0) {
100
- force_sig_fault(signalcode >> 24, signalcode & 0xffffff,
101
- (void __user *) regs->iaoq[0]);
102
- return -1;
+ int sig = signalcode >> 24;
+
+ if (sig == SIGFPE) {
103
+ /*
104
+ * Clear floating point trap bit to avoid trapping
105
+ * again on the first floating-point instruction in
106
+ * the userspace signal handler.
107
+ */
108
+ regs->fr[0] &= ~(1ULL << 38);
109
+ }
110
+ force_sig_fault(sig, signalcode & 0xffffff,
111
+ (void __user *) regs->iaoq[0]);
112
+ return -1;
113
}
114
115
return signalcode ? -1 : 0;
0 commit comments