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