--- linux/arch/alpha/kernel/traps.c.old Tue Jan 4 19:12:11 2000 +++ linux/arch/alpha/kernel/traps.c Sun Feb 20 19:45:06 2000 @@ -336,9 +336,14 @@ /* Software-completion summary bit is set, so try to emulate the instruction. */ if (!amask(AMASK_PRECISE_TRAP)) { +#ifdef CONFIG_ALPHA_EV4 + if (alpha_fp_emul(regs.pc)) + return; +#else /* 21264 (except pass 1) has precise exceptions. */ if (alpha_fp_emul(regs.pc - 4)) return; +#endif } else { if (alpha_fp_emul_imprecise(®s, write_mask)) return; @@ -417,8 +422,13 @@ /* EV4 does not implement anything except normal rounding. Everything else will come here as an illegal instruction. Emulate them. */ - if (alpha_fp_emul(regs.pc - 4)) + if (alpha_fp_emul(regs.pc)) + { + /* Increment the PC so that the program in + user space continues */ + regs.pc += 4; return; + } } send_sig(SIGILL, current, 1); break;