Apply by doing:
	cd /usr/src/sys/arch/powerpc/powerpc
	patch < 001_trap.patch

build a new kernel, ie.
	cd /usr/src/sys/arch/powerpc/conf
	config GENERIC
	cd ../compile/GENERIC
	make
	mv /bsd /bsd.1
	cp bsd /bsd
	reboot

Index: trap.c
===================================================================
RCS file: /cvs/src/sys/arch/powerpc/powerpc/trap.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- trap.c	1999/03/13 01:49:07	1.13
+++ trap.c	1999/04/22 06:08:06	1.14
@@ -133,7 +133,7 @@
 				ftype = VM_PROT_READ;
 			if (vm_fault(map, trunc_page(va), ftype, FALSE)
 			    == KERN_SUCCESS)
-				break;
+				return;
 			if (fb = p->p_addr->u_pcb.pcb_onfault) {
 				p->p_addr->u_pcb.pcb_onfault = 0;
 				frame->srr0 = fb->pc;		/* PC */
@@ -465,8 +465,10 @@
 	faultbuf env;
 	u_int32_t v;
 
-	if (setfault(env))
+	if (setfault(env)) {
+		curpcb->pcb_onfault = 0;
 		return EACCES;
+	}
 	switch(len) {
 	case 4:
 		v = *((volatile u_int32_t *)addr);
@@ -492,8 +494,10 @@
 	size_t l;
 	faultbuf env;
 
-	if (setfault(env))
+	if (setfault(env)) {
+		curpcb->pcb_onfault = 0;
 		return EACCES;
+	}
 	while (len > 0) {
 		p = USER_ADDR + ((u_int)udaddr & ~SEGMENT_MASK);
 		l = (USER_ADDR + SEGMENT_LENGTH) - p;
@@ -520,6 +524,7 @@
 	faultbuf env;
 
 	if (setfault(env)) {
+		curpcb->pcb_onfault = 0;
 		return EACCES;
 	}
 	while (len > 0) {
