Module Name:    src
Committed By:   thorpej
Date:           Tue Jan  9 04:16:27 UTC 2024

Modified Files:
        src/sys/arch/amiga/amiga: genassym.cf locore.s
        src/sys/arch/amiga/conf: files.amiga
        src/sys/arch/amiga/include: cpu.h
        src/sys/arch/atari/atari: genassym.cf locore.s
        src/sys/arch/atari/conf: files.atari
        src/sys/arch/atari/include: cpu.h
        src/sys/arch/cesfic/cesfic: genassym.cf locore.s
        src/sys/arch/cesfic/conf: files.cesfic std.cesfic
        src/sys/arch/cesfic/include: cpu.h
        src/sys/arch/hp300/conf: files.hp300
        src/sys/arch/hp300/hp300: locore.s
        src/sys/arch/hp300/include: cpu.h
        src/sys/arch/luna68k/conf: files.luna68k
        src/sys/arch/luna68k/include: cpu.h
        src/sys/arch/luna68k/luna68k: genassym.cf locore.s
        src/sys/arch/m68k/include: mmu_40.h mmu_51.h
        src/sys/arch/m68k/m68k: pmap_motorola.c
        src/sys/arch/mac68k/conf: files.mac68k
        src/sys/arch/mac68k/include: cpu.h
        src/sys/arch/mac68k/mac68k: genassym.cf locore.s
        src/sys/arch/mvme68k/conf: files.mvme68k
        src/sys/arch/mvme68k/include: cpu.h
        src/sys/arch/mvme68k/mvme68k: locore.s
        src/sys/arch/news68k/conf: files.news68k
        src/sys/arch/news68k/include: cpu.h
        src/sys/arch/news68k/news68k: genassym.cf locore.s
        src/sys/arch/next68k/conf: files.next68k
        src/sys/arch/next68k/include: cpu.h
        src/sys/arch/next68k/next68k: genassym.cf locore.s
        src/sys/arch/virt68k/conf: files.virt68k
        src/sys/arch/virt68k/include: cpu.h
        src/sys/arch/virt68k/virt68k: locore.s
        src/sys/arch/x68k/conf: files.x68k
        src/sys/arch/x68k/include: cpu.h
        src/sys/arch/x68k/x68k: genassym.cf locore.s

Log Message:
Remove duplicated / slightly-tweaked loadustp() (load user segment table)
routines from all of the m68k ports using the shared pmap.  Instead, in
pmap_init(), set up a function pointer to the appropriate mmu_load_urp*()
function in mmu_subr.s.


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/sys/arch/amiga/amiga/genassym.cf
cvs rdiff -u -r1.165 -r1.166 src/sys/arch/amiga/amiga/locore.s
cvs rdiff -u -r1.185 -r1.186 src/sys/arch/amiga/conf/files.amiga
cvs rdiff -u -r1.83 -r1.84 src/sys/arch/amiga/include/cpu.h
cvs rdiff -u -r1.38 -r1.39 src/sys/arch/atari/atari/genassym.cf
cvs rdiff -u -r1.121 -r1.122 src/sys/arch/atari/atari/locore.s
cvs rdiff -u -r1.124 -r1.125 src/sys/arch/atari/conf/files.atari
cvs rdiff -u -r1.74 -r1.75 src/sys/arch/atari/include/cpu.h
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/cesfic/cesfic/genassym.cf
cvs rdiff -u -r1.37 -r1.38 src/sys/arch/cesfic/cesfic/locore.s
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/cesfic/conf/files.cesfic
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/cesfic/conf/std.cesfic
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/cesfic/include/cpu.h
cvs rdiff -u -r1.92 -r1.93 src/sys/arch/hp300/conf/files.hp300
cvs rdiff -u -r1.177 -r1.178 src/sys/arch/hp300/hp300/locore.s
cvs rdiff -u -r1.73 -r1.74 src/sys/arch/hp300/include/cpu.h
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/luna68k/conf/files.luna68k
cvs rdiff -u -r1.38 -r1.39 src/sys/arch/luna68k/include/cpu.h
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/luna68k/luna68k/genassym.cf
cvs rdiff -u -r1.72 -r1.73 src/sys/arch/luna68k/luna68k/locore.s
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/m68k/include/mmu_40.h \
    src/sys/arch/m68k/include/mmu_51.h
cvs rdiff -u -r1.85 -r1.86 src/sys/arch/m68k/m68k/pmap_motorola.c
cvs rdiff -u -r1.131 -r1.132 src/sys/arch/mac68k/conf/files.mac68k
cvs rdiff -u -r1.102 -r1.103 src/sys/arch/mac68k/include/cpu.h
cvs rdiff -u -r1.44 -r1.45 src/sys/arch/mac68k/mac68k/genassym.cf
cvs rdiff -u -r1.178 -r1.179 src/sys/arch/mac68k/mac68k/locore.s
cvs rdiff -u -r1.65 -r1.66 src/sys/arch/mvme68k/conf/files.mvme68k
cvs rdiff -u -r1.51 -r1.52 src/sys/arch/mvme68k/include/cpu.h
cvs rdiff -u -r1.121 -r1.122 src/sys/arch/mvme68k/mvme68k/locore.s
cvs rdiff -u -r1.36 -r1.37 src/sys/arch/news68k/conf/files.news68k
cvs rdiff -u -r1.46 -r1.47 src/sys/arch/news68k/include/cpu.h
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/news68k/news68k/genassym.cf
cvs rdiff -u -r1.75 -r1.76 src/sys/arch/news68k/news68k/locore.s
cvs rdiff -u -r1.42 -r1.43 src/sys/arch/next68k/conf/files.next68k
cvs rdiff -u -r1.52 -r1.53 src/sys/arch/next68k/include/cpu.h
cvs rdiff -u -r1.32 -r1.33 src/sys/arch/next68k/next68k/genassym.cf
cvs rdiff -u -r1.77 -r1.78 src/sys/arch/next68k/next68k/locore.s
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/virt68k/conf/files.virt68k
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/virt68k/include/cpu.h
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/virt68k/virt68k/locore.s
cvs rdiff -u -r1.83 -r1.84 src/sys/arch/x68k/conf/files.x68k
cvs rdiff -u -r1.63 -r1.64 src/sys/arch/x68k/include/cpu.h
cvs rdiff -u -r1.39 -r1.40 src/sys/arch/x68k/x68k/genassym.cf
cvs rdiff -u -r1.126 -r1.127 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/genassym.cf
diff -u src/sys/arch/amiga/amiga/genassym.cf:1.35 src/sys/arch/amiga/amiga/genassym.cf:1.36
--- src/sys/arch/amiga/amiga/genassym.cf:1.35	Wed Dec 27 17:35:34 2023
+++ src/sys/arch/amiga/amiga/genassym.cf	Tue Jan  9 04:16:23 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.35 2023/12/27 17:35:34 thorpej Exp $
+#	$NetBSD: genassym.cf,v 1.36 2024/01/09 04:16:23 thorpej Exp $
 
 #
 # Copyright (c) 1982, 1990, 1993
@@ -91,6 +91,8 @@ export	MMU51_CRP_BITS
 export	MMU51_TCR_BITS
 export	MMU40_TCR_BITS
 
+define	M68K_MMU_MOTOROLA	1
+
 # lwp & proc fields and values
 define	L_PCB			offsetof(struct lwp, l_addr)
 define	L_PROC			offsetof(struct lwp, l_proc)

Index: src/sys/arch/amiga/amiga/locore.s
diff -u src/sys/arch/amiga/amiga/locore.s:1.165 src/sys/arch/amiga/amiga/locore.s:1.166
--- src/sys/arch/amiga/amiga/locore.s:1.165	Wed Dec 27 03:03:40 2023
+++ src/sys/arch/amiga/amiga/locore.s	Tue Jan  9 04:16:23 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.165 2023/12/27 03:03:40 thorpej Exp $	*/
+/*	$NetBSD: locore.s,v 1.166 2024/01/09 04:16:23 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -1119,35 +1119,6 @@ ENTRY(probeva)
 	rts
 
 /*
- * Load a new user segment table pointer.
- */
-ENTRY(loadustp)
-	movl	%sp@(4),%d0			| new USTP
-#ifdef M68060
-	cmpl	#CPU_68060,_C_LABEL(cputype)	| 68060?
-	jeq	Lldustp060			|  yes, skip
-#endif
-	cmpl	#MMU_68040,_C_LABEL(mmutype)	| 68040?
-	jeq	Lldustp040			|  yes, skip
-	pflusha					| flush entire TLB
-	lea	_C_LABEL(protorp),%a0		| CRP prototype
-	movl	%d0,%a0@(4)			| stash USTP
-	pmove	%a0@,%crp			| load root pointer
-	movl	#CACHE_CLR,%d0
-	movc	%d0,%cacr			| invalidate cache(s)
-	rts
-#ifdef M68060
-Lldustp060:
-	movc	%cacr,%d1
-	orl	#IC60_CUBC,%d1			| clear user btc entries
-	movc	%d1,%cacr
-#endif
-Lldustp040:
-	.word	0xf518				| pflusha
-	.word	0x4e7b,0x0806			| movec d0,URP
-	rts
-
-/*
  * Handle the nitty-gritty of rebooting the machine.
  *
  */
@@ -1417,8 +1388,6 @@ GLOBAL(ectype)
 	.long	EC_NONE
 GLOBAL(fputype)
 	.long	FPU_NONE
-GLOBAL(protorp)
-	.long	MMU51_CRP_BITS,0 | prototype root pointer
 GLOBAL(delaydivisor)
 	.long	12		| should be enough for 80 MHz 68060
 				| will be adapted to other CPUs in

Index: src/sys/arch/amiga/conf/files.amiga
diff -u src/sys/arch/amiga/conf/files.amiga:1.185 src/sys/arch/amiga/conf/files.amiga:1.186
--- src/sys/arch/amiga/conf/files.amiga:1.185	Wed May  3 13:49:30 2023
+++ src/sys/arch/amiga/conf/files.amiga	Tue Jan  9 04:16:23 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: files.amiga,v 1.185 2023/05/03 13:49:30 phx Exp $
+#	$NetBSD: files.amiga,v 1.186 2024/01/09 04:16:23 thorpej Exp $
 
 # maxpartitions must be first item in files.${ARCH}.newconf
 maxpartitions 16			# NOTE THAT AMIGA IS SPECIAL!
@@ -491,6 +491,7 @@ file	arch/amiga/amiga/cc.c
 file	dev/md_root.c			memory_disk_hooks
 file	arch/m68k/m68k/cacheops.c
 file	arch/m68k/m68k/db_memrw.c	ddb
+file	arch/m68k/m68k/mmu_subr.s
 file	arch/m68k/m68k/pmap_motorola.c
 file	arch/m68k/m68k/procfs_machdep.c	procfs
 file	arch/m68k/m68k/sys_machdep.c

Index: src/sys/arch/amiga/include/cpu.h
diff -u src/sys/arch/amiga/include/cpu.h:1.83 src/sys/arch/amiga/include/cpu.h:1.84
--- src/sys/arch/amiga/include/cpu.h:1.83	Sat Nov 23 19:40:34 2019
+++ src/sys/arch/amiga/include/cpu.h	Tue Jan  9 04:16:23 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.83 2019/11/23 19:40:34 ad Exp $	*/
+/*	$NetBSD: cpu.h,v 1.84 2024/01/09 04:16:23 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -148,7 +148,6 @@ void	drsc_handler(void);
  */
 void	clearseg(vm_offset_t);
 void	doboot(void) __attribute__((__noreturn__));
-void	loadustp(int);
 void	physcopyseg(vm_offset_t, vm_offset_t);
 u_int	probeva(u_int, u_int);
 

Index: src/sys/arch/atari/atari/genassym.cf
diff -u src/sys/arch/atari/atari/genassym.cf:1.38 src/sys/arch/atari/atari/genassym.cf:1.39
--- src/sys/arch/atari/atari/genassym.cf:1.38	Wed Dec 27 17:35:34 2023
+++ src/sys/arch/atari/atari/genassym.cf	Tue Jan  9 04:16:23 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.38 2023/12/27 17:35:34 thorpej Exp $
+#	$NetBSD: genassym.cf,v 1.39 2024/01/09 04:16:23 thorpej Exp $
 
 #-
 # Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -74,6 +74,8 @@ export	MMU51_CRP_BITS
 export	MMU51_TCR_BITS
 export	MMU40_TCR_BITS
 
+define	M68K_MMU_MOTOROLA	1
+
 # lwp & proc fields and values
 define	L_PCB			offsetof(struct lwp, l_addr)
 define	L_PROC			offsetof(struct lwp, l_proc)

Index: src/sys/arch/atari/atari/locore.s
diff -u src/sys/arch/atari/atari/locore.s:1.121 src/sys/arch/atari/atari/locore.s:1.122
--- src/sys/arch/atari/atari/locore.s:1.121	Wed Dec 27 03:03:41 2023
+++ src/sys/arch/atari/atari/locore.s	Tue Jan  9 04:16:23 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.121 2023/12/27 03:03:41 thorpej Exp $	*/
+/*	$NetBSD: locore.s,v 1.122 2024/01/09 04:16:23 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -1137,35 +1137,6 @@ ENTRY(probeva)
 	rts
 
 /*
- * Load a new user segment table pointer.
- */
-ENTRY(loadustp)
-	movl	%sp@(4),%d0			| new USTP
-#if defined(M68060)
-	cmpl	#CPU_68060,_C_LABEL(cputype)	| 68060?
-	jeq	Lldustp060			|  yes, skip
-#endif
-	cmpl	#MMU_68040,_C_LABEL(mmutype)	| 68040?
-	jeq	Lldustp040			|  yes, skip
-	pflusha					| flush entire TLB
-	lea	_C_LABEL(protorp),%a0		| CRP prototype
-	movl	%d0,%a0@(4)			| stash USTP
-	pmove	%a0@,%crp			| load root pointer
-	movl	#CACHE_CLR,%d0
-	movc	%d0,%cacr			| invalidate on-chip d-cache
-	rts
-#if defined(M68060)
-Lldustp060:
-	movc	%cacr,%d1
-	orl	#IC60_CUBC,%d1		| clear user branch cache entries
-	movc	%d1,%cacr
-#endif
-Lldustp040:
-	.word	0xf518			| pflusha
-	.word	0x4e7b,0x0806		| movec d0,URP
-	rts
-
-/*
  * Set processor priority level calls.  Most are implemented with
  * inline asm expansions.  However, spl0 requires special handling
  * as we need to check for our emulated software interrupts.
@@ -1259,8 +1230,6 @@ Ldorebootend:
 	.p2align 2
 	.space	PAGE_SIZE
 ASLOCAL(tmpstk)
-GLOBAL(protorp)
-	.long	MMU51_CRP_BITS,0	| prototype root pointer
 
 #ifdef M68060 /* XXX */
 L60iem:		.long	0

Index: src/sys/arch/atari/conf/files.atari
diff -u src/sys/arch/atari/conf/files.atari:1.124 src/sys/arch/atari/conf/files.atari:1.125
--- src/sys/arch/atari/conf/files.atari:1.124	Sat Jun 25 13:17:04 2022
+++ src/sys/arch/atari/conf/files.atari	Tue Jan  9 04:16:23 2024
@@ -1,5 +1,5 @@
 #
-#	$NetBSD: files.atari,v 1.124 2022/06/25 13:17:04 tsutsui Exp $
+#	$NetBSD: files.atari,v 1.125 2024/01/09 04:16:23 thorpej Exp $
 
 maxpartitions 16
 
@@ -220,6 +220,7 @@ file	arch/m68k/m68k/cacheops.c
 file	arch/m68k/m68k/db_memrw.c		ddb
 file	arch/m68k/m68k/fpu.c			compile-with "${M68K_KERN_FPU}"
 file	arch/m68k/m68k/m68k_trap.c
+file	arch/m68k/m68k/mmu_subr.s
 file	arch/m68k/m68k/pmap_motorola.c
 file	arch/m68k/m68k/procfs_machdep.c		procfs
 file	arch/m68k/m68k/sys_machdep.c

Index: src/sys/arch/atari/include/cpu.h
diff -u src/sys/arch/atari/include/cpu.h:1.74 src/sys/arch/atari/include/cpu.h:1.75
--- src/sys/arch/atari/include/cpu.h:1.74	Fri Jan  6 10:28:28 2023
+++ src/sys/arch/atari/include/cpu.h	Tue Jan  9 04:16:23 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.74 2023/01/06 10:28:28 tsutsui Exp $	*/
+/*	$NetBSD: cpu.h,v 1.75 2024/01/09 04:16:23 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -160,7 +160,6 @@ const char *fpu_describe(int);
  */
 void	clearseg(paddr_t);
 void	doboot(void);
-void	loadustp(int);
 void	physcopyseg(paddr_t, paddr_t);
 u_int	probeva(u_int, u_int);
 

Index: src/sys/arch/cesfic/cesfic/genassym.cf
diff -u src/sys/arch/cesfic/cesfic/genassym.cf:1.20 src/sys/arch/cesfic/cesfic/genassym.cf:1.21
--- src/sys/arch/cesfic/cesfic/genassym.cf:1.20	Wed Dec 27 17:35:34 2023
+++ src/sys/arch/cesfic/cesfic/genassym.cf	Tue Jan  9 04:16:24 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.20 2023/12/27 17:35:34 thorpej Exp $
+#	$NetBSD: genassym.cf,v 1.21 2024/01/09 04:16:24 thorpej Exp $
 
 #
 # Copyright (c) 1982, 1990, 1993
@@ -54,12 +54,7 @@ define	MMU_HP			MMU_HP
 define	MMU_68851		MMU_68851
 
 # MMU configuration options
-ifdef M68K_MMU_HP
-define	M68K_MMU_HP		1
-endif
-ifdef M68K_MMU_MOTOROLA
 define	M68K_MMU_MOTOROLA	1
-endif
 
 # values for cputype
 define	CPU_68020		CPU_68020

Index: src/sys/arch/cesfic/cesfic/locore.s
diff -u src/sys/arch/cesfic/cesfic/locore.s:1.37 src/sys/arch/cesfic/cesfic/locore.s:1.38
--- src/sys/arch/cesfic/cesfic/locore.s:1.37	Wed Dec 27 03:03:41 2023
+++ src/sys/arch/cesfic/cesfic/locore.s	Tue Jan  9 04:16:24 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.37 2023/12/27 03:03:41 thorpej Exp $	*/
+/*	$NetBSD: locore.s,v 1.38 2024/01/09 04:16:24 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1980, 1990, 1993
@@ -277,11 +277,13 @@ Lstart2:
 	.long	0x4e7b1807		| movc d1,srp
 	jra	Lstploaddone
 Lmotommu1:
+#ifdef M68030
 	RELOC(protorp, %a0)
 	movl	#MMU51_SRP_BITS,%a0@	| see pmap.h
 	movl	%d1,%a0@(4)		| + segtable address
 	pmove	%a0@,%srp		| load the supervisor root pointer
 	movl	#MMU51_CRP_BITS,%a0@	| reinit upper half for CRP loads
+#endif /* M68030 */
 Lstploaddone:
 
 	RELOC(mmutype, %a0)
@@ -798,48 +800,6 @@ Lsldone:
 #endif
 
 /*
- * Load a new user segment table pointer.
- */
-ENTRY(loadustp)
-#if defined(M68K_MMU_MOTOROLA)
-	tstl	_C_LABEL(mmutype)	| HP MMU?
-	jeq	Lhpmmu9			| yes, skip
-	movl	%sp@(4),%d0		| new USTP
-#if defined(M68040)
-	cmpl	#MMU_68040,_C_LABEL(mmutype) | 68040?
-	jne	LmotommuC		| no, skip
-	.word	0xf518			| yes, pflusha
-	.long	0x4e7b0806		| movc %d0,%urp
-	rts
-LmotommuC:
-#endif
-	pflusha				| flush entire TLB
-	lea	_C_LABEL(protorp),%a0	| CRP prototype
-	movl	%d0,%a0@(4)		| stash USTP
-	pmove	%a0@,%crp			| load root pointer
-	movl	#CACHE_CLR,%d0
-	movc	%d0,%cacr			| invalidate cache(s)
-	rts
-Lhpmmu9:
-#endif
-#if defined(M68K_MMU_HP)
-	movl	#CACHE_CLR,%d0
-	movc	%d0,%cacr			| invalidate cache(s)
-	MMUADDR(%a0)
-	movl	%a0@(MMUTBINVAL),%d1	| invalidate TLB
-	tstl	_C_LABEL(ectype)	| have external VAC?
-	jle	1f			| no, skip
-	andl	#~MMU_CEN,%a0@(MMUCMD)	| toggle cache enable
-	orl	#MMU_CEN,%a0@(MMUCMD)	| to clear data cache
-1:
-	movl	%sp@(4),%d0
-	moveq	#PGSHIFT,%d1
-	lsrl	%d1,%d0			| convert to page frame
-	movl	%d0,%a0@(MMUUSTP)	| load a new USTP
-#endif
-	rts
-
-/*
  * Set processor priority level calls.  Most are implemented with
  * inline asm expansions.  However, spl0 requires special handling
  * as we need to check for our emulated software interrupts.
@@ -889,8 +849,6 @@ GLOBAL(cputype)
 	.long	CPU_68020	| default to 68020 CPU
 GLOBAL(fputype)
 	.long	FPU_68881	| default to 68881 FPU
-GLOBAL(protorp)
-	.long	0,0		| prototype root pointer
 GLOBAL(prototc)
 	.long	0		| prototype translation control
 

Index: src/sys/arch/cesfic/conf/files.cesfic
diff -u src/sys/arch/cesfic/conf/files.cesfic:1.18 src/sys/arch/cesfic/conf/files.cesfic:1.19
--- src/sys/arch/cesfic/conf/files.cesfic:1.18	Mon Feb 18 01:12:22 2019
+++ src/sys/arch/cesfic/conf/files.cesfic	Tue Jan  9 04:16:24 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: files.cesfic,v 1.18 2019/02/18 01:12:22 thorpej Exp $
+#	$NetBSD: files.cesfic,v 1.19 2024/01/09 04:16:24 thorpej Exp $
 #
 # cesfic-specific configuration info
 
@@ -59,6 +59,7 @@ file	arch/m68k/m68k/cacheops.c
 file	arch/m68k/m68k/db_memrw.c		ddb | kgdb
 file	arch/m68k/m68k/kgdb_machdep.c		kgdb
 file	arch/m68k/m68k/m68k_trap.c
+file	arch/m68k/m68k/mmu_subr.s
 file	arch/m68k/m68k/pmap_motorola.c
 file	arch/m68k/m68k/procfs_machdep.c		procfs
 file	arch/m68k/m68k/sys_machdep.c

Index: src/sys/arch/cesfic/conf/std.cesfic
diff -u src/sys/arch/cesfic/conf/std.cesfic:1.5 src/sys/arch/cesfic/conf/std.cesfic:1.6
--- src/sys/arch/cesfic/conf/std.cesfic:1.5	Sun Sep 19 02:09:27 2010
+++ src/sys/arch/cesfic/conf/std.cesfic	Tue Jan  9 04:16:24 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: std.cesfic,v 1.5 2010/09/19 02:09:27 tsutsui Exp $
+#	$NetBSD: std.cesfic,v 1.6 2024/01/09 04:16:24 thorpej Exp $
 #
 # Options/devices that all cesfics should have
 #
@@ -7,4 +7,6 @@ machine cesfic m68k
 include		"conf/std"			# MI standard options
 include		"arch/m68k/conf/std.m68k"	# m68k standard options
 
+options 	M68040		# All FIC8234 have a 68040
+
 options 	EXEC_AOUT	# support for exec'ing a.out

Index: src/sys/arch/cesfic/include/cpu.h
diff -u src/sys/arch/cesfic/include/cpu.h:1.33 src/sys/arch/cesfic/include/cpu.h:1.34
--- src/sys/arch/cesfic/include/cpu.h:1.33	Sat Nov 23 19:40:34 2019
+++ src/sys/arch/cesfic/include/cpu.h	Tue Jan  9 04:16:24 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.33 2019/11/23 19:40:34 ad Exp $	*/
+/*	$NetBSD: cpu.h,v 1.34 2024/01/09 04:16:24 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -110,8 +110,6 @@ extern int astpending;		/* need to trap 
 #endif /* ! M68K_MMU_MOTOROLA */
 
 /* locore.s functions */
-void	loadustp(int);
-
 void	doboot(void)
 	__attribute__((__noreturn__));
 

Index: src/sys/arch/hp300/conf/files.hp300
diff -u src/sys/arch/hp300/conf/files.hp300:1.92 src/sys/arch/hp300/conf/files.hp300:1.93
--- src/sys/arch/hp300/conf/files.hp300:1.92	Mon Feb 18 01:12:22 2019
+++ src/sys/arch/hp300/conf/files.hp300	Tue Jan  9 04:16:24 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: files.hp300,v 1.92 2019/02/18 01:12:22 thorpej Exp $
+#	$NetBSD: files.hp300,v 1.93 2024/01/09 04:16:24 thorpej Exp $
 #
 # hp300-specific configuration info
 
@@ -220,6 +220,7 @@ file	arch/m68k/m68k/db_memrw.c		ddb | kg
 file	arch/m68k/m68k/fpu.c			compile-with "${M68K_KERN_FPU}"
 file	arch/m68k/m68k/kgdb_machdep.c		kgdb
 file	arch/m68k/m68k/m68k_trap.c
+file	arch/m68k/m68k/mmu_subr.s
 file	arch/m68k/m68k/pmap_motorola.c
 file	arch/m68k/m68k/procfs_machdep.c		procfs
 file	arch/m68k/m68k/sys_machdep.c

Index: src/sys/arch/hp300/hp300/locore.s
diff -u src/sys/arch/hp300/hp300/locore.s:1.177 src/sys/arch/hp300/hp300/locore.s:1.178
--- src/sys/arch/hp300/hp300/locore.s:1.177	Wed Dec 27 03:03:41 2023
+++ src/sys/arch/hp300/hp300/locore.s	Tue Jan  9 04:16:24 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.177 2023/12/27 03:03:41 thorpej Exp $	*/
+/*	$NetBSD: locore.s,v 1.178 2024/01/09 04:16:24 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1980, 1990, 1993
@@ -1072,48 +1072,6 @@ Lnocache8:
 	rts
 
 /*
- * Load a new user segment table pointer.
- */
-ENTRY(loadustp)
-#if defined(M68K_MMU_MOTOROLA)
-	tstl	_C_LABEL(mmutype)	| HP MMU?
-	jeq	Lhpmmu9			| yes, skip
-	movl	%sp@(4),%d0		| new USTP
-#if defined(M68040)
-	cmpl	#MMU_68040,_C_LABEL(mmutype) | 68040?
-	jne	LmotommuC		| no, skip
-	.word	0xf518			| yes, pflusha
-	.long	0x4e7b0806		| movc %d0,%urp
-	rts
-LmotommuC:
-#endif
-	pflusha				| flush entire TLB
-	lea	_C_LABEL(protorp),%a0	| CRP prototype
-	movl	%d0,%a0@(4)		| stash USTP
-	pmove	%a0@,%crp		| load root pointer
-	movl	#CACHE_CLR,%d0
-	movc	%d0,%cacr		| invalidate cache(s)
-	rts
-Lhpmmu9:
-#endif
-#if defined(M68K_MMU_HP)
-	movl	#CACHE_CLR,%d0
-	movc	%d0,%cacr		| invalidate cache(s)
-	MMUADDR(%a0)
-	movl	%a0@(MMUTBINVAL),%d1	| invalidate TLB
-	tstl	_C_LABEL(ectype)	| have external VAC?
-	jle	1f			| no, skip
-	andl	#~MMU_CEN,%a0@(MMUCMD)	| toggle cache enable
-	orl	#MMU_CEN,%a0@(MMUCMD)	| to clear data cache
-1:
-	movl	%sp@(4),%d0
-	moveq	#PGSHIFT,%d1
-	lsrl	%d1,%d0			| convert to page frame
-	movl	%d0,%a0@(MMUUSTP)	| load a new USTP
-#endif
-	rts
-
-/*
  * _delay(u_int N)
  *
  * Delay for at least (N/256) microseconds.
@@ -1263,9 +1221,6 @@ GLOBAL(ectype)
 GLOBAL(fputype)
 	.long	FPU_68882		| default to 68882 FPU
 
-GLOBAL(protorp)
-	.long	0,0			| prototype root pointer
-
 GLOBAL(prototc)
 	.long	0			| prototype translation control
 

Index: src/sys/arch/hp300/include/cpu.h
diff -u src/sys/arch/hp300/include/cpu.h:1.73 src/sys/arch/hp300/include/cpu.h:1.74
--- src/sys/arch/hp300/include/cpu.h:1.73	Sun Jan 15 06:19:46 2023
+++ src/sys/arch/hp300/include/cpu.h	Tue Jan  9 04:16:24 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.73 2023/01/15 06:19:46 tsutsui Exp $	*/
+/*	$NetBSD: cpu.h,v 1.74 2024/01/09 04:16:24 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -119,8 +119,6 @@ extern	uint8_t *intiobase, *intiolimit, 
 extern	void (*vectab[])(void);
 
 /* locore.s functions */
-void	loadustp(int);
-
 void	doboot(void) __attribute__((__noreturn__));
 void	ecacheon(void);
 void	ecacheoff(void);

Index: src/sys/arch/luna68k/conf/files.luna68k
diff -u src/sys/arch/luna68k/conf/files.luna68k:1.31 src/sys/arch/luna68k/conf/files.luna68k:1.32
--- src/sys/arch/luna68k/conf/files.luna68k:1.31	Sun Sep 17 12:30:00 2023
+++ src/sys/arch/luna68k/conf/files.luna68k	Tue Jan  9 04:16:24 2024
@@ -1,5 +1,5 @@
 #
-#	$NetBSD: files.luna68k,v 1.31 2023/09/17 12:30:00 andvar Exp $
+#	$NetBSD: files.luna68k,v 1.32 2024/01/09 04:16:24 thorpej Exp $
 #
 maxpartitions 8
 maxusers 2 8 64
@@ -19,6 +19,7 @@ file arch/m68k/m68k/db_memrw.c		ddb | kg
 file arch/m68k/m68k/kgdb_machdep.c	kgdb
 file arch/m68k/m68k/fpu.c		compile-with "${M68K_KERN_FPU}"
 file arch/m68k/m68k/m68k_trap.c
+file arch/m68k/m68k/mmu_subr.s
 file arch/m68k/m68k/pmap_motorola.c
 file arch/m68k/m68k/procfs_machdep.c	procfs
 file arch/m68k/m68k/sys_machdep.c

Index: src/sys/arch/luna68k/include/cpu.h
diff -u src/sys/arch/luna68k/include/cpu.h:1.38 src/sys/arch/luna68k/include/cpu.h:1.39
--- src/sys/arch/luna68k/include/cpu.h:1.38	Sun Jan 15 05:08:33 2023
+++ src/sys/arch/luna68k/include/cpu.h	Tue Jan  9 04:16:25 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.38 2023/01/15 05:08:33 tsutsui Exp $ */
+/* $NetBSD: cpu.h,v 1.39 2024/01/09 04:16:25 thorpej Exp $ */
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -118,9 +118,6 @@ extern	u_int intiobase_phys, intiotop_ph
 /* machdep.c functions */
 void	dumpsys(void);
 
-/* locore.s functions */
-void	loadustp(int);
-
 /* machdep.c functions */
 int	badaddr(void *, int);
 

Index: src/sys/arch/luna68k/luna68k/genassym.cf
diff -u src/sys/arch/luna68k/luna68k/genassym.cf:1.26 src/sys/arch/luna68k/luna68k/genassym.cf:1.27
--- src/sys/arch/luna68k/luna68k/genassym.cf:1.26	Fri Dec 29 02:30:36 2023
+++ src/sys/arch/luna68k/luna68k/genassym.cf	Tue Jan  9 04:16:25 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.26 2023/12/29 02:30:36 tsutsui Exp $
+#	$NetBSD: genassym.cf,v 1.27 2024/01/09 04:16:25 thorpej Exp $
 
 #
 # Copyright (c) 1982, 1990, 1993
@@ -67,6 +67,8 @@ ifdef M68040
 define	M68040			1
 endif
 
+define	M68K_MMU_MOTOROLA	1
+
 # values for fputype
 define	FPU_NONE		FPU_NONE
 define	FPU_68881		FPU_68881

Index: src/sys/arch/luna68k/luna68k/locore.s
diff -u src/sys/arch/luna68k/luna68k/locore.s:1.72 src/sys/arch/luna68k/luna68k/locore.s:1.73
--- src/sys/arch/luna68k/luna68k/locore.s:1.72	Fri Dec 29 02:30:36 2023
+++ src/sys/arch/luna68k/luna68k/locore.s	Tue Jan  9 04:16:25 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.s,v 1.72 2023/12/29 02:30:36 tsutsui Exp $ */
+/* $NetBSD: locore.s,v 1.73 2024/01/09 04:16:25 thorpej Exp $ */
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -779,27 +779,6 @@ ENTRY(ecacheon)
 ENTRY(ecacheoff)
 	rts
 
-/*
- * Load a new user segment table pointer.
- */
-ENTRY(loadustp)
-	movl	%sp@(4),%d0		| new USTP
-#if defined(M68040)
-	cmpl	#MMU_68040,_C_LABEL(mmutype) | 68040?
-	jne	LmotommuC		| no, skip
-	.word	0xf518			| yes, pflusha
-	.long	0x4e7b0806		| movc %d0,%urp
-	rts
-LmotommuC:
-#endif
-	pflusha				| flush entire TLB
-	lea	_C_LABEL(protocrp),%a0	| %crp prototype
-	movl	%d0,%a0@(4)		| stash USTP
-	pmove	%a0@,%crp		| load root pointer
-	movl	#CACHE_CLR,%d0
-	movc	%d0,%cacr		| invalidate cache(s)
-	rts
-
 ENTRY(getsr)
 	moveq	#0,%d0
 	movw	%sr,%d0

Index: src/sys/arch/m68k/include/mmu_40.h
diff -u src/sys/arch/m68k/include/mmu_40.h:1.1 src/sys/arch/m68k/include/mmu_40.h:1.2
--- src/sys/arch/m68k/include/mmu_40.h:1.1	Wed Dec 27 02:40:31 2023
+++ src/sys/arch/m68k/include/mmu_40.h	Tue Jan  9 04:16:25 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: mmu_40.h,v 1.1 2023/12/27 02:40:31 thorpej Exp $	*/
+/*	$NetBSD: mmu_40.h,v 1.2 2024/01/09 04:16:25 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 2023 The NetBSD Foundation, Inc.
@@ -211,4 +211,9 @@
 #define	MMUSR40_T	__BIT(1)	/* Transparent Translation hit */
 #define	MMUSR40_R	PTE40_RESIDENT
 
+#ifdef _KERNEL
+void	mmu_load_urp40(paddr_t);
+void	mmu_load_urp60(paddr_t);
+#endif /* _KERNEL */
+
 #endif /* _M68K_MMU_40_H_ */
Index: src/sys/arch/m68k/include/mmu_51.h
diff -u src/sys/arch/m68k/include/mmu_51.h:1.1 src/sys/arch/m68k/include/mmu_51.h:1.2
--- src/sys/arch/m68k/include/mmu_51.h:1.1	Wed Dec 27 02:40:32 2023
+++ src/sys/arch/m68k/include/mmu_51.h	Tue Jan  9 04:16:25 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: mmu_51.h,v 1.1 2023/12/27 02:40:32 thorpej Exp $	*/
+/*	$NetBSD: mmu_51.h,v 1.2 2024/01/09 04:16:25 thorpej Exp $	*/
 
 /*-
  * Copyright (c) 1997, 2023 The NetBSD Foundation, Inc.
@@ -263,4 +263,9 @@ struct mmu51_rootptr {
 #define	PSR51_C		__BIT(7)	/* Globally Sharable */
 #define	PSR51_N		__BITS(0,2)	/* Number of levels */
 
+#ifdef _KERNEL
+void	mmu_load_urp51(paddr_t);
+void	mmu_load_urp20hp(paddr_t);	/* for convenience */
+#endif /* _KERNEL */
+
 #endif /* _M68K_MMU_51_H_ */

Index: src/sys/arch/m68k/m68k/pmap_motorola.c
diff -u src/sys/arch/m68k/m68k/pmap_motorola.c:1.85 src/sys/arch/m68k/m68k/pmap_motorola.c:1.86
--- src/sys/arch/m68k/m68k/pmap_motorola.c:1.85	Sun Dec 31 21:59:24 2023
+++ src/sys/arch/m68k/m68k/pmap_motorola.c	Tue Jan  9 04:16:25 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap_motorola.c,v 1.85 2023/12/31 21:59:24 thorpej Exp $        */
+/*	$NetBSD: pmap_motorola.c,v 1.86 2024/01/09 04:16:25 thorpej Exp $        */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -69,6 +69,7 @@
  *
  * Supports:
  *	68020 with 68851 MMU
+ *	68020 with HP MMU
  *	68030 with on-chip MMU
  *	68040 with on-chip MMU
  *	68060 with on-chip MMU
@@ -119,7 +120,7 @@
 #include "opt_m68k_arch.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap_motorola.c,v 1.85 2023/12/31 21:59:24 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_motorola.c,v 1.86 2024/01/09 04:16:25 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -332,6 +333,19 @@ void pmap_check_wiring(const char *, vad
 	(curproc && \
 	 (pm) != pmap_kernel() && (pm) == curproc->p_vmspace->vm_map.pmap)
 
+static void (*pmap_load_urp_func)(paddr_t);
+
+/*
+ * pmap_load_urp:
+ *
+ *	Load the user root table into the MMU.
+ */
+static inline void
+pmap_load_urp(paddr_t urp)
+{
+	(*pmap_load_urp_func)(urp);
+}
+
 /*
  * pmap_bootstrap_finalize:	[ INTERFACE ]
  *
@@ -597,6 +611,47 @@ pmap_init(void)
 #endif
 
 	/*
+	 * Set up the routine that loads the MMU root table pointer.
+	 */
+	switch (cputype) {
+#if defined(M68020)
+	case CPU_68020:
+#ifdef M68K_MMU_MOTOROLA
+		if (mmutype == MMU_68851) {
+			pmap_load_urp_func = mmu_load_urp51;
+		}
+#endif
+#ifdef M68K_MMU_HP
+		if (mmutype == MMU_HP) {
+			pmap_load_urp_func = mmu_load_urp20hp;
+		}
+#endif
+		break;
+#endif /* M68020 */
+#if defined(M68030)
+	case CPU_68030:
+		pmap_load_urp_func = mmu_load_urp51;
+		break;
+#endif /* M68030 */
+#if defined(M68040)
+	case CPU_68040:
+		pmap_load_urp_func = mmu_load_urp40;
+		break;
+#endif /* M68040 */
+#if defined(M68060)
+	case CPU_68060:
+		pmap_load_urp_func = mmu_load_urp60;
+		break;
+#endif /* M68060 */
+	default:
+		break;
+	}
+	if (pmap_load_urp_func == NULL) {
+		panic("pmap_init: No mmu_load_*() for cpu=%d mmu=%d",
+		    cputype, mmutype);
+	}
+
+	/*
 	 * Now it is safe to enable pv_table recording.
 	 */
 	pmap_initialized = true;
@@ -769,7 +824,7 @@ pmap_activate(struct lwp *l)
 	 * need to activate the kernel pmap.
 	 */
 	if (pmap != pmap_kernel()) {
-		loadustp((paddr_t)pmap->pm_stpa);
+		pmap_load_urp((paddr_t)pmap->pm_stpa);
 	}
 }
 
@@ -2285,7 +2340,7 @@ pmap_remove_mapping(pmap_t pmap, vaddr_t
 				 * MMU if it's the active user pmap.
 				 */
 				if (active_user_pmap(ptpmap)) {
-					loadustp((paddr_t)ptpmap->pm_stpa);
+					pmap_load_urp((paddr_t)ptpmap->pm_stpa);
 				}
 			}
 		}
@@ -2508,7 +2563,7 @@ pmap_enter_ptpage(pmap_t pmap, vaddr_t v
 		 * MMU if it's the active user pmap.
 		 */
 		if (active_user_pmap(pmap)) {
-			loadustp((paddr_t)pmap->pm_stpa);
+			pmap_load_urp((paddr_t)pmap->pm_stpa);
 		}
 
 		PMAP_DPRINTF(PDB_ENTER|PDB_PTPAGE|PDB_SEGTAB,

Index: src/sys/arch/mac68k/conf/files.mac68k
diff -u src/sys/arch/mac68k/conf/files.mac68k:1.131 src/sys/arch/mac68k/conf/files.mac68k:1.132
--- src/sys/arch/mac68k/conf/files.mac68k:1.131	Fri Feb 26 10:54:12 2021
+++ src/sys/arch/mac68k/conf/files.mac68k	Tue Jan  9 04:16:25 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: files.mac68k,v 1.131 2021/02/26 10:54:12 rin Exp $
+#	$NetBSD: files.mac68k,v 1.132 2024/01/09 04:16:25 thorpej Exp $
 
 # mac68k-specific configuration info
 
@@ -173,6 +173,7 @@ file	arch/m68k/m68k/db_memrw.c		ddb | kg
 file	arch/m68k/m68k/fpu.c			compile-with "${M68K_KERN_FPU}"
 file	arch/m68k/m68k/kgdb_machdep.c		kgdb
 file	arch/m68k/m68k/m68k_trap.c
+file	arch/m68k/m68k/mmu_subr.s
 file	arch/m68k/m68k/pmap_motorola.c
 file	arch/m68k/m68k/procfs_machdep.c		procfs
 file	arch/m68k/m68k/sys_machdep.c

Index: src/sys/arch/mac68k/include/cpu.h
diff -u src/sys/arch/mac68k/include/cpu.h:1.102 src/sys/arch/mac68k/include/cpu.h:1.103
--- src/sys/arch/mac68k/include/cpu.h:1.102	Sat Nov 23 19:40:35 2019
+++ src/sys/arch/mac68k/include/cpu.h	Tue Jan  9 04:16:25 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.102 2019/11/23 19:40:35 ad Exp $	*/
+/*	$NetBSD: cpu.h,v 1.103 2024/01/09 04:16:25 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -287,9 +287,6 @@ void	mac68k_set_bell_callback(int (*)(vo
 int	mac68k_ring_bell(int, int, int);
 u_int	get_mapping(void);
 
-/* locore.s functions */
-void	loadustp(int);
-
 /* fpu.c */
 void	initfpu(void);
 

Index: src/sys/arch/mac68k/mac68k/genassym.cf
diff -u src/sys/arch/mac68k/mac68k/genassym.cf:1.44 src/sys/arch/mac68k/mac68k/genassym.cf:1.45
--- src/sys/arch/mac68k/mac68k/genassym.cf:1.44	Wed Dec 27 19:26:29 2023
+++ src/sys/arch/mac68k/mac68k/genassym.cf	Tue Jan  9 04:16:25 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.44 2023/12/27 19:26:29 thorpej Exp $
+#	$NetBSD: genassym.cf,v 1.45 2024/01/09 04:16:25 thorpej Exp $
 
 #
 # Copyright (c) 1990 The Regents of the University of California.
@@ -81,6 +81,8 @@ export	MMU51_CRP_BITS
 export	MMU51_TCR_BITS
 export	MMU40_TCR_BITS
 
+define	M68K_MMU_MOTOROLA	1
+
 # Transparent translation register values (from pmap.h)
 export	MAC68K_TT_GET_PTE
 

Index: src/sys/arch/mac68k/mac68k/locore.s
diff -u src/sys/arch/mac68k/mac68k/locore.s:1.178 src/sys/arch/mac68k/mac68k/locore.s:1.179
--- src/sys/arch/mac68k/mac68k/locore.s:1.178	Wed Dec 27 19:26:30 2023
+++ src/sys/arch/mac68k/mac68k/locore.s	Tue Jan  9 04:16:25 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.178 2023/12/27 19:26:30 thorpej Exp $	*/
+/*	$NetBSD: locore.s,v 1.179 2024/01/09 04:16:25 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -944,27 +944,6 @@ ENTRY(ecacheoff)
 	rts
 
 /*
- * Load a new user segment table pointer.
- */
-ENTRY(loadustp)
-	movl	%sp@(4),%d0		| new USTP
-#if defined(M68040)
-	cmpl	#MMU_68040,_C_LABEL(mmutype) | 68040?
-	jne	LmotommuC		| no, skip
-	.word	0xf518			| pflusha
-	.long	0x4e7b0806		| movec %d0, URP
-	rts
-LmotommuC:
-#endif
-	pflusha				| flush entire TLB
-	lea	_C_LABEL(protorp),%a0	| CRP prototype
-	movl	%d0,%a0@(4)		| stash USTP
-	pmove	%a0@,%crp		| load root pointer
-	movl	#CACHE_CLR,%d0
-	movc	%d0,%cacr		| invalidate cache(s)
-	rts
-
-/*
  * Set processor priority level calls.  Most are implemented with
  * inline asm expansions.  However, spl0 requires special handling
  * as we need to check for our emulated software interrupts.
@@ -1378,9 +1357,6 @@ GLOBAL(ectype)
 GLOBAL(fputype)
 	.long	FPU_68882	| default to 68882 FPU
 
-GLOBAL(protorp)
-	.long	0,0		| prototype root pointer
-
 GLOBAL(intiolimit)
 	.long	0		| KVA of end of internal IO space
 

Index: src/sys/arch/mvme68k/conf/files.mvme68k
diff -u src/sys/arch/mvme68k/conf/files.mvme68k:1.65 src/sys/arch/mvme68k/conf/files.mvme68k:1.66
--- src/sys/arch/mvme68k/conf/files.mvme68k:1.65	Sat Sep 30 21:00:43 2023
+++ src/sys/arch/mvme68k/conf/files.mvme68k	Tue Jan  9 04:16:25 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: files.mvme68k,v 1.65 2023/09/30 21:00:43 andvar Exp $
+#	$NetBSD: files.mvme68k,v 1.66 2024/01/09 04:16:25 thorpej Exp $
 
 # config file for mvme68k
 
@@ -99,6 +99,7 @@ file arch/m68k/m68k/cacheops.c
 file arch/m68k/m68k/db_memrw.c			ddb | kgdb
 file arch/m68k/m68k/kgdb_machdep.c		kgdb
 file arch/m68k/m68k/m68k_trap.c
+file arch/m68k/m68k/mmu_subr.s
 file arch/m68k/m68k/pmap_motorola.c
 file arch/m68k/m68k/procfs_machdep.c		procfs
 file arch/m68k/m68k/sys_machdep.c

Index: src/sys/arch/mvme68k/include/cpu.h
diff -u src/sys/arch/mvme68k/include/cpu.h:1.51 src/sys/arch/mvme68k/include/cpu.h:1.52
--- src/sys/arch/mvme68k/include/cpu.h:1.51	Sat Nov 23 19:40:35 2019
+++ src/sys/arch/mvme68k/include/cpu.h	Tue Jan  9 04:16:26 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.51 2019/11/23 19:40:35 ad Exp $	*/
+/*	$NetBSD: cpu.h,v 1.52 2024/01/09 04:16:26 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -159,7 +159,6 @@ int	nmihand(void *);
 void	mvme68k_abort(const char *);
 void	*iomap(u_long, size_t);
 void	iounmap(void *, size_t);
-void	loadustp(paddr_t);
 
 /* physical memory addresses where mvme147's onboard devices live */
 #define	INTIOBASE147	(0xfffe0000u)

Index: src/sys/arch/mvme68k/mvme68k/locore.s
diff -u src/sys/arch/mvme68k/mvme68k/locore.s:1.121 src/sys/arch/mvme68k/mvme68k/locore.s:1.122
--- src/sys/arch/mvme68k/mvme68k/locore.s:1.121	Wed Dec 27 03:03:41 2023
+++ src/sys/arch/mvme68k/mvme68k/locore.s	Tue Jan  9 04:16:26 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.121 2023/12/27 03:03:41 thorpej Exp $	*/
+/*	$NetBSD: locore.s,v 1.122 2024/01/09 04:16:26 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -580,11 +580,13 @@ Lstart2:
 	.long	0x4e7b1807		| movc d1,srp
 	jra	Lstploaddone
 Lmotommu1:
+#ifdef M68030
 	RELOC(protorp, %a0)
 	movl	#MMU51_SRP_BITS,%a0@	| see pmap.h
 	movl	%d1,%a0@(4)		| + segtable address
 	pmove	%a0@,%srp		| load the supervisor root pointer
 	movl	#MMU51_CRP_BITS,%a0@	| reinit upper half for CRP loads
+#endif /* M68030 */
 Lstploaddone:
 	RELOC(mmutype, %a0)
 	cmpl	#MMU_68040,%a0@		| 68040?
@@ -1092,35 +1094,6 @@ ENTRY_NOPROFILE(getsp)
 	movl	%d0,%a0
 	rts
 
-/*
- * Load a new user segment table pointer.
- */
-ENTRY(loadustp)
-	movl	%sp@(4),%d0		| new USTP
-#if defined(M68040) || defined(M68060)
-	cmpl    #MMU_68040,_C_LABEL(mmutype) | 68040?
-	jne     LmotommuC               | no, skip
-	.word	0xf518			| pflusha
-	.long   0x4e7b0806              | movc d0,urp
-#ifdef M68060
-	cmpl	#CPU_68060,_C_LABEL(cputype)
-	jne	Lldno60
-	movc	%cacr,%d0
-	orl	#IC60_CUBC,%d0		| clear user branch cache entries
-	movc	%d0,%cacr
-Lldno60:
-#endif
-	rts
-LmotommuC:
-#endif
-	pflusha				| flush entire TLB
-	lea	_C_LABEL(protorp),%a0	| CRP prototype
-	movl	%d0,%a0@(4)		| stash USTP
-	pmove	%a0@,%crp		| load root pointer
-	movl	#CACHE_CLR,%d0
-	movc	%d0,%cacr		| invalidate cache(s)
-	rts
-
 ENTRY(getsr)
 	moveq	#0,%d0
 	movw	%sr,%d0
@@ -1237,9 +1210,6 @@ GLOBAL(cputype)
 GLOBAL(fputype)
 	.long	FPU_68882	| default to FPU_68882
 
-GLOBAL(protorp)
-	.long	0,0		| prototype root pointer
-
 /*
  * Information from first stage boot program
  */

Index: src/sys/arch/news68k/conf/files.news68k
diff -u src/sys/arch/news68k/conf/files.news68k:1.36 src/sys/arch/news68k/conf/files.news68k:1.37
--- src/sys/arch/news68k/conf/files.news68k:1.36	Sun Oct  1 19:28:36 2023
+++ src/sys/arch/news68k/conf/files.news68k	Tue Jan  9 04:16:26 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: files.news68k,v 1.36 2023/10/01 19:28:36 andvar Exp $
+#	$NetBSD: files.news68k,v 1.37 2024/01/09 04:16:26 thorpej Exp $
 
 #	NEWS68K-specific configuration info
 
@@ -25,6 +25,7 @@ file	arch/m68k/m68k/cacheops.c
 file	arch/m68k/m68k/db_memrw.c		ddb | kgdb
 file	arch/m68k/m68k/kgdb_machdep.c		kgdb
 file	arch/m68k/m68k/m68k_trap.c
+file	arch/m68k/m68k/mmu_subr.s
 file	arch/m68k/m68k/pmap_motorola.c
 file	arch/m68k/m68k/procfs_machdep.c		procfs
 file	arch/m68k/m68k/sys_machdep.c

Index: src/sys/arch/news68k/include/cpu.h
diff -u src/sys/arch/news68k/include/cpu.h:1.46 src/sys/arch/news68k/include/cpu.h:1.47
--- src/sys/arch/news68k/include/cpu.h:1.46	Sat Nov 23 19:40:35 2019
+++ src/sys/arch/news68k/include/cpu.h	Tue Jan  9 04:16:26 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.46 2019/11/23 19:40:35 ad Exp $	*/
+/*	$NetBSD: cpu.h,v 1.47 2024/01/09 04:16:26 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -155,7 +155,6 @@ extern void *romcallvec;
 struct frame;
 
 /* locore.s functions */
-void loadustp(int);
 void badtrap(void);
 void intrhand_vectored(void);
 int getsr(void);

Index: src/sys/arch/news68k/news68k/genassym.cf
diff -u src/sys/arch/news68k/news68k/genassym.cf:1.33 src/sys/arch/news68k/news68k/genassym.cf:1.34
--- src/sys/arch/news68k/news68k/genassym.cf:1.33	Wed Dec 27 19:26:29 2023
+++ src/sys/arch/news68k/news68k/genassym.cf	Tue Jan  9 04:16:26 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.33 2023/12/27 19:26:29 thorpej Exp $
+#	$NetBSD: genassym.cf,v 1.34 2024/01/09 04:16:26 thorpej Exp $
 
 #
 # Copyright (c) 1982, 1990, 1993
@@ -72,6 +72,8 @@ ifdef M68040
 define	M68040			1
 endif
 
+define	M68K_MMU_MOTOROLA	1
+
 # values for fputype
 define	FPU_NONE		FPU_NONE
 define	FPU_68881		FPU_68881
@@ -153,6 +155,7 @@ define	CACHE40_ON		CACHE40_ON
 define	CACHE_ON		CACHE_ON
 define	CACHE_OFF		CACHE_OFF
 define	DCIC_CLR		DCIC_CLR
+define	CACHE_CLR		CACHE_CLR
 define	CACHE_BE		CACHE_BE
 
 # pte/ste bits

Index: src/sys/arch/news68k/news68k/locore.s
diff -u src/sys/arch/news68k/news68k/locore.s:1.75 src/sys/arch/news68k/news68k/locore.s:1.76
--- src/sys/arch/news68k/news68k/locore.s:1.75	Wed Dec 27 19:26:29 2023
+++ src/sys/arch/news68k/news68k/locore.s	Tue Jan  9 04:16:26 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.75 2023/12/27 19:26:29 thorpej Exp $	*/
+/*	$NetBSD: locore.s,v 1.76 2024/01/09 04:16:26 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -355,11 +355,13 @@ Lstart2:
 	.long	0x4e7b1807		| movc %d1,%srp
 	jra	Lstploaddone
 Lmotommu1:
+#ifdef M68030
 	RELOC(protorp, %a0)
 	movl	#MMU51_SRP_BITS,%a0@	| see pmap.h
 	movl	%d1,%a0@(4)		| + segtable address
 	pmove	%a0@,%srp		| load the supervisor root pointer
 	movl	#MMU51_CRP_BITS,%a0@	| reinit upper half for CRP loads
+#endif /* M68030 */
 Lstploaddone:
 	RELOC(mmutype, %a0)
 	cmpl	#MMU_68040,%a0@		| 68040?
@@ -880,20 +882,6 @@ ENTRY(ecacheoff)
 Lnocache8:
 	rts
 
-/*
- * Load a new user segment table pointer.
- */
-ENTRY(loadustp)
-	movl	%sp@(4),%d0		| new USTP
-	pflusha				| flush entire TLB
-	lea	_C_LABEL(protorp),%a0	| CRP prototype
-	movl	%d0,%a0@(4)		| stash USTP
-	pmove	%a0@,%crp		| load root pointer
-	movc	%cacr,%d0
-	orl	#DCIC_CLR,%d0
-	movc	%d0,%cacr		| invalidate cache(s)
-	rts
-
 ENTRY(getsr)
 	moveq	#0,%d0
 	movw	%sr,%d0
@@ -1011,9 +999,6 @@ GLOBAL(fputype)
 GLOBAL(ectype)
 	.long	EC_NONE		| external cache type, default to none
 
-GLOBAL(protorp)
-	.long	0,0		| prototype root pointer
-
 GLOBAL(prototc)
 	.long	MMU51_TCR_BITS	| prototype translation control
 

Index: src/sys/arch/next68k/conf/files.next68k
diff -u src/sys/arch/next68k/conf/files.next68k:1.42 src/sys/arch/next68k/conf/files.next68k:1.43
--- src/sys/arch/next68k/conf/files.next68k:1.42	Mon Feb 18 01:12:24 2019
+++ src/sys/arch/next68k/conf/files.next68k	Tue Jan  9 04:16:26 2024
@@ -1,4 +1,4 @@
-# $NetBSD: files.next68k,v 1.42 2019/02/18 01:12:24 thorpej Exp $
+# $NetBSD: files.next68k,v 1.43 2024/01/09 04:16:26 thorpej Exp $
 
 # next68k-specific configuration info
 
@@ -36,6 +36,7 @@ file	arch/m68k/m68k/cacheops.c
 file	arch/m68k/m68k/db_memrw.c		ddb | kgdb
 file	arch/m68k/m68k/kgdb_machdep.c		kgdb
 file	arch/m68k/m68k/m68k_trap.c
+file	arch/m68k/m68k/mmu_subr.s
 file	arch/m68k/m68k/pmap_motorola.c
 file	arch/m68k/m68k/procfs_machdep.c		procfs
 file	arch/m68k/m68k/sys_machdep.c

Index: src/sys/arch/next68k/include/cpu.h
diff -u src/sys/arch/next68k/include/cpu.h:1.52 src/sys/arch/next68k/include/cpu.h:1.53
--- src/sys/arch/next68k/include/cpu.h:1.52	Sat Feb 11 02:31:34 2023
+++ src/sys/arch/next68k/include/cpu.h	Tue Jan  9 04:16:26 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.52 2023/02/11 02:31:34 tsutsui Exp $	*/
+/*	$NetBSD: cpu.h,v 1.53 2024/01/09 04:16:26 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -115,8 +115,6 @@ extern	int	astpending;	/* need to trap b
 extern	void (*vectab[])(void);
 
 /* locore.s functions */
-void	loadustp(int);
-
 void	doboot(void) __attribute__((__noreturn__));
 int	nmihand(void *);
 

Index: src/sys/arch/next68k/next68k/genassym.cf
diff -u src/sys/arch/next68k/next68k/genassym.cf:1.32 src/sys/arch/next68k/next68k/genassym.cf:1.33
--- src/sys/arch/next68k/next68k/genassym.cf:1.32	Wed Dec 27 19:47:00 2023
+++ src/sys/arch/next68k/next68k/genassym.cf	Tue Jan  9 04:16:26 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.32 2023/12/27 19:47:00 thorpej Exp $
+#	$NetBSD: genassym.cf,v 1.33 2024/01/09 04:16:26 thorpej Exp $
 
 #
 # Copyright (c) 1982, 1990, 1993
@@ -53,12 +53,7 @@ define	MMU_68030		MMU_68030
 define	MMU_68851		MMU_68851
 
 # MMU configuration options
-ifdef M68K_MMU_HP
-define	M68K_MMU_HP		1
-endif
-ifdef M68K_MMU_MOTOROLA
 define	M68K_MMU_MOTOROLA	1
-endif
 
 # values for cputype
 define	CPU_68020		CPU_68020

Index: src/sys/arch/next68k/next68k/locore.s
diff -u src/sys/arch/next68k/next68k/locore.s:1.77 src/sys/arch/next68k/next68k/locore.s:1.78
--- src/sys/arch/next68k/next68k/locore.s:1.77	Wed Dec 27 19:47:00 2023
+++ src/sys/arch/next68k/next68k/locore.s	Tue Jan  9 04:16:26 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.77 2023/12/27 19:47:00 thorpej Exp $	*/
+/*	$NetBSD: locore.s,v 1.78 2024/01/09 04:16:26 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1998 Darrin B. Jewell
@@ -335,12 +335,13 @@ Lstart3:
 	.long	0x4e7b1807		| movc %d1,%srp
 	jra	Lstploaddone
 Lmotommu1:
+#ifdef M68030
 	RELOC(protorp, %a0)
 	movl	#MMU51_SRP_BITS,%a0@	| see pmap.h
 	movl	%d1,%a0@(4)		| + segtable address
 	pmove	%a0@,%srp		| load the supervisor root pointer
 	movl	#MMU51_CRP_BITS,%a0@	| reinit upper half for CRP loads
-
+#endif /* M68030 */
 Lstploaddone:
 
 	/*
@@ -884,45 +885,6 @@ Lsldone:
 #endif
 
 /*
- * Load a new user segment table pointer.
- */
-ENTRY(loadustp)
-#if defined(M68K_MMU_MOTOROLA)
-	tstl	_C_LABEL(mmutype)	| HP MMU?
-	jeq	Lhpmmu9			| yes, skip
-	movl	%sp@(4),%d0		| new USTP
-#if defined(M68040)
-	cmpl	#MMU_68040,_C_LABEL(mmutype) | 68040?
-	jne	LmotommuC		| no, skip
-	.word	0xf518			| yes, pflusha
-	.long	0x4e7b0806		| movc %d0,urp
-	rts
-LmotommuC:
-#endif
-	pflusha				| flush entire TLB
-	lea	_C_LABEL(protorp),%a0	| CRP prototype
-	movl	%d0,%a0@(4)		| stash USTP
-	pmove	%a0@,%crp		| load root pointer
-	movl	#CACHE_CLR,%d0
-	movc	%d0,%cacr		| invalidate cache(s)
-	rts
-Lhpmmu9:
-#endif
-#if defined(M68K_MMU_HP)
-	movl	#CACHE_CLR,%d0
-	movc	%d0,%cacr		| invalidate cache(s)
-	MMUADDR(%a0)
-	movl	%a0@(MMUTBINVAL),%d1	| invalidate TLB
-	tstl	_C_LABEL(ectype)	| have external VAC?
-	jle	1f			| no, skip
-	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
-#endif
-	rts
-
-/*
  * Set processor priority level calls.  Most are implemented with
  * inline asm expansions.  However, spl0 requires special handling
  * as we need to check for our emulated software interrupts.
@@ -1046,9 +1008,6 @@ GLOBAL(cputype)
 GLOBAL(fputype)
 	.long	0xdeadbeef	| default to 68882 FPU
 
-GLOBAL(protorp)
-	.long	0,0		| prototype root pointer
-
 GLOBAL(prototc)
 	.long	0		| prototype translation control
 

Index: src/sys/arch/virt68k/conf/files.virt68k
diff -u src/sys/arch/virt68k/conf/files.virt68k:1.2 src/sys/arch/virt68k/conf/files.virt68k:1.3
--- src/sys/arch/virt68k/conf/files.virt68k:1.2	Tue Jan  2 18:11:44 2024
+++ src/sys/arch/virt68k/conf/files.virt68k	Tue Jan  9 04:16:27 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: files.virt68k,v 1.2 2024/01/02 18:11:44 thorpej Exp $
+#	$NetBSD: files.virt68k,v 1.3 2024/01/09 04:16:27 thorpej Exp $
 
 # config file for virt68k
 
@@ -47,6 +47,7 @@ file arch/m68k/m68k/cacheops.c
 file arch/m68k/m68k/db_memrw.c			ddb | kgdb
 file arch/m68k/m68k/kgdb_machdep.c		kgdb
 file arch/m68k/m68k/m68k_trap.c
+file arch/m68k/m68k/mmu_subr.s
 file arch/m68k/m68k/pmap_motorola.c
 file arch/m68k/m68k/procfs_machdep.c		procfs
 file arch/m68k/m68k/sys_machdep.c

Index: src/sys/arch/virt68k/include/cpu.h
diff -u src/sys/arch/virt68k/include/cpu.h:1.3 src/sys/arch/virt68k/include/cpu.h:1.4
--- src/sys/arch/virt68k/include/cpu.h:1.3	Tue Jan  2 18:10:36 2024
+++ src/sys/arch/virt68k/include/cpu.h	Tue Jan  9 04:16:27 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.3 2024/01/02 18:10:36 thorpej Exp $	*/
+/*	$NetBSD: cpu.h,v 1.4 2024/01/09 04:16:27 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -112,7 +112,6 @@ extern int astpending;		/* need to trap 
 #ifdef _KERNEL
 void	cpu_set_reset_func(void (*)(void *, int), void *);
 int	nmihand(void *);
-void	loadustp(paddr_t);
 
 #endif /* _KERNEL */
 

Index: src/sys/arch/virt68k/virt68k/locore.s
diff -u src/sys/arch/virt68k/virt68k/locore.s:1.3 src/sys/arch/virt68k/virt68k/locore.s:1.4
--- src/sys/arch/virt68k/virt68k/locore.s:1.3	Sun Jan  7 16:41:24 2024
+++ src/sys/arch/virt68k/virt68k/locore.s	Tue Jan  9 04:16:27 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.3 2024/01/07 16:41:24 thorpej Exp $	*/
+/*	$NetBSD: locore.s,v 1.4 2024/01/09 04:16:27 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -618,7 +618,6 @@ Laststkadj:
 #define	FPCOPROC	/* XXX: Temp. Reqd. */
 #include <m68k/m68k/switch_subr.s>
 
-
 #if defined(M68040) || defined(M68060)
 ENTRY(suline)
 	movl	%sp@(4),%a0		| address to write
@@ -666,35 +665,6 @@ ENTRY_NOPROFILE(getsp)
 	movl	%d0,%a0
 	rts
 
-/*
- * Load a new user segment table pointer.
- */
-ENTRY(loadustp)
-	movl	%sp@(4),%d0		| new USTP
-#if defined(M68040) || defined(M68060)
-	cmpl    #MMU_68040,_C_LABEL(mmutype) | 68040?
-	jne     LmotommuC               | no, skip
-	.word	0xf518			| pflusha
-	.long   0x4e7b0806              | movc d0,urp
-#ifdef M68060
-	cmpl	#CPU_68060,_C_LABEL(cputype)
-	jne	Lldno60
-	movc	%cacr,%d0
-	orl	#IC60_CUBC,%d0		| clear user branch cache entries
-	movc	%d0,%cacr
-Lldno60:
-#endif
-	rts
-LmotommuC:
-#endif
-	pflusha				| flush entire TLB
-	lea	_C_LABEL(protorp),%a0	| CRP prototype
-	movl	%d0,%a0@(4)		| stash USTP
-	pmove	%a0@,%crp		| load root pointer
-	movl	#CACHE_CLR,%d0
-	movc	%d0,%cacr		| invalidate cache(s)
-	rts
-
 ENTRY(getsr)
 	moveq	#0,%d0
 	movw	%sr,%d0
@@ -714,9 +684,6 @@ GLOBAL(cputype)
 GLOBAL(fputype)
 	.long	FPU_68040	| default to FPU_68040
 
-GLOBAL(protorp)
-	.long	0,0		| prototype root pointer
-
 /*
  * interrupt counters.
  * XXXSCW: Will go away soon; kept here to keep vmstat happy

Index: src/sys/arch/x68k/conf/files.x68k
diff -u src/sys/arch/x68k/conf/files.x68k:1.83 src/sys/arch/x68k/conf/files.x68k:1.84
--- src/sys/arch/x68k/conf/files.x68k:1.83	Wed May  8 13:40:17 2019
+++ src/sys/arch/x68k/conf/files.x68k	Tue Jan  9 04:16:27 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: files.x68k,v 1.83 2019/05/08 13:40:17 isaki Exp $
+#	$NetBSD: files.x68k,v 1.84 2024/01/09 04:16:27 thorpej Exp $
 #
 # new style config file for x68k architecture
 #
@@ -35,6 +35,7 @@ file	arch/m68k/m68k/cacheops.c
 file	arch/m68k/m68k/db_memrw.c	ddb
 file	arch/m68k/m68k/fpu.c		compile-with "${M68K_KERN_FPU}"
 file	arch/m68k/m68k/m68k_trap.c
+file	arch/m68k/m68k/mmu_subr.s
 file	arch/m68k/m68k/pmap_motorola.c
 file	arch/m68k/m68k/procfs_machdep.c	procfs
 file	arch/m68k/m68k/sys_machdep.c

Index: src/sys/arch/x68k/include/cpu.h
diff -u src/sys/arch/x68k/include/cpu.h:1.63 src/sys/arch/x68k/include/cpu.h:1.64
--- src/sys/arch/x68k/include/cpu.h:1.63	Sun Jan  7 07:58:33 2024
+++ src/sys/arch/x68k/include/cpu.h	Tue Jan  9 04:16:27 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.63 2024/01/07 07:58:33 isaki Exp $	*/
+/*	$NetBSD: cpu.h,v 1.64 2024/01/09 04:16:27 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -121,9 +121,6 @@ extern uint8_t *intiolimit;
 /* machdep.c functions */
 void	dumpsys(void);
 
-/* locore.s functions */
-void	loadustp(int);
-
 /* machdep.c functions */
 int	badaddr(volatile void*);
 int	badbaddr(volatile void*);

Index: src/sys/arch/x68k/x68k/genassym.cf
diff -u src/sys/arch/x68k/x68k/genassym.cf:1.39 src/sys/arch/x68k/x68k/genassym.cf:1.40
--- src/sys/arch/x68k/x68k/genassym.cf:1.39	Wed Dec 27 17:35:37 2023
+++ src/sys/arch/x68k/x68k/genassym.cf	Tue Jan  9 04:16:27 2024
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.39 2023/12/27 17:35:37 thorpej Exp $
+#	$NetBSD: genassym.cf,v 1.40 2024/01/09 04:16:27 thorpej Exp $
 
 #
 # Copyright (c) 1982, 1990, 1993
@@ -73,6 +73,8 @@ ifdef M68060
 define	M68060			1
 endif
 
+define	M68K_MMU_MOTOROLA	1
+
 # values for fputype
 define	FPU_NONE		FPU_NONE
 define	FPU_68881		FPU_68881

Index: src/sys/arch/x68k/x68k/locore.s
diff -u src/sys/arch/x68k/x68k/locore.s:1.126 src/sys/arch/x68k/x68k/locore.s:1.127
--- src/sys/arch/x68k/x68k/locore.s:1.126	Sat Jan  6 05:31:19 2024
+++ src/sys/arch/x68k/x68k/locore.s	Tue Jan  9 04:16:27 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.126 2024/01/06 05:31:19 isaki Exp $	*/
+/*	$NetBSD: locore.s,v 1.127 2024/01/09 04:16:27 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -821,35 +821,6 @@ ENTRY(ecacheoff)
 	rts
 
 /*
- * Load a new user segment table pointer.
- */
-ENTRY(loadustp)
-	movl	%sp@(4),%d0		| new USTP
-#if defined(M68040) || defined(M68060)
-	cmpl	#MMU_68040,_C_LABEL(mmutype) | 68040?
-	jne	LmotommuC		| no, skip
-	.word	0xf518			| yes, pflusha
-	.long	0x4e7b0806		| movc %d0,%urp
-#ifdef M68060
-	cmpl	#CPU_68060,_C_LABEL(cputype)
-	jne	Lldno60
-	movc	%cacr,%d0
-	orl	#IC60_CUBC,%d0		| clear user branch cache entries
-	movc	%d0,%cacr
-Lldno60:
-#endif
-	rts
-LmotommuC:
-#endif
-	pflusha				| flush entire TLB
-	lea	_C_LABEL(protorp),%a0	| CRP prototype
-	movl	%d0,%a0@(4)		| stash USTP
-	pmove	%a0@,%crp		| load root pointer
-	movl	#CACHE_CLR,%d0
-	movc	%d0,%cacr		| invalidate cache(s)
-	rts
-
-/*
  * _delay(u_int N)
  *
  * Delay for at least N microseconds.
@@ -929,9 +900,6 @@ GLOBAL(ectype)
 GLOBAL(fputype)
 	.long	FPU_NONE
 
-GLOBAL(protorp)
-	.long	0,0			| prototype root pointer
-
 GLOBAL(intiobase)
 	.long	0			| KVA of base of internal IO space
 

Reply via email to