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) {