summaryrefslogtreecommitdiff
path: root/sys/arch/mac68k
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2006-01-16 21:46:26 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2006-01-16 21:46:26 +0000
commitac32e1db99c264d3bdcd5f3bfc221c3af6c8cdf6 (patch)
tree64f2146be166e95a17882c8482af1dca31404006 /sys/arch/mac68k
parentcd94fe43f3934111cf41f77ed70f36aadc3134db (diff)
Correctly handle successfull FP emulation (doh!)
Diffstat (limited to 'sys/arch/mac68k')
-rw-r--r--sys/arch/mac68k/mac68k/trap.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/arch/mac68k/mac68k/trap.c b/sys/arch/mac68k/mac68k/trap.c
index a4f7c0aed80..87e61325772 100644
--- a/sys/arch/mac68k/mac68k/trap.c
+++ b/sys/arch/mac68k/mac68k/trap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: trap.c,v 1.47 2006/01/13 19:36:47 miod Exp $ */
+/* $OpenBSD: trap.c,v 1.48 2006/01/16 21:46:25 miod Exp $ */
/* $NetBSD: trap.c,v 1.68 1998/12/22 08:47:07 scottr Exp $ */
/*
@@ -414,14 +414,17 @@ copyfault:
#ifdef FPU_EMULATE
i = fpu_emulate(&frame, &p->p_addr->u_pcb.pcb_fpregs);
/* XXX -- deal with tracing? (frame.f_sr & PSL_T) */
+ if (i == 0)
+ goto out;
+ typ = i == SIGSEGV ? SEGV_MAPERR : ILL_COPROC;
#else
uprintf("pid %d killed: no floating point support.\n",
p->p_pid);
i = SIGILL;
- ucode = frame.f_format;
typ = ILL_COPROC;
- v = frame.f_pc;
#endif
+ ucode = frame.f_format;
+ v = frame.f_pc;
break;
case T_COPERR: /* Kernel coprocessor violation */