Module Name: src Committed By: thorpej Date: Fri Sep 4 04:09:52 UTC 2020
Modified Files: src/sys/arch/alpha/alpha: locore.s Log Message: Save a few instructions every time we manipulate pcb::pcb_onfault. To generate a diff of this commit: cvs rdiff -u -r1.129 -r1.130 src/sys/arch/alpha/alpha/locore.s Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/alpha/alpha/locore.s diff -u src/sys/arch/alpha/alpha/locore.s:1.129 src/sys/arch/alpha/alpha/locore.s:1.130 --- src/sys/arch/alpha/alpha/locore.s:1.129 Fri Sep 4 02:54:56 2020 +++ src/sys/arch/alpha/alpha/locore.s Fri Sep 4 04:09:52 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.s,v 1.129 2020/09/04 02:54:56 thorpej Exp $ */ +/* $NetBSD: locore.s,v 1.130 2020/09/04 04:09:52 thorpej Exp $ */ /*- * Copyright (c) 1999, 2000, 2019 The NetBSD Foundation, Inc. @@ -67,7 +67,7 @@ #include <machine/asm.h> -__KERNEL_RCSID(0, "$NetBSD: locore.s,v 1.129 2020/09/04 02:54:56 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: locore.s,v 1.130 2020/09/04 04:09:52 thorpej Exp $"); #include "assym.h" @@ -781,17 +781,11 @@ NESTED(copyinstr, 4, 16, ra, IM_RA|IM_S0 beq t1, copyerr_efault /* if it's not, error out. */ /* Note: GET_CURLWP clobbers v0, t0, t8...t11. */ GET_CURLWP - mov v0, s0 + ldq s0, L_PCB(v0) /* s0 = pcb */ lda v0, copyerr /* set up fault handler. */ - .set noat - ldq at_reg, L_PCB(s0) - stq v0, PCB_ONFAULT(at_reg) - .set at + stq v0, PCB_ONFAULT(s0) CALL(alpha_copystr) /* do the copy. */ - .set noat - ldq at_reg, L_PCB(s0) - stq zero, PCB_ONFAULT(at_reg) /* kill the fault handler. */ - .set at + stq zero, PCB_ONFAULT(s0) /* kill the fault handler. */ ldq ra, (16-8)(sp) /* restore ra. */ ldq s0, (16-16)(sp) /* restore s0. */ lda sp, 16(sp) /* kill stack frame. */ @@ -808,17 +802,11 @@ NESTED(copyoutstr, 4, 16, ra, IM_RA|IM_S beq t1, copyerr_efault /* if it's not, error out. */ /* Note: GET_CURLWP clobbers v0, t0, t8...t11. */ GET_CURLWP - mov v0, s0 + ldq s0, L_PCB(v0) /* s0 = pcb */ lda v0, copyerr /* set up fault handler. */ - .set noat - ldq at_reg, L_PCB(s0) - stq v0, PCB_ONFAULT(at_reg) - .set at + stq v0, PCB_ONFAULT(s0) CALL(alpha_copystr) /* do the copy. */ - .set noat - ldq at_reg, L_PCB(s0) - stq zero, PCB_ONFAULT(at_reg) /* kill the fault handler. */ - .set at + stq zero, PCB_ONFAULT(s0) /* kill the fault handler. */ ldq ra, (16-8)(sp) /* restore ra. */ ldq s0, (16-16)(sp) /* restore s0. */ lda sp, 16(sp) /* kill stack frame. */ @@ -847,18 +835,12 @@ NESTED(kcopy, 3, 32, ra, IM_RA|IM_S0|IM_ mov v0, a0 /* Note: GET_CURLWP clobbers v0, t0, t8...t11. */ GET_CURLWP - mov v0, s1 /* s1 = curlwp */ + ldq s1, L_PCB(v0) /* s1 = pcb */ lda v0, kcopyerr /* set up fault handler. */ - .set noat - ldq at_reg, L_PCB(s1) - ldq s0, PCB_ONFAULT(at_reg) /* save old handler. */ - stq v0, PCB_ONFAULT(at_reg) - .set at + ldq s0, PCB_ONFAULT(s1) /* save old handler. */ + stq v0, PCB_ONFAULT(s1) CALL(memcpy) /* do the copy. */ - .set noat - ldq at_reg, L_PCB(s1) /* restore the old handler. */ - stq s0, PCB_ONFAULT(at_reg) - .set at + stq s0, PCB_ONFAULT(s1) /* restore the old handler. */ ldq ra, (32-8)(sp) /* restore ra. */ ldq s0, (32-16)(sp) /* restore s0. */ ldq s1, (32-24)(sp) /* restore s1. */ @@ -894,17 +876,11 @@ NESTED(copyin, 3, 16, ra, IM_RA|IM_S0, 0 mov v0, a0 /* Note: GET_CURLWP clobbers v0, t0, t8...t11. */ GET_CURLWP - mov v0, s0 /* s0 = curlwp */ + ldq s0, L_PCB(v0) /* s = pcb */ lda v0, copyerr /* set up fault handler. */ - .set noat - ldq at_reg, L_PCB(s0) - stq v0, PCB_ONFAULT(at_reg) - .set at + stq v0, PCB_ONFAULT(s0) CALL(memcpy) /* do the copy. */ - .set noat - ldq at_reg, L_PCB(s0) /* kill the fault handler. */ - stq zero, PCB_ONFAULT(at_reg) - .set at + stq zero, PCB_ONFAULT(s0) /* kill the fault handler. */ ldq ra, (16-8)(sp) /* restore ra. */ ldq s0, (16-16)(sp) /* restore s0. */ lda sp, 16(sp) /* kill stack frame. */ @@ -926,17 +902,11 @@ NESTED(copyout, 3, 16, ra, IM_RA|IM_S0, mov v0, a0 /* Note: GET_CURLWP clobbers v0, t0, t8...t11. */ GET_CURLWP - mov v0, s0 /* s0 = curlwp */ + ldq s0, L_PCB(v0) /* s0 = pcb */ lda v0, copyerr /* set up fault handler. */ - .set noat - ldq at_reg, L_PCB(s0) - stq v0, PCB_ONFAULT(at_reg) - .set at + stq v0, PCB_ONFAULT(s0) CALL(memcpy) /* do the copy. */ - .set noat - ldq at_reg, L_PCB(s0) /* kill the fault handler. */ - stq zero, PCB_ONFAULT(at_reg) - .set at + stq zero, PCB_ONFAULT(s0) /* kill the fault handler. */ ldq ra, (16-8)(sp) /* restore ra. */ ldq s0, (16-16)(sp) /* restore s0. */ lda sp, 16(sp) /* kill stack frame. */