Module Name:    src
Committed By:   thorpej
Date:           Mon Dec 25 21:32:58 UTC 2023

Modified Files:
        src/sys/arch/amiga/amiga: locore.s
        src/sys/arch/atari/atari: locore.s
        src/sys/arch/cesfic/cesfic: locore.s
        src/sys/arch/hp300/hp300: locore.s
        src/sys/arch/luna68k/luna68k: locore.s
        src/sys/arch/m68k/include: pmap_motorola.h
        src/sys/arch/mac68k/mac68k: locore.s
        src/sys/arch/mvme68k/mvme68k: locore.s
        src/sys/arch/news68k/news68k: locore.s
        src/sys/arch/next68k/next68k: locore.s
        src/sys/arch/x68k/x68k: locore.s

Log Message:
loadustp(): Optimize for the overwhelmingly common case of "not the HP MMU".
Rather than converting the level 1 table address to a page number before
calling loadustp() only to have loadustp() convert it back to an address
for the '851, '030, '040, and '060, instead pass the address and convert
to a page number only in the case of the HP MMU.

This is a wash on HP MMU machines (9000/320 and 9000/350), and saves at
least 4 instructions (2x moveq + 2x lsXl) on every context switch on
everything else.


To generate a diff of this commit:
cvs rdiff -u -r1.161 -r1.162 src/sys/arch/amiga/amiga/locore.s
cvs rdiff -u -r1.117 -r1.118 src/sys/arch/atari/atari/locore.s
cvs rdiff -u -r1.34 -r1.35 src/sys/arch/cesfic/cesfic/locore.s
cvs rdiff -u -r1.174 -r1.175 src/sys/arch/hp300/hp300/locore.s
cvs rdiff -u -r1.68 -r1.69 src/sys/arch/luna68k/luna68k/locore.s
cvs rdiff -u -r1.38 -r1.39 src/sys/arch/m68k/include/pmap_motorola.h
cvs rdiff -u -r1.175 -r1.176 src/sys/arch/mac68k/mac68k/locore.s
cvs rdiff -u -r1.118 -r1.119 src/sys/arch/mvme68k/mvme68k/locore.s
cvs rdiff -u -r1.71 -r1.72 src/sys/arch/news68k/news68k/locore.s
cvs rdiff -u -r1.73 -r1.74 src/sys/arch/next68k/next68k/locore.s
cvs rdiff -u -r1.122 -r1.123 src/sys/arch/x68k/x68k/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/amiga/amiga/locore.s
diff -u src/sys/arch/amiga/amiga/locore.s:1.161 src/sys/arch/amiga/amiga/locore.s:1.162
--- src/sys/arch/amiga/amiga/locore.s:1.161	Mon May 30 09:56:02 2022
+++ src/sys/arch/amiga/amiga/locore.s	Mon Dec 25 21:32:56 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.161 2022/05/30 09:56:02 andvar Exp $	*/
+/*	$NetBSD: locore.s,v 1.162 2023/12/25 21:32:56 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -1124,8 +1124,6 @@ ENTRY(probeva)
  */
 ENTRY(loadustp)
 	movl	%sp@(4),%d0			| new USTP
-	moveq	#PGSHIFT,%d1
-	lsll	%d1,%d0				| convert to addr
 #ifdef M68060
 	cmpl	#CPU_68060,_C_LABEL(cputype)	| 68060?
 	jeq	Lldustp060			|  yes, skip

Index: src/sys/arch/atari/atari/locore.s
diff -u src/sys/arch/atari/atari/locore.s:1.117 src/sys/arch/atari/atari/locore.s:1.118
--- src/sys/arch/atari/atari/locore.s:1.117	Fri Jan  6 10:28:27 2023
+++ src/sys/arch/atari/atari/locore.s	Mon Dec 25 21:32:56 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.117 2023/01/06 10:28:27 tsutsui Exp $	*/
+/*	$NetBSD: locore.s,v 1.118 2023/12/25 21:32:56 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -1141,8 +1141,6 @@ ENTRY(probeva)
  */
 ENTRY(loadustp)
 	movl	%sp@(4),%d0			| new USTP
-	moveq	#PGSHIFT,%d1
-	lsll	%d1,%d0				| convert to addr
 #if defined(M68060)
 	cmpl	#CPU_68060,_C_LABEL(cputype)	| 68060?
 	jeq	Lldustp060			|  yes, skip

Index: src/sys/arch/cesfic/cesfic/locore.s
diff -u src/sys/arch/cesfic/cesfic/locore.s:1.34 src/sys/arch/cesfic/cesfic/locore.s:1.35
--- src/sys/arch/cesfic/cesfic/locore.s:1.34	Mon May 30 09:56:03 2022
+++ src/sys/arch/cesfic/cesfic/locore.s	Mon Dec 25 21:32:56 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.34 2022/05/30 09:56:03 andvar Exp $	*/
+/*	$NetBSD: locore.s,v 1.35 2023/12/25 21:32:56 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1980, 1990, 1993
@@ -805,8 +805,6 @@ ENTRY(loadustp)
 	tstl	_C_LABEL(mmutype)	| HP MMU?
 	jeq	Lhpmmu9			| yes, skip
 	movl	%sp@(4),%d0		| new USTP
-	moveq	#PGSHIFT,%d1
-	lsll	%d1,%d0			| convert to addr
 #if defined(M68040)
 	cmpl	#MMU_68040,_C_LABEL(mmutype) | 68040?
 	jne	LmotommuC		| no, skip
@@ -834,7 +832,10 @@ Lhpmmu9:
 	andl	#~MMU_CEN,%a0@(MMUCMD)	| toggle cache enable
 	orl	#MMU_CEN,%a0@(MMUCMD)	| to clear data cache
 1:
-	movl	%sp@(4),%a0@(MMUUSTP)	| load a new USTP
+	movl	%sp@(4),%d0
+	moveq	#PGSHIFT,%d1
+	lsrl	%d1,%d0			| convert to page frame
+	movl	%d0,%a0@(MMUUSTP)	| load a new USTP
 #endif
 	rts
 

Index: src/sys/arch/hp300/hp300/locore.s
diff -u src/sys/arch/hp300/hp300/locore.s:1.174 src/sys/arch/hp300/hp300/locore.s:1.175
--- src/sys/arch/hp300/hp300/locore.s:1.174	Sat Oct 14 15:31:36 2023
+++ src/sys/arch/hp300/hp300/locore.s	Mon Dec 25 21:32:57 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.174 2023/10/14 15:31:36 tsutsui Exp $	*/
+/*	$NetBSD: locore.s,v 1.175 2023/12/25 21:32:57 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1980, 1990, 1993
@@ -1087,8 +1087,6 @@ ENTRY(loadustp)
 	tstl	_C_LABEL(mmutype)	| HP MMU?
 	jeq	Lhpmmu9			| yes, skip
 	movl	%sp@(4),%d0		| new USTP
-	moveq	#PGSHIFT,%d1
-	lsll	%d1,%d0			| convert to addr
 #if defined(M68040)
 	cmpl	#MMU_68040,_C_LABEL(mmutype) | 68040?
 	jne	LmotommuC		| no, skip
@@ -1116,7 +1114,10 @@ Lhpmmu9:
 	andl	#~MMU_CEN,%a0@(MMUCMD)	| toggle cache enable
 	orl	#MMU_CEN,%a0@(MMUCMD)	| to clear data cache
 1:
-	movl	%sp@(4),%a0@(MMUUSTP)	| load a new USTP
+	movl	%sp@(4),%d0
+	moveq	#PGSHIFT,%d1
+	lsrl	%d1,%d0			| convert to page frame
+	movl	%d0,%a0@(MMUUSTP)	| load a new USTP
 #endif
 	rts
 

Index: src/sys/arch/luna68k/luna68k/locore.s
diff -u src/sys/arch/luna68k/luna68k/locore.s:1.68 src/sys/arch/luna68k/luna68k/locore.s:1.69
--- src/sys/arch/luna68k/luna68k/locore.s:1.68	Fri Jun 10 21:42:24 2022
+++ src/sys/arch/luna68k/luna68k/locore.s	Mon Dec 25 21:32:57 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.s,v 1.68 2022/06/10 21:42:24 tsutsui Exp $ */
+/* $NetBSD: locore.s,v 1.69 2023/12/25 21:32:57 thorpej Exp $ */
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -784,8 +784,6 @@ ENTRY(ecacheoff)
  */
 ENTRY(loadustp)
 	movl	%sp@(4),%d0		| new USTP
-	moveq	#PGSHIFT,%d1
-	lsll	%d1,%d0			| convert to addr
 #if defined(M68040)
 	cmpl	#MMU_68040,_C_LABEL(mmutype) | 68040?
 	jne	LmotommuC		| no, skip

Index: src/sys/arch/m68k/include/pmap_motorola.h
diff -u src/sys/arch/m68k/include/pmap_motorola.h:1.38 src/sys/arch/m68k/include/pmap_motorola.h:1.39
--- src/sys/arch/m68k/include/pmap_motorola.h:1.38	Tue Sep 26 12:46:30 2023
+++ src/sys/arch/m68k/include/pmap_motorola.h	Mon Dec 25 21:32:57 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_motorola.h,v 1.38 2023/09/26 12:46:30 tsutsui Exp $	*/
+/*	$NetBSD: pmap_motorola.h,v 1.39 2023/12/25 21:32:57 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1991, 1993
@@ -176,7 +176,7 @@ struct pmap {
 #define	PMAP_ACTIVATE(pmap, loadhw)					\
 {									\
 	if ((loadhw))							\
-		loadustp(m68k_btop((paddr_t)(pmap)->pm_stpa));		\
+		loadustp((paddr_t)(pmap)->pm_stpa);			\
 }
 
 /*

Index: src/sys/arch/mac68k/mac68k/locore.s
diff -u src/sys/arch/mac68k/mac68k/locore.s:1.175 src/sys/arch/mac68k/mac68k/locore.s:1.176
--- src/sys/arch/mac68k/mac68k/locore.s:1.175	Mon May 30 09:56:03 2022
+++ src/sys/arch/mac68k/mac68k/locore.s	Mon Dec 25 21:32:57 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.175 2022/05/30 09:56:03 andvar Exp $	*/
+/*	$NetBSD: locore.s,v 1.176 2023/12/25 21:32:57 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -956,8 +956,6 @@ ENTRY(ecacheoff)
  */
 ENTRY(loadustp)
 	movl	%sp@(4),%d0		| new USTP
-	moveq	#PGSHIFT,%d1
-	lsll	%d1,%d0			| convert to addr
 #if defined(M68040)
 	cmpl	#MMU_68040,_C_LABEL(mmutype) | 68040?
 	jne	LmotommuC		| no, skip

Index: src/sys/arch/mvme68k/mvme68k/locore.s
diff -u src/sys/arch/mvme68k/mvme68k/locore.s:1.118 src/sys/arch/mvme68k/mvme68k/locore.s:1.119
--- src/sys/arch/mvme68k/mvme68k/locore.s:1.118	Mon May 30 09:56:03 2022
+++ src/sys/arch/mvme68k/mvme68k/locore.s	Mon Dec 25 21:32:57 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.118 2022/05/30 09:56:03 andvar Exp $	*/
+/*	$NetBSD: locore.s,v 1.119 2023/12/25 21:32:57 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -1097,8 +1097,6 @@ ENTRY_NOPROFILE(getsp)
  */
 ENTRY(loadustp)
 	movl	%sp@(4),%d0		| new USTP
-	moveq	#PGSHIFT, %d1
-	lsll	%d1,%d0			| convert to addr
 #if defined(M68040) || defined(M68060)
 	cmpl    #MMU_68040,_C_LABEL(mmutype) | 68040?
 	jne     LmotommuC               | no, skip

Index: src/sys/arch/news68k/news68k/locore.s
diff -u src/sys/arch/news68k/news68k/locore.s:1.71 src/sys/arch/news68k/news68k/locore.s:1.72
--- src/sys/arch/news68k/news68k/locore.s:1.71	Sun Oct 15 10:46:51 2023
+++ src/sys/arch/news68k/news68k/locore.s	Mon Dec 25 21:32:57 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.71 2023/10/15 10:46:51 tsutsui Exp $	*/
+/*	$NetBSD: locore.s,v 1.72 2023/12/25 21:32:57 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -896,8 +896,6 @@ Lnocache8:
  */
 ENTRY(loadustp)
 	movl	%sp@(4),%d0		| new USTP
-	moveq	#PGSHIFT, %d1
-	lsll	%d1,%d0			| convert to addr
 	pflusha				| flush entire TLB
 	lea	_C_LABEL(protorp),%a0	| CRP prototype
 	movl	%d0,%a0@(4)		| stash USTP

Index: src/sys/arch/next68k/next68k/locore.s
diff -u src/sys/arch/next68k/next68k/locore.s:1.73 src/sys/arch/next68k/next68k/locore.s:1.74
--- src/sys/arch/next68k/next68k/locore.s:1.73	Fri Jun 16 20:01:20 2023
+++ src/sys/arch/next68k/next68k/locore.s	Mon Dec 25 21:32:57 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.73 2023/06/16 20:01:20 andvar Exp $	*/
+/*	$NetBSD: locore.s,v 1.74 2023/12/25 21:32:57 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1998 Darrin B. Jewell
@@ -891,8 +891,6 @@ ENTRY(loadustp)
 	tstl	_C_LABEL(mmutype)	| HP MMU?
 	jeq	Lhpmmu9			| yes, skip
 	movl	%sp@(4),%d0		| new USTP
-	moveq	#PGSHIFT,%d1
-	lsll	%d1,%d0			| convert to addr
 #if defined(M68040)
 	cmpl	#MMU_68040,_C_LABEL(mmutype) | 68040?
 	jne	LmotommuC		| no, skip

Index: src/sys/arch/x68k/x68k/locore.s
diff -u src/sys/arch/x68k/x68k/locore.s:1.122 src/sys/arch/x68k/x68k/locore.s:1.123
--- src/sys/arch/x68k/x68k/locore.s:1.122	Sun Sep 17 07:22:17 2023
+++ src/sys/arch/x68k/x68k/locore.s	Mon Dec 25 21:32:58 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.122 2023/09/17 07:22:17 andvar Exp $	*/
+/*	$NetBSD: locore.s,v 1.123 2023/12/25 21:32:58 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -833,8 +833,6 @@ ENTRY(ecacheoff)
  */
 ENTRY(loadustp)
 	movl	%sp@(4),%d0		| new USTP
-	moveq	#PGSHIFT,%d1
-	lsll	%d1,%d0			| convert to addr
 #if defined(M68040) || defined(M68060)
 	cmpl	#MMU_68040,_C_LABEL(mmutype) | 68040?
 	jne	LmotommuC		| no, skip

Reply via email to