From ed933d00501cc978944e4e7ff3a3fc45aefb6b89 Mon Sep 17 00:00:00 2001 From: KATO Takenori Date: Thu, 19 Dec 1996 08:27:33 +0000 Subject: [PATCH] Synchronize with sys/i386/i386/trap.c revision 1.84 (handle copyin/out/etc code). --- sys/pc98/i386/trap.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/sys/pc98/i386/trap.c b/sys/pc98/i386/trap.c index de45a14d985..6914fd4d135 100644 --- a/sys/pc98/i386/trap.c +++ b/sys/pc98/i386/trap.c @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)trap.c 7.4 (Berkeley) 5/13/91 - * $Id: trap.c,v 1.7 1996/09/12 11:09:36 asami Exp $ + * $Id: trap.c,v 1.8 1996/10/23 07:25:03 asami Exp $ */ /* @@ -378,10 +378,10 @@ trap(frame) doreti_popl_ds_fault); MAYBE_DORETI_FAULT(doreti_popl_es, doreti_popl_es_fault); - } - if (curpcb && curpcb->pcb_onfault) { - frame.tf_eip = (int)curpcb->pcb_onfault; - return; + if (curpcb && curpcb->pcb_onfault) { + frame.tf_eip = (int)curpcb->pcb_onfault; + return; + } } break; @@ -532,7 +532,8 @@ trap_pfault(frame, usermode) if (p == NULL || (!usermode && va < VM_MAXUSER_ADDRESS && - (curpcb == NULL || curpcb->pcb_onfault == NULL))) { + (intr_nesting_level != 0 || curpcb == NULL || + curpcb->pcb_onfault == NULL))) { trap_fatal(frame); return (-1); } @@ -589,7 +590,7 @@ trap_pfault(frame, usermode) return (0); nogo: if (!usermode) { - if (curpcb && curpcb->pcb_onfault) { + if (intr_nesting_level == 0 && curpcb && curpcb->pcb_onfault) { frame->tf_eip = (int)curpcb->pcb_onfault; return (0); } @@ -695,7 +696,7 @@ trap_pfault(frame, usermode) return (0); nogo: if (!usermode) { - if (curpcb && curpcb->pcb_onfault) { + if (intr_nesting_level == 0 && curpcb && curpcb->pcb_onfault) { frame->tf_eip = (int)curpcb->pcb_onfault; return (0); }