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.	     */

Reply via email to