Module Name:    src
Committed By:   tsutsui
Date:           Fri Oct 15 15:55:54 UTC 2010

Modified Files:
        src/sys/arch/sun3/include: param.h param3.h param3x.h vmparam.h
            vmparam3.h vmparam3x.h
        src/sys/arch/sun3/sun3: genassym.cf locore.s locore2.c machdep.c mem.c
            pmap.c
        src/sys/arch/sun3/sun3x: genassym.cf locore.s machdep.c mem.c pmap.c
        src/sys/rump/librump/rumpkern: emul.c
        src/sys/uvm: uvm_readahead.c

Log Message:
Make common kernel module binaries work on both sun3 and sun3x.
Tested on 3/160 (on TME) and (real) 3/80.

XXX: module files can be loaded only on single user?


To generate a diff of this commit:
cvs rdiff -u -r1.57 -r1.58 src/sys/arch/sun3/include/param.h
cvs rdiff -u -r1.52 -r1.53 src/sys/arch/sun3/include/param3.h
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/sun3/include/param3x.h
cvs rdiff -u -r1.34 -r1.35 src/sys/arch/sun3/include/vmparam.h
cvs rdiff -u -r1.36 -r1.37 src/sys/arch/sun3/include/vmparam3.h
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/sun3/include/vmparam3x.h
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/sun3/sun3/genassym.cf
cvs rdiff -u -r1.92 -r1.93 src/sys/arch/sun3/sun3/locore.s
cvs rdiff -u -r1.98 -r1.99 src/sys/arch/sun3/sun3/locore2.c
cvs rdiff -u -r1.197 -r1.198 src/sys/arch/sun3/sun3/machdep.c
cvs rdiff -u -r1.51 -r1.52 src/sys/arch/sun3/sun3/mem.c
cvs rdiff -u -r1.164 -r1.165 src/sys/arch/sun3/sun3/pmap.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/sun3/sun3x/genassym.cf
cvs rdiff -u -r1.60 -r1.61 src/sys/arch/sun3/sun3x/locore.s
cvs rdiff -u -r1.123 -r1.124 src/sys/arch/sun3/sun3x/machdep.c
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/sun3/sun3x/mem.c
cvs rdiff -u -r1.110 -r1.111 src/sys/arch/sun3/sun3x/pmap.c
cvs rdiff -u -r1.145 -r1.146 src/sys/rump/librump/rumpkern/emul.c
cvs rdiff -u -r1.6 -r1.7 src/sys/uvm/uvm_readahead.c

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/sun3/include/param.h
diff -u src/sys/arch/sun3/include/param.h:1.57 src/sys/arch/sun3/include/param.h:1.58
--- src/sys/arch/sun3/include/param.h:1.57	Sun Dec 11 12:19:21 2005
+++ src/sys/arch/sun3/include/param.h	Fri Oct 15 15:55:52 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: param.h,v 1.57 2005/12/11 12:19:21 christos Exp $	*/
+/*	$NetBSD: param.h,v 1.58 2010/10/15 15:55:52 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1990, 1993
@@ -86,6 +86,9 @@
 
 #define	PGSHIFT		13		/* LOG2(NBPG) */
 
+#define	MAXBSIZE	0x8000		/* max FS block size */
+#define	MAXPHYS		0xe000		/* XXX: sun3 DMA can't handle 64KB? */
+
 #ifdef MSGBUFSIZE
 #error "MSGBUFSIZE is not user-adjustable for this arch"
 #endif
@@ -95,14 +98,17 @@
 /* This is needed by ps (actually USPACE). */
 #define	UPAGES		2		/* pages of u-area */
 
-#if defined(_KERNEL) || defined(_STANDALONE)
 #ifdef	_SUN3_
-#include <arch/sun3/include/param3.h>
+#include <machine/param3.h>
 #endif	/* SUN3 */
 #ifdef	_SUN3X_
-#include <arch/sun3/include/param3x.h>
+#include <machine/param3x.h>
 #endif	/* SUN3X */
-#endif	/* _KERNEL */
+
+/* default for rump etc. */
+#if !defined(_SUN3_) && !defined(_SUN3X_)
+#include <machine/param3.h>
+#endif
 
 #include <m68k/param.h>
 
@@ -117,6 +123,9 @@
 
 #include <machine/intr.h>
 
+extern const vaddr_t kernbase;
+extern const vaddr_t kern_end;
+
 extern void _delay(unsigned);
 #define delay(us)	_delay((us)<<8)
 #define	DELAY(n)	delay(n)

Index: src/sys/arch/sun3/include/param3.h
diff -u src/sys/arch/sun3/include/param3.h:1.52 src/sys/arch/sun3/include/param3.h:1.53
--- src/sys/arch/sun3/include/param3.h:1.52	Fri Dec 11 13:52:57 2009
+++ src/sys/arch/sun3/include/param3.h	Fri Oct 15 15:55:52 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: param3.h,v 1.52 2009/12/11 13:52:57 tsutsui Exp $	*/
+/*	$NetBSD: param3.h,v 1.53 2010/10/15 15:55:52 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1990, 1993
@@ -78,9 +78,5 @@
  * Machine dependent constants for the Sun3 series.
  */
 
-#define	KERNBASE	0x0E000000	/* start of kernel virtual */
-#define	KERNTEXTOFF	0x0E004000	/* start of kernel text */
-#define	KERN_END	0x0FE00000	/* end of kernel virtual */
-
-#define	MAXBSIZE	0x8000		/* max FS block size */
-#define	MAXPHYS		0xe000
+#define	KERNBASE3	0x0E000000	/* start of kernel virtual */
+#define	KERN_END3	0x0FE00000	/* end of kernel virtual */

Index: src/sys/arch/sun3/include/param3x.h
diff -u src/sys/arch/sun3/include/param3x.h:1.15 src/sys/arch/sun3/include/param3x.h:1.16
--- src/sys/arch/sun3/include/param3x.h:1.15	Fri Dec 11 13:52:57 2009
+++ src/sys/arch/sun3/include/param3x.h	Fri Oct 15 15:55:52 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: param3x.h,v 1.15 2009/12/11 13:52:57 tsutsui Exp $	*/
+/*	$NetBSD: param3x.h,v 1.16 2010/10/15 15:55:52 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1990, 1993
@@ -78,9 +78,5 @@
  * Machine dependent constants for the Sun3X series.
  */
 
-#define	KERNBASE	0xF8000000	/* start of kernel virtual */
-#define	KERNTEXTOFF	0xF8004000	/* start of kernel text */
-#define	KERN_END	0xFE000000	/* end of kernel virtual */
-
-#define	MAXBSIZE	0x8000		/* max FS block size */
-
+#define	KERNBASE3X	0xF8000000	/* start of kernel virtual */
+#define	KERN_END3X	0xFE000000	/* end of kernel virtual */

Index: src/sys/arch/sun3/include/vmparam.h
diff -u src/sys/arch/sun3/include/vmparam.h:1.34 src/sys/arch/sun3/include/vmparam.h:1.35
--- src/sys/arch/sun3/include/vmparam.h:1.34	Fri Apr 30 13:48:55 2010
+++ src/sys/arch/sun3/include/vmparam.h	Fri Oct 15 15:55:52 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: vmparam.h,v 1.34 2010/04/30 13:48:55 pooka Exp $	*/
+/*	$NetBSD: vmparam.h,v 1.35 2010/10/15 15:55:52 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -37,7 +37,9 @@
 #define	PAGE_SIZE	(1 << PAGE_SHIFT)
 #define	PAGE_MASK	(PAGE_SIZE - 1)
 
-#define	USRSTACK	KERNBASE
+#define	USRSTACK	kernbase	/* for modules */
+#define	USRSTACK3	KERNBASE3	/* for asm not in modules */
+#define	USRSTACK3X	KERNBASE3X
 
 #ifdef	_SUN3_
 #include <machine/vmparam3.h>
@@ -51,9 +53,14 @@
 #include <machine/vmparam3.h>
 #endif
 
-/* XXX: this makes modules *compile* */
-#ifdef _MODULE
-extern char KERNBASE[];
+/*
+ * PTEs for mapping user space into the kernel for phyio operations.
+ * The actual limitation for physio requests will be the DVMA space,
+ * and that is fixed by hardware design at 1MB.  We could make the
+ * physio map larger than that, but it would not buy us much.
+ */
+#ifndef USRIOSIZE
+#define USRIOSIZE	128		/* 1 MB */
 #endif
 
 /* This is needed by some LKMs. */
@@ -65,10 +72,10 @@
 
 /* user/kernel map constants */
 #define VM_MIN_ADDRESS		((vaddr_t)0)
-#define VM_MAX_ADDRESS		((vaddr_t)KERNBASE)
-#define VM_MAXUSER_ADDRESS	((vaddr_t)KERNBASE)
-#define VM_MIN_KERNEL_ADDRESS	((vaddr_t)KERNBASE)
-#define VM_MAX_KERNEL_ADDRESS	((vaddr_t)KERN_END)
+#define VM_MAX_ADDRESS		kernbase
+#define VM_MAXUSER_ADDRESS	kernbase
+#define VM_MIN_KERNEL_ADDRESS	kernbase
+#define VM_MAX_KERNEL_ADDRESS	kern_end
 
 /* virtual sizes (bytes) for various kernel submaps */
 #define VM_PHYS_SIZE		(USRIOSIZE*PAGE_SIZE)

Index: src/sys/arch/sun3/include/vmparam3.h
diff -u src/sys/arch/sun3/include/vmparam3.h:1.36 src/sys/arch/sun3/include/vmparam3.h:1.37
--- src/sys/arch/sun3/include/vmparam3.h:1.36	Fri Apr 30 13:48:55 2010
+++ src/sys/arch/sun3/include/vmparam3.h	Fri Oct 15 15:55:52 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: vmparam3.h,v 1.36 2010/04/30 13:48:55 pooka Exp $	*/
+/*	$NetBSD: vmparam3.h,v 1.37 2010/10/15 15:55:52 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1990 The Regents of the University of California.
@@ -112,14 +112,4 @@
 #define	MAXSSIZ		MAXDSIZ			/* max stack size */
 #endif
 
-/*
- * PTEs for mapping user space into the kernel for phyio operations.
- * The actual limitation for physio requests will be the DVMA space,
- * and that is fixed by hardware design at 1MB.  We could make the
- * physio map larger than that, but it would not buy us much.
- */
-#ifndef USRIOSIZE
-#define USRIOSIZE	128		/* 1 MB */
-#endif
-
 #define	PAGER_MAP_DEFAULT_SIZE (4 * 1024 * 1024)

Index: src/sys/arch/sun3/include/vmparam3x.h
diff -u src/sys/arch/sun3/include/vmparam3x.h:1.20 src/sys/arch/sun3/include/vmparam3x.h:1.21
--- src/sys/arch/sun3/include/vmparam3x.h:1.20	Fri Apr 30 13:48:55 2010
+++ src/sys/arch/sun3/include/vmparam3x.h	Fri Oct 15 15:55:52 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: vmparam3x.h,v 1.20 2010/04/30 13:48:55 pooka Exp $	*/
+/*	$NetBSD: vmparam3x.h,v 1.21 2010/10/15 15:55:52 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1990 The Regents of the University of California.
@@ -98,13 +98,3 @@
 #ifndef	MAXSSIZ
 #define	MAXSSIZ		(32*1024*1024)		/* max stack size */
 #endif
-
-/*
- * PTEs for mapping user space into the kernel for phyio operations.
- * The actual limitation for physio requests will be the DVMA space,
- * and that is fixed by hardware design at 1MB.  We could make the
- * physio map larger than that, but it would not buy us much.
- */
-#ifndef USRIOSIZE
-#define USRIOSIZE	128	/* 1 MB */
-#endif

Index: src/sys/arch/sun3/sun3/genassym.cf
diff -u src/sys/arch/sun3/sun3/genassym.cf:1.13 src/sys/arch/sun3/sun3/genassym.cf:1.14
--- src/sys/arch/sun3/sun3/genassym.cf:1.13	Wed Jul  7 01:23:08 2010
+++ src/sys/arch/sun3/sun3/genassym.cf	Fri Oct 15 15:55:53 2010
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.13 2010/07/07 01:23:08 chs Exp $
+#	$NetBSD: genassym.cf,v 1.14 2010/10/15 15:55:53 tsutsui Exp $
 
 #
 # Copyright (c) 1982, 1990, 1993
@@ -126,13 +126,13 @@
 define	SEGMAP_BASE			SEGMAP_BASE
 
 # sun3 memory map
-define	USRSTACK			USRSTACK
+define	USRSTACK3			USRSTACK3
 define	SUN3_MONSTART			SUN3_MONSTART
 define	SUN3_PROM_BASE			SUN3_PROM_BASE
 define	SUN3_MONEND			SUN3_MONEND
 
 # kernel-isms
-define	KERNBASE			KERNBASE
+define	KERNBASE3			KERNBASE3
 define	USPACE				USPACE
 define	PAGE_SIZE			PAGE_SIZE
 define	NBSG				NBSG

Index: src/sys/arch/sun3/sun3/locore.s
diff -u src/sys/arch/sun3/sun3/locore.s:1.92 src/sys/arch/sun3/sun3/locore.s:1.93
--- src/sys/arch/sun3/sun3/locore.s:1.92	Wed Mar  3 06:53:34 2010
+++ src/sys/arch/sun3/sun3/locore.s	Fri Oct 15 15:55:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.92 2010/03/03 06:53:34 skrll Exp $	*/
+/*	$NetBSD: locore.s,v 1.93 2010/10/15 15:55:53 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1980, 1990, 1993
@@ -117,7 +117,7 @@
 | We will unscramble which PMEGs we actually need later.
 
 	movl	#(SEGMAP_BASE+0),%a0		| src
-	movl	#(SEGMAP_BASE+KERNBASE),%a1	| dst
+	movl	#(SEGMAP_BASE+KERNBASE3),%a1	| dst
 	movl	#(0x400000/NBSG),%d0		| count
 
 L_per_pmeg:
@@ -155,7 +155,7 @@
 	lea	_C_LABEL(lwp0),%a0	| lwp0
 	movl	%a0@(L_PCB),%a1		| XXXuvm_lwp_getuarea
 	lea	%a1@(USPACE-4),%sp	| set SSP to last word
-	movl	#USRSTACK-4,%a2
+	movl	#USRSTACK3-4,%a2
 	movl	%a2,%usp		| init user SP
 
 | Note curpcb was already set in _bootstrap().
@@ -789,7 +789,7 @@
 | Not using _C_LABEL() here because these symbols are never
 | referenced by any C code, and if the leading underscore
 | ever goes away, these lines turn into syntax errors...
-	.set	_KERNBASE,KERNBASE
+	.set	_KERNBASE3,KERNBASE3
 	.set	_MONSTART,SUN3_MONSTART
 	.set	_PROM_BASE,SUN3_PROM_BASE
 	.set	_MONEND,SUN3_MONEND

Index: src/sys/arch/sun3/sun3/locore2.c
diff -u src/sys/arch/sun3/sun3/locore2.c:1.98 src/sys/arch/sun3/sun3/locore2.c:1.99
--- src/sys/arch/sun3/sun3/locore2.c:1.98	Sun Nov 29 15:13:22 2009
+++ src/sys/arch/sun3/sun3/locore2.c	Fri Oct 15 15:55:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore2.c,v 1.98 2009/11/29 15:13:22 pooka Exp $	*/
+/*	$NetBSD: locore2.c,v 1.99 2010/10/15 15:55:53 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 1996 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: locore2.c,v 1.98 2009/11/29 15:13:22 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: locore2.c,v 1.99 2010/10/15 15:55:53 tsutsui Exp $");
 
 #include "opt_ddb.h"
 #include "opt_modular.h"
@@ -153,7 +153,7 @@
 	 */
 
 	if ((cpu_machine_id == ID_SUN3_50) &&
-	    ((vaddr_t)maxsym > (KERNBASE + OBMEM_BW50_ADDR - USPACE))) {
+	    ((vaddr_t)maxsym > (KERNBASE3 + OBMEM_BW50_ADDR - USPACE))) {
 		mon_printf("_save_symtab: too large for 3/50");
 		return;
 	}

Index: src/sys/arch/sun3/sun3/machdep.c
diff -u src/sys/arch/sun3/sun3/machdep.c:1.197 src/sys/arch/sun3/sun3/machdep.c:1.198
--- src/sys/arch/sun3/sun3/machdep.c:1.197	Mon Feb  8 19:02:32 2010
+++ src/sys/arch/sun3/sun3/machdep.c	Fri Oct 15 15:55:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: machdep.c,v 1.197 2010/02/08 19:02:32 joerg Exp $	*/
+/*	$NetBSD: machdep.c,v 1.198 2010/10/15 15:55:53 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1990, 1993
@@ -78,7 +78,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.197 2010/02/08 19:02:32 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.198 2010/10/15 15:55:53 tsutsui Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -106,6 +106,7 @@
 #include <sys/vnode.h>
 #include <sys/syscallargs.h>
 #include <sys/ksyms.h>
+#include <sys/module.h>
 #ifdef	KGDB
 #include <sys/kgdb.h>
 #endif
@@ -139,6 +140,10 @@
 /* Defined by the linker */
 extern char etext[];
 
+/* kernel_arch specific values required by module(9) */
+const vaddr_t kernbase = KERNBASE3;
+const vaddr_t kern_end = KERN_END3;
+
 /* Our exported CPU info; we can have only one. */  
 struct cpu_info cpu_info_store;
 
@@ -226,7 +231,7 @@
 	 * Its mapping was prepared in pmap_bootstrap().
 	 * Also, offset some to avoid PROM scribbles.
 	 */
-	v = (char *)KERNBASE;
+	v = (char *)KERNBASE3;
 	msgbufaddr = v + MSGBUFOFF;
 	initmsgbuf(msgbufaddr, MSGBUFSIZE);
 
@@ -625,7 +630,7 @@
 	/* Fill in cpu_kcore_hdr_t part. */
 	strncpy(chdr_p->name, kernel_arch, sizeof(chdr_p->name));
 	chdr_p->page_size = PAGE_SIZE;
-	chdr_p->kernbase = KERNBASE;
+	chdr_p->kernbase = KERNBASE3;
 
 	/* Fill in the sun3_kcore_hdr part (MMU state). */
 	pmap_kcore_hdr(sh);
@@ -669,7 +674,7 @@
 	do {
 		if ((todo & 0xf) == 0)
 			printf_nolog("\r%4d", todo);
-		vaddr = (char*)(paddr + KERNBASE);
+		vaddr = (char*)(paddr + KERNBASE3);
 		error = (*dsw->d_dump)(dumpdev, blkno, vaddr, PAGE_SIZE);
 		if (error)
 			goto fail;
@@ -731,3 +736,13 @@
 {
 	return ENOEXEC;
 }
+
+#ifdef MODULAR
+/*
+ * Push any modules loaded by the bootloader etc.
+ */
+void
+module_init_md(void)
+{
+}
+#endif

Index: src/sys/arch/sun3/sun3/mem.c
diff -u src/sys/arch/sun3/sun3/mem.c:1.51 src/sys/arch/sun3/sun3/mem.c:1.52
--- src/sys/arch/sun3/sun3/mem.c:1.51	Sun Mar  4 14:03:03 2007
+++ src/sys/arch/sun3/sun3/mem.c	Fri Oct 15 15:55:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: mem.c,v 1.51 2007/03/04 14:03:03 tsutsui Exp $	*/
+/*	$NetBSD: mem.c,v 1.52 2010/10/15 15:55:53 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1990, 1993
@@ -80,7 +80,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mem.c,v 1.51 2007/03/04 14:03:03 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mem.c,v 1.52 2010/10/15 15:55:53 tsutsui Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -178,7 +178,7 @@
 			 * Also note: unlock done at end of function.
 			 */
 			if (v < avail_start) {
-				v += KERNBASE;
+				v += KERNBASE3;
 				goto use_kmem;
 			}
 			/* Temporarily map the memory at vmmap. */

Index: src/sys/arch/sun3/sun3/pmap.c
diff -u src/sys/arch/sun3/sun3/pmap.c:1.164 src/sys/arch/sun3/sun3/pmap.c:1.165
--- src/sys/arch/sun3/sun3/pmap.c:1.164	Fri Dec 11 13:52:57 2009
+++ src/sys/arch/sun3/sun3/pmap.c	Fri Oct 15 15:55:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.164 2009/12/11 13:52:57 tsutsui Exp $	*/
+/*	$NetBSD: pmap.c,v 1.165 2010/10/15 15:55:53 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 1996 The NetBSD Foundation, Inc.
@@ -80,7 +80,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.164 2009/12/11 13:52:57 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.165 2010/10/15 15:55:53 tsutsui Exp $");
 
 #include "opt_ddb.h"
 #include "opt_pmap_debug.h"
@@ -132,7 +132,7 @@
 #define DVMA_MAP_END	(DVMA_MAP_BASE + DVMA_MAP_AVAIL)
 
 /* User segments from 0 to KERNBASE */
-#define	NUSEG	(KERNBASE / NBSG)
+#define	NUSEG	(KERNBASE3 / NBSG)
 /* The remainder are kernel segments. */
 #define	NKSEG	(NSEGMAP - NUSEG)
 
@@ -1523,7 +1523,7 @@
 	 * Determine the range of physical memory available.
 	 * Physical memory at zero was remapped to KERNBASE.
 	 */
-	avail_start = nextva - KERNBASE;
+	avail_start = nextva - KERNBASE3;
 	if (rvec->romvecVersion < 1) {
 		mon_printf("Warning: ancient PROM version=%d\n",
 			   rvec->romvecVersion);
@@ -1575,7 +1575,7 @@
 	 * Unmap user virtual segments.
 	 * VA range: [0 .. KERNBASE]
 	 */
-	for (va = 0; va < KERNBASE; va += NBSG)
+	for (va = 0; va < KERNBASE3; va += NBSG)
 		set_segmap(va, SEGINV);
 
 	/*
@@ -1641,7 +1641,7 @@
 	 * (physical address zero) so its contents will be
 	 * preserved through a reboot.
 	 */
-	va = KERNBASE;
+	va = KERNBASE3;
 	pte = get_pte(va);
 	pte |= (PG_SYSTEM | PG_WRITE | PG_NC);
 	set_pte(va, pte);
@@ -3654,7 +3654,7 @@
 	sh->pg_valid = PG_VALID;
 
 	/* Copy the kernel segmap (256 bytes). */
-	va = KERNBASE;
+	va = KERNBASE3;
 	cp = sh->ksegmap;
 	ep = cp + sizeof(sh->ksegmap);
 	do {

Index: src/sys/arch/sun3/sun3x/genassym.cf
diff -u src/sys/arch/sun3/sun3x/genassym.cf:1.12 src/sys/arch/sun3/sun3x/genassym.cf:1.13
--- src/sys/arch/sun3/sun3x/genassym.cf:1.12	Wed Jul  7 01:23:08 2010
+++ src/sys/arch/sun3/sun3x/genassym.cf	Fri Oct 15 15:55:53 2010
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.12 2010/07/07 01:23:08 chs Exp $
+#	$NetBSD: genassym.cf,v 1.13 2010/10/15 15:55:53 tsutsui Exp $
 
 #
 # Copyright (c) 1982, 1990, 1993
@@ -119,13 +119,13 @@
 define	CACHE_CLR			CACHE_CLR
 
 # sun3 memory map
-define	USRSTACK			USRSTACK
+define	USRSTACK3X			USRSTACK3X
 define	SUN3X_MONSTART			SUN3X_MONSTART
 define	SUN3X_PROM_BASE			SUN3X_PROM_BASE
 define	SUN3X_MONEND			SUN3X_MONEND
 
 # kernel-isms
-define	KERNBASE			KERNBASE
+define	KERNBASE3X			KERNBASE3X
 define	USPACE				USPACE
 define	PAGE_SIZE			PAGE_SIZE
 

Index: src/sys/arch/sun3/sun3x/locore.s
diff -u src/sys/arch/sun3/sun3x/locore.s:1.60 src/sys/arch/sun3/sun3x/locore.s:1.61
--- src/sys/arch/sun3/sun3x/locore.s:1.60	Thu Feb 25 07:21:20 2010
+++ src/sys/arch/sun3/sun3x/locore.s	Fri Oct 15 15:55:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.60 2010/02/25 07:21:20 skrll Exp $	*/
+/*	$NetBSD: locore.s,v 1.61 2010/10/15 15:55:53 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1980, 1990, 1993
@@ -112,7 +112,7 @@
 | boot loader has loaded us into low memory but all the symbols in this
 | code have been linked high.
 	movw	#PSL_HIGHIPL,%sr	| no interrupts
-	movl	#KERNBASE,%a5		| for vtop conversion
+	movl	#KERNBASE3X,%a5		| for vtop conversion
 	lea	_C_LABEL(mon_crp),%a0	| where to store the CRP
 	subl	%a5,%a0
 	| Note: borrowing mon_crp for tt0 setup...
@@ -169,7 +169,7 @@
 	lea	_C_LABEL(lwp0),%a0	| get lwp0
 	movl	%a0@(L_PCB),%a1		| XXXuvm_lwp_getuarea
 	lea	%a1@(USPACE-4),%sp	| set SSP to last word
-	movl	#USRSTACK-4,%a2
+	movl	#USRSTACK3X-4,%a2
 	movl	%a2,%usp		| init user SP
 
 | Note curpcb was already set in _bootstrap().
@@ -800,7 +800,7 @@
 | Not using _C_LABEL() here because these symbols are never
 | referenced by any C code, and if the leading underscore
 | ever goes away, these lines turn into syntax errors...
-	.set	_KERNBASE,KERNBASE
+	.set	_KERNBASE3X,KERNBASE3X
 	.set	_MONSTART,SUN3X_MONSTART
 	.set	_PROM_BASE,SUN3X_PROM_BASE
 	.set	_MONEND,SUN3X_MONEND

Index: src/sys/arch/sun3/sun3x/machdep.c
diff -u src/sys/arch/sun3/sun3x/machdep.c:1.123 src/sys/arch/sun3/sun3x/machdep.c:1.124
--- src/sys/arch/sun3/sun3x/machdep.c:1.123	Mon Feb  8 19:02:32 2010
+++ src/sys/arch/sun3/sun3x/machdep.c	Fri Oct 15 15:55:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: machdep.c,v 1.123 2010/02/08 19:02:32 joerg Exp $	*/
+/*	$NetBSD: machdep.c,v 1.124 2010/10/15 15:55:53 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1990, 1993
@@ -75,7 +75,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.123 2010/02/08 19:02:32 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.124 2010/10/15 15:55:53 tsutsui Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -103,6 +103,7 @@
 #include <sys/vnode.h>
 #include <sys/syscallargs.h>
 #include <sys/ksyms.h>
+#include <sys/module.h>
 #ifdef	KGDB
 #include <sys/kgdb.h>
 #endif
@@ -136,6 +137,10 @@
 /* Defined by the linker */
 extern char etext[];
 
+/* kernel_arch specific values required by module(9) */
+const vaddr_t kernbase = KERNBASE3X;
+const vaddr_t kern_end = KERN_END3X;
+
 /* Our exported CPU info; we can have only one. */  
 struct cpu_info cpu_info_store;
 
@@ -227,7 +232,7 @@
 	 * Its mapping was prepared in pmap_bootstrap().
 	 * Also, offset some to avoid PROM scribbles.
 	 */
-	v = (char *)KERNBASE;
+	v = (char *)KERNBASE3X;
 	msgbufaddr = v + MSGBUFOFF;
 	initmsgbuf(msgbufaddr, MSGBUFSIZE);
 
@@ -650,7 +655,7 @@
 	/* Fill in cpu_kcore_hdr_t part. */
 	strncpy(chdr_p->name, kernel_arch, sizeof(chdr_p->name));
 	chdr_p->page_size = PAGE_SIZE;
-	chdr_p->kernbase = KERNBASE;
+	chdr_p->kernbase = KERNBASE3X;
 
 	/* Fill in the sun3x_kcore_hdr part. */
 	pmap_kcore_hdr(sh);
@@ -731,3 +736,13 @@
 {
 	return ENOEXEC;
 }
+
+#ifdef MODULAR
+/*
+ * Push any modules loaded by the bootloader etc.
+ */
+void
+module_init_md(void)
+{
+}
+#endif

Index: src/sys/arch/sun3/sun3x/mem.c
diff -u src/sys/arch/sun3/sun3x/mem.c:1.33 src/sys/arch/sun3/sun3x/mem.c:1.34
--- src/sys/arch/sun3/sun3x/mem.c:1.33	Sun Mar  4 14:03:03 2007
+++ src/sys/arch/sun3/sun3x/mem.c	Fri Oct 15 15:55:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: mem.c,v 1.33 2007/03/04 14:03:03 tsutsui Exp $	*/
+/*	$NetBSD: mem.c,v 1.34 2010/10/15 15:55:53 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1990, 1993
@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mem.c,v 1.33 2007/03/04 14:03:03 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mem.c,v 1.34 2010/10/15 15:55:53 tsutsui Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -171,7 +171,7 @@
 			 * alias mapping known to exist for this range.
 			 */
 			if (v < avail_start) {
-				v += KERNBASE;
+				v += KERNBASE3X;
 				goto use_kmem;
 			}
 			/* Temporarily map the memory at vmmap. */

Index: src/sys/arch/sun3/sun3x/pmap.c
diff -u src/sys/arch/sun3/sun3x/pmap.c:1.110 src/sys/arch/sun3/sun3x/pmap.c:1.111
--- src/sys/arch/sun3/sun3x/pmap.c:1.110	Thu Nov 26 00:19:23 2009
+++ src/sys/arch/sun3/sun3x/pmap.c	Fri Oct 15 15:55:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.110 2009/11/26 00:19:23 matt Exp $	*/
+/*	$NetBSD: pmap.c,v 1.111 2010/10/15 15:55:53 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc.
@@ -105,7 +105,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.110 2009/11/26 00:19:23 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.111 2010/10/15 15:55:53 tsutsui Exp $");
 
 #include "opt_ddb.h"
 #include "opt_pmap_debug.h"
@@ -348,7 +348,7 @@
  * for purposes of MMU table allocation is -KERNBASE
  * (length from KERNBASE to 0xFFFFffff)
  */
-#define	KVAS_SIZE		(-KERNBASE)
+#define	KVAS_SIZE		(-KERNBASE3X)
 
 /* Numbers of kernel MMU tables to support KVAS_SIZE. */
 #define KERN_B_TABLES	(KVAS_SIZE >> MMU_TIA_SHIFT)
@@ -388,9 +388,9 @@
 {
 	vaddr_t va;
 
-	va = (pa + KERNBASE);
+	va = (pa + KERNBASE3X);
 #ifdef	PMAP_DEBUG
-	if ((va < KERNBASE) || (va >= virtual_contig_end))
+	if ((va < KERNBASE3X) || (va >= virtual_contig_end))
 		panic("mmu_ptov");
 #endif
 	return (void *)va;
@@ -403,10 +403,10 @@
 
 	va = (vaddr_t)vva;
 #ifdef	PMAP_DEBUG
-	if ((va < KERNBASE) || (va >= virtual_contig_end))
+	if ((va < KERNBASE3X) || (va >= virtual_contig_end))
 		panic("mmu_vtop");
 #endif
-	return va - KERNBASE;
+	return va - KERNBASE3X;
 }
 
 /*
@@ -638,7 +638,7 @@
 	 * That is plenty for our bootstrap work.
 	 */
 	virtual_avail = m68k_round_page(nextva);
-	virtual_contig_end = KERNBASE + 0x400000; /* +4MB */
+	virtual_contig_end = KERNBASE3X + 0x400000; /* +4MB */
 	virtual_end = VM_MAX_KERNEL_ADDRESS;
 	/* Don't need avail_start til later. */
 
@@ -760,7 +760,7 @@
 	 * practice to explicitly show that we are interpreting
 	 * it as a list of A table descriptors.
 	 */
-	for (i = 0; i < MMU_TIA(KERNBASE); i++) {
+	for (i = 0; i < MMU_TIA(KERNBASE3X); i++) {
 		kernAbase[i].addr.raw = 0;
 	}
 
@@ -769,7 +769,7 @@
 	 * correct spots in the contiguous table of PTEs allocated for the
 	 * kernel's virtual memory space.
 	 */
-	for (i = MMU_TIA(KERNBASE); i < MMU_A_TBL_SIZE; i++) {
+	for (i = MMU_TIA(KERNBASE3X); i < MMU_A_TBL_SIZE; i++) {
 		kernAbase[i].attr.raw =
 		    MMU_LONG_DTE_LU | MMU_LONG_DTE_SUPV | MMU_DT_SHORT;
 		kernAbase[i].addr.raw = mmu_vtop(&kernBbase[b]);
@@ -802,7 +802,7 @@
 	 * These variables will never change after this point.
 	 */
 	virtual_contig_end = virtual_avail;
-	avail_start = virtual_avail - KERNBASE;
+	avail_start = virtual_avail - KERNBASE3X;
 
 	/*
 	 * `avail_next' is a running pointer used by pmap_next_page() to
@@ -851,7 +851,7 @@
 	 * Only the mappings created here exist in our tables, so
 	 * remember to map anything we expect to use.
 	 */
-	va = (vaddr_t)KERNBASE;
+	va = (vaddr_t)KERNBASE3X;
 	pa = 0;
 
 	/*
@@ -1001,7 +1001,7 @@
 	 * Note: mon_ctbl[0] maps SUN3X_MON_KDB_BASE
 	 */
 	mon_ctbl = *romp->monptaddr;
-	i = m68k_btop(SUN3X_MON_KDB_BASE - KERNBASE);
+	i = m68k_btop(SUN3X_MON_KDB_BASE - KERNBASE3X);
 	kpte = &kernCbase[i];
 	len = m68k_btop(SUN3X_MONEND - SUN3X_MON_KDB_BASE);
 
@@ -1020,7 +1020,7 @@
 	 * not recorded in our PV lists...
 	 */
 	mon_ctbl = *romp->shadowpteaddr;
-	i = m68k_btop(SUN3X_MON_DVMA_BASE - KERNBASE);
+	i = m68k_btop(SUN3X_MON_DVMA_BASE - KERNBASE3X);
 	kpte = &kernCbase[i];
 	len = m68k_btop(SUN3X_MON_DVMA_SIZE);
 	for (i = (len - 1); i < len; i++) {
@@ -1056,7 +1056,7 @@
 	int i;
 
 	mon_dte = (mmu_long_dte_t *)mon_crp.rp_addr;
-	for (i = MMU_TIA(KERNBASE); i < MMU_TIA(KERN_END); i++) {
+	for (i = MMU_TIA(KERNBASE3X); i < MMU_TIA(KERN_END3X); i++) {
 		mon_dte[i].attr.raw = kernAbase[i].attr.raw;
 		mon_dte[i].addr.raw = kernAbase[i].addr.raw;
 	}
@@ -1395,7 +1395,7 @@
 	at_wired = a_tbl->at_wcnt;
 	if (a_tbl->at_ecnt) {
 		dte = a_tbl->at_dtbl;
-		for (i = 0; i < MMU_TIA(KERNBASE); i++) {
+		for (i = 0; i < MMU_TIA(KERNBASE3X); i++) {
 			/*
 			 * If a table entry points to a valid B table, free
 			 * it and its children.
@@ -2093,7 +2093,7 @@
 	/*
 	 * Calculate the index of the PTE being modified.
 	 */
-	pte_idx = (u_long)m68k_btop(va - KERNBASE);
+	pte_idx = (u_long)m68k_btop(va - KERNBASE3X);
 
 	/* This array is traditionally named "Sysmap" */
 	pte = &kernCbase[pte_idx];
@@ -2153,7 +2153,7 @@
 	mmu_short_pte_t	*pte;
 
 	/* This array is traditionally named "Sysmap" */
-	pte = &kernCbase[(u_long)m68k_btop(va - KERNBASE)];
+	pte = &kernCbase[(u_long)m68k_btop(va - KERNBASE3X)];
 
 	KASSERT(!MMU_VALID_DT(*pte));
 	pte->attr.raw = MMU_DT_INVALID | MMU_DT_PAGE | (pa & MMU_PAGE_MASK);
@@ -2171,8 +2171,8 @@
 		panic("pmap_kremove: alignment");
 #endif
 
-	idx  = m68k_btop(va - KERNBASE);
-	eidx = m68k_btop(va + len - KERNBASE);
+	idx  = m68k_btop(va - KERNBASE3X);
+	eidx = m68k_btop(va + len - KERNBASE3X);
 
 	while (idx < eidx) {
 		kernCbase[idx++].attr.raw = MMU_DT_INVALID;
@@ -2215,7 +2215,7 @@
 	vaddr_t va;
 	mmu_short_pte_t *pte;
 
-	pte = &kernCbase[(unsigned long) m68k_btop(startva - KERNBASE)];
+	pte = &kernCbase[(unsigned long) m68k_btop(startva - KERNBASE3X)];
 	for (va = startva; va < endva; va += PAGE_SIZE, pte++) {
 		if (MMU_VALID_DT(*pte)) {
 		    switch (prot) {
@@ -2823,7 +2823,7 @@
 		*pmap = pmap_kernel();
 
 		va = m68k_ptob(idx);
-		va += KERNBASE;
+		va += KERNBASE3X;
 	}
 		
 	return va;
@@ -2921,7 +2921,7 @@
 {
 	mmu_short_pte_t *pte;
 
-	pte = &kernCbase[(u_int)m68k_btop(va - KERNBASE)];
+	pte = &kernCbase[(u_int)m68k_btop(va - KERNBASE3X)];
 	if (!MMU_VALID_DT(*pte))
 		return false;
 	if (pap != NULL)
@@ -2976,8 +2976,8 @@
 		panic("pmap_remove_kernel: alignment");
 #endif
 
-	idx  = m68k_btop(sva - KERNBASE);
-	eidx = m68k_btop(eva - KERNBASE);
+	idx  = m68k_btop(sva - KERNBASE3X);
+	eidx = m68k_btop(eva - KERNBASE3X);
 
 	while (idx < eidx) {
 		pmap_remove_pte(&kernCbase[idx++]);
@@ -3659,7 +3659,7 @@
 	a_tbl = pmap->pm_a_tmgr;
 
 	count = 0;
-	for (a_idx = 0; a_idx < MMU_TIA(KERNBASE); a_idx++) {
+	for (a_idx = 0; a_idx < MMU_TIA(KERNBASE3X); a_idx++) {
 	    if (MMU_VALID_DT(a_tbl->at_dtbl[a_idx])) {
 	        b_tbl = mmuB2tmgr(mmu_ptov(a_tbl->at_dtbl[a_idx].addr.raw));
 	        for (b_idx = 0; b_idx < MMU_B_TBL_SIZE; b_idx++) {
@@ -3705,7 +3705,7 @@
 	pte_pa = ptest_addr(va & ~PGOFSET);
 
 	/* Convert to a virtual address... */
-	pte = (mmu_short_pte_t *) (KERNBASE + pte_pa);
+	pte = (mmu_short_pte_t *) (KERNBASE3X + pte_pa);
 
 	/* Make sure it is in our level-C tables... */
 	if ((pte < kernCbase) ||
@@ -3727,10 +3727,10 @@
 {
 	u_long idx;
 
-	if (va < KERNBASE)
+	if (va < KERNBASE3X)
 		return;
 
-	idx = (unsigned long) m68k_btop(va - KERNBASE);
+	idx = (unsigned long) m68k_btop(va - KERNBASE3X);
 	kernCbase[idx].attr.raw = pte;
 	TBIS(va);
 }

Index: src/sys/rump/librump/rumpkern/emul.c
diff -u src/sys/rump/librump/rumpkern/emul.c:1.145 src/sys/rump/librump/rumpkern/emul.c:1.146
--- src/sys/rump/librump/rumpkern/emul.c:1.145	Wed Sep  1 19:37:58 2010
+++ src/sys/rump/librump/rumpkern/emul.c	Fri Oct 15 15:55:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: emul.c,v 1.145 2010/09/01 19:37:58 pooka Exp $	*/
+/*	$NetBSD: emul.c,v 1.146 2010/10/15 15:55:53 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 2007 Antti Kantee.  All Rights Reserved.
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: emul.c,v 1.145 2010/09/01 19:37:58 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: emul.c,v 1.146 2010/10/15 15:55:53 tsutsui Exp $");
 
 #include <sys/param.h>
 #include <sys/null.h>
@@ -103,9 +103,10 @@
 int pgshift = 12;
 #endif
 
-/* sun3 is sun3 with broken kernel modules */
+/* on sun3 VM_MAX_ADDRESS is a const variable */
+/* XXX: should be moved into rump.c and initialize for sun3 and sun3x? */
 #ifdef sun3
-char KERNBASE[1]; /* this is completely random ... */
+const vaddr_t kernbase = KERNBASE3;
 #endif
 
 struct loadavg averunnable = {

Index: src/sys/uvm/uvm_readahead.c
diff -u src/sys/uvm/uvm_readahead.c:1.6 src/sys/uvm/uvm_readahead.c:1.7
--- src/sys/uvm/uvm_readahead.c:1.6	Wed Jun 10 01:54:08 2009
+++ src/sys/uvm/uvm_readahead.c	Fri Oct 15 15:55:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_readahead.c,v 1.6 2009/06/10 01:54:08 yamt Exp $	*/
+/*	$NetBSD: uvm_readahead.c,v 1.7 2010/10/15 15:55:53 tsutsui Exp $	*/
 
 /*-
  * Copyright (c)2003, 2005, 2009 YAMAMOTO Takashi,
@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_readahead.c,v 1.6 2009/06/10 01:54:08 yamt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_readahead.c,v 1.7 2010/10/15 15:55:53 tsutsui Exp $");
 
 #include <sys/param.h>
 #include <sys/pool.h>
@@ -66,8 +66,8 @@
 	off_t ra_next;		/* next offset to read-ahead */
 };
 
-#if defined(sun2) || (defined(sun3) && defined(_SUN3_))
-/* XXX: on sun2 and sun3 (but not sun3x) MAXPHYS is 0xe000 */
+#if defined(sun2) || defined(sun3)
+/* XXX: on sun2 and sun3 MAXPHYS is 0xe000 */
 #undef MAXPHYS	
 #define MAXPHYS		0x8000	/* XXX */
 #endif

Reply via email to