diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2004-06-22 05:02:36 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2004-06-22 05:02:36 +0000 |
commit | 8604291e10a59739f1632613615ccd05820e4869 (patch) | |
tree | 9cbb3dbf281f2de4394f7926b5f6f46f665e4116 | |
parent | ca1eff565277850b0231424d808feb6336d85a51 (diff) |
After 88110 exception processing, do not reset the in-frame [di][lp]ar
values, they won't be put back to registers anyways...
-rw-r--r-- | sys/arch/m88k/m88k/trap.c | 8 | ||||
-rw-r--r-- | sys/arch/mvme88k/mvme88k/eh.S | 14 |
2 files changed, 6 insertions, 16 deletions
diff --git a/sys/arch/m88k/m88k/trap.c b/sys/arch/m88k/m88k/trap.c index 4fe7b704a49..13392c15cfe 100644 --- a/sys/arch/m88k/m88k/trap.c +++ b/sys/arch/m88k/m88k/trap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: trap.c,v 1.6 2004/06/22 05:01:05 miod Exp $ */ +/* $OpenBSD: trap.c,v 1.7 2004/06/22 05:02:32 miod Exp $ */ /* * Copyright (c) 2004, Miodrag Vallat. * Copyright (c) 1998 Steve Murphree, Jr. @@ -1009,7 +1009,6 @@ m88110_user_fault: */ if (result != 0 && p->p_addr->u_pcb.pcb_onfault != NULL) { frame->tf_exip = p->p_addr->u_pcb.pcb_onfault; - frame->tf_dsr = frame->tf_isr = 0; /* * Continue as if the fault had been resolved. */ @@ -1143,11 +1142,6 @@ m88110_user_fault: if (sig) { sv.sival_int = fault_addr; trapsignal(p, sig, fault_code, fault_type, sv); - /* - * don't want multiple faults - we are going to - * deliver signal. - */ - frame->tf_dsr = frame->tf_isr = 0; } userret(p, frame, sticks); diff --git a/sys/arch/mvme88k/mvme88k/eh.S b/sys/arch/mvme88k/mvme88k/eh.S index 88a8990fcac..0784e15f34b 100644 --- a/sys/arch/mvme88k/mvme88k/eh.S +++ b/sys/arch/mvme88k/mvme88k/eh.S @@ -1,4 +1,4 @@ -/* $OpenBSD: eh.S,v 1.51 2004/06/22 05:01:08 miod Exp $ */ +/* $OpenBSD: eh.S,v 1.52 2004/06/22 05:02:35 miod Exp $ */ /* * Mach Operating System * Copyright (c) 1993-1991 Carnegie Mellon University @@ -943,8 +943,6 @@ ASLOCAL(m88110_badaddr__return_nonzero) * DSR before the rte instruction clears the EFRZ bit in the PSR. */ stcr r0, DSR - stcr r0, DLAR - stcr r0, DPAR /* FALLTHROUGH */ #endif ASLOCAL(badaddr__return_nonzero) @@ -2576,14 +2574,12 @@ ASLOCAL(m88110_setup_phase_two) ASLOCAL(m88110_fpu_enable) FLUSH_PIPELINE + /* Now we can handle another exception!!! */ /* Now that EFRZ is cleared, we can clear these */ - stcr r0, ISR /* Clear ISR */ - stcr r0, ILAR /* Clear ILAR */ - stcr r0, IPAR /* Clear IPAR */ - stcr r0, DSR /* Clear DSR */ - stcr r0, DLAR /* Clear DLAR */ - stcr r0, DPAR /* Clear DPAR */ + stcr r0, ISR + stcr r0, DSR + xcr TMP, TMP, SR3 /* get E.F. pointer */ st r30, TMP, GENREG_OFF(30) /* save previous r30, r31 */ st r31, TMP, GENREG_OFF(31) /* save previous r30, r31 */ |