xref: /netbsd-src/sys/arch/sun2/include/vmparam.h (revision 1b18db475e30f9119b9e0a7454e81be730c4819c)
1*1b18db47Srin /*	$NetBSD: vmparam.h,v 1.16 2020/08/10 10:59:33 rin Exp $	*/
220293ce8Sfredette 
320293ce8Sfredette /*-
420293ce8Sfredette  * Copyright (c) 1998 The NetBSD Foundation, Inc.
520293ce8Sfredette  * All rights reserved.
620293ce8Sfredette  *
720293ce8Sfredette  * Redistribution and use in source and binary forms, with or without
820293ce8Sfredette  * modification, are permitted provided that the following conditions
920293ce8Sfredette  * are met:
1020293ce8Sfredette  * 1. Redistributions of source code must retain the above copyright
1120293ce8Sfredette  *    notice, this list of conditions and the following disclaimer.
1220293ce8Sfredette  * 2. Redistributions in binary form must reproduce the above copyright
1320293ce8Sfredette  *    notice, this list of conditions and the following disclaimer in the
1420293ce8Sfredette  *    documentation and/or other materials provided with the distribution.
1520293ce8Sfredette  *
1620293ce8Sfredette  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
1720293ce8Sfredette  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
1820293ce8Sfredette  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1920293ce8Sfredette  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
2020293ce8Sfredette  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2120293ce8Sfredette  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2220293ce8Sfredette  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2320293ce8Sfredette  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2420293ce8Sfredette  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2520293ce8Sfredette  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2620293ce8Sfredette  * POSSIBILITY OF SUCH DAMAGE.
2720293ce8Sfredette  */
2820293ce8Sfredette 
29d4d0b05eSchs #define __USE_TOPDOWN_VM
30d4d0b05eSchs 
3120293ce8Sfredette /*
3220293ce8Sfredette  * Machine dependent constants for Sun2
3320293ce8Sfredette  *
3420293ce8Sfredette  * The Sun2 has limited total kernel virtual space (14MB) and
3520293ce8Sfredette  * can not use main memory for page tables.  (All active PTEs
3620293ce8Sfredette  * must be installed in special translation RAM in the MMU).
3720293ce8Sfredette  * Therefore, parameters that would normally configure the
3820293ce8Sfredette  * size of various page tables are irrelevant.  Only things
3920293ce8Sfredette  * that consume portions of kernel virtual (KV) space matter,
4020293ce8Sfredette  * and those things should be chosen to conserve KV space.
4120293ce8Sfredette  */
4220293ce8Sfredette 
4320293ce8Sfredette /*
4450659edcSthorpej  * The Sun2 has 2K pages.  Override PAGE_* to be compile-time constants.
4550659edcSthorpej  */
4650659edcSthorpej #define	PAGE_SHIFT	11
4750659edcSthorpej #define	PAGE_SIZE	(1 << PAGE_SHIFT)
4850659edcSthorpej #define	PAGE_MASK	(PAGE_SIZE - 1)
4950659edcSthorpej 
5050659edcSthorpej /*
5120293ce8Sfredette  * We definitely need a small pager map.
5220293ce8Sfredette  */
5323005df1Syamt #define	PAGER_MAP_DEFAULT_SIZE (1 * 1024 * 1024)
5420293ce8Sfredette 
5520293ce8Sfredette /*
5620293ce8Sfredette  * USRSTACK is the top (end) of the user stack.
5720293ce8Sfredette  */
5820293ce8Sfredette #define	USRSTACK	0x1000000	/* High end of user stack */
5920293ce8Sfredette 
6020293ce8Sfredette /*
6120293ce8Sfredette  * Virtual memory related constants, all in bytes.
6220293ce8Sfredette  * The Sun2 has only 16 MB of user-virtual space,
6320293ce8Sfredette  * so we need to be conservative with these limits.
6420293ce8Sfredette  */
6520293ce8Sfredette #ifndef MAXTSIZ
6620293ce8Sfredette #define	MAXTSIZ		(5*1024*1024)		/* max text size */
6720293ce8Sfredette #endif
6820293ce8Sfredette #ifndef DFLDSIZ
6920293ce8Sfredette #define	DFLDSIZ		(4*1024*1024)		/* initial data size limit */
7020293ce8Sfredette #endif
7120293ce8Sfredette #ifndef MAXDSIZ
7220293ce8Sfredette #define	MAXDSIZ		(6*1024*1024)		/* max data size */
7320293ce8Sfredette #endif
7420293ce8Sfredette #ifndef	DFLSSIZ
7520293ce8Sfredette #define	DFLSSIZ		(512*1024)		/* initial stack size limit */
7620293ce8Sfredette #endif
7720293ce8Sfredette #ifndef	MAXSSIZ
7820293ce8Sfredette #define	MAXSSIZ		(4*1024*1024)		/* max stack size */
7920293ce8Sfredette #endif
8020293ce8Sfredette 
8120293ce8Sfredette /*
8220293ce8Sfredette  * PTEs for mapping user space into the kernel for phyio operations.
8320293ce8Sfredette  * The actual limitation for physio requests will be the DVMA space,
8420293ce8Sfredette  * and that is fixed by hardware design at 256K.  We could make the
8520293ce8Sfredette  * physio map larger than that, but it would not buy us much.
8620293ce8Sfredette  */
8720293ce8Sfredette #ifndef USRIOSIZE
8820293ce8Sfredette #define USRIOSIZE	128		/* 256K */
8920293ce8Sfredette #endif
9020293ce8Sfredette 
9120293ce8Sfredette /*
9220293ce8Sfredette  * Mach-derived constants:
9320293ce8Sfredette  */
9420293ce8Sfredette 
9520293ce8Sfredette /* user/kernel map constants */
9694ae8e87Sfredette #define VM_MIN_ADDRESS		((vaddr_t)0)
9794ae8e87Sfredette #define VM_MAX_ADDRESS		((vaddr_t)USRSTACK)
9894ae8e87Sfredette #define VM_MAXUSER_ADDRESS	((vaddr_t)USRSTACK)
9994ae8e87Sfredette #define VM_MIN_KERNEL_ADDRESS	((vaddr_t)KERNBASE)
10094ae8e87Sfredette #define VM_MAX_KERNEL_ADDRESS	((vaddr_t)KERN_END)
10120293ce8Sfredette 
10220293ce8Sfredette /* virtual sizes (bytes) for various kernel submaps */
103ffc984aaSthorpej #define VM_PHYS_SIZE		(USRIOSIZE*PAGE_SIZE)
10420293ce8Sfredette 
10520293ce8Sfredette #define VM_PHYSSEG_STRAT	VM_PSTRAT_BSEARCH
10620293ce8Sfredette 
10720293ce8Sfredette #define	VM_NFREELIST		1
10820293ce8Sfredette #define	VM_FREELIST_DEFAULT	0
10920293ce8Sfredette 
110*1b18db47Srin #ifdef	_MODULE
111edad0f95Sfredette #undef	KERNBASE
11220293ce8Sfredette extern	char KERNBASE[];
113*1b18db47Srin #endif	/* _MODULE */
11420293ce8Sfredette 
11520293ce8Sfredette /* This is needed by some LKMs. */
11620293ce8Sfredette #define VM_PHYSSEG_MAX		4
117