diff --git a/sys/arch/sparc64/sparc64/trap.c b/sys/arch/sparc64/sparc64/trap.c index 6e86972575ec..a698a95a8a29 100644 --- a/sys/arch/sparc64/sparc64/trap.c +++ b/sys/arch/sparc64/sparc64/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.67 2001/06/07 15:31:16 mrg Exp $ */ +/* $NetBSD: trap.c,v 1.68 2001/06/21 00:10:49 eeh Exp $ */ /* * Copyright (c) 1996 @@ -1287,10 +1287,12 @@ data_access_error(type, sfva, sfsr, afva, afsr, tf) * then things are really bizarre, and we treat it as a hard * error and pass it on to memerr4m. */ + onfault = p->p_addr ? (long)p->p_addr->u_pcb.pcb_onfault : 0; if ((afsr) != 0 || (type == T_DATAFAULT && !(sfsr & SFSR_FV))) { printf("data memory error type %x sfsr=%lx sfva=%lx afsr=%lx afva=%lx tf=%p\n", type, sfsr, sfva, afsr, afva, tf); + if (onfault) goto kfault; if (tstate & (PSTATE_PRIV<p_addr ? - (long)p->p_addr->u_pcb.pcb_onfault : 0; if (!onfault) { extern int trap_trace_dis; char buf[768];