diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2006-06-26 22:18:07 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2006-06-26 22:18:07 +0000 |
commit | c1a42a452468db9ee06e84d2749bf5423a922518 (patch) | |
tree | f963abb2b912581ed0377e40e639e16aa62b44f0 | |
parent | c20bc39ab40cead8c3af0eda351ff586252421f3 (diff) |
Always skip the offending instruction for fpu faults, even if it is
theoretically recoverable, as there is no way we can rely on the signal
handler to do this properly; consistent with other platforms, and lets a
few autoconf tests in ports pass again.
spotted by sturm@; reluctantly ok kettenis@
-rw-r--r-- | sys/arch/sparc64/sparc64/trap.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/sys/arch/sparc64/sparc64/trap.c b/sys/arch/sparc64/sparc64/trap.c index 15a00ab5ff1..676695a8c3e 100644 --- a/sys/arch/sparc64/sparc64/trap.c +++ b/sys/arch/sparc64/sparc64/trap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: trap.c,v 1.41 2006/05/15 21:56:54 kettenis Exp $ */ +/* $OpenBSD: trap.c,v 1.42 2006/06/26 22:18:06 miod Exp $ */ /* $NetBSD: trap.c,v 1.73 2001/08/09 01:03:01 eeh Exp $ */ /* @@ -693,13 +693,10 @@ badtrap: copyin((caddr_t)pc, &p->p_md.md_fpstate->fs_queue[0].fq_instr, sizeof(int)); p->p_md.md_fpstate->fs_queue[0].fq_addr = (int *)pc; p->p_md.md_fpstate->fs_qsize = 1; - ADVANCE; } + ADVANCE; fpu_cleanup(p, p->p_md.md_fpstate); /* fpu_cleanup posts signals if needed */ -#if 0 /* ??? really never??? */ - ADVANCE; -#endif break; case T_TAGOF: |