And part 2 of the onfault repair. Do the actual clearing of pcb_onfault
authorderaadt <deraadt@openbsd.org>
Fri, 5 Jun 2015 18:36:07 +0000 (18:36 +0000)
committerderaadt <deraadt@openbsd.org>
Fri, 5 Jun 2015 18:36:07 +0000 (18:36 +0000)
in copyerr itself, like other architectures of this type do.
as a result of chatter between miod and kettenis

sys/arch/alpha/alpha/locore.s

index 0835964..14ad265 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: locore.s,v 1.38 2014/01/26 17:40:09 miod Exp $ */
+/* $OpenBSD: locore.s,v 1.39 2015/06/05 18:36:07 deraadt Exp $ */
 /* $NetBSD: locore.s,v 1.94 2001/04/26 03:10:44 ross Exp $ */
 
 /*-
@@ -1060,6 +1060,10 @@ NESTED(copyout, 3, 16, ra, IM_RA|IM_S0, 0)
 
 LEAF(copyerr, 0)
        LDGP(pv)
+       .set noat
+       ldq     at_reg, P_ADDR(at_reg)          /* clear handler.            */
+       stq     zero, U_PCB_ONFAULT(at_reg)
+       .set at
        ldq     ra, (16-8)(sp)                  /* restore ra.               */
        ldq     s0, (16-16)(sp)                 /* restore s0.               */
        lda     sp, 16(sp)                      /* kill stack frame.         */