1 1.43 hgutch /* $NetBSD: vmparam.h,v 1.43 2023/02/07 14:11:16 hgutch Exp $ */ 2 1.1 eeh 3 1.1 eeh /* 4 1.1 eeh * Copyright (c) 1992, 1993 5 1.1 eeh * The Regents of the University of California. All rights reserved. 6 1.1 eeh * 7 1.1 eeh * This software was developed by the Computer Systems Engineering group 8 1.1 eeh * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and 9 1.1 eeh * contributed to Berkeley. 10 1.1 eeh * 11 1.1 eeh * All advertising materials mentioning features or use of this software 12 1.1 eeh * must display the following acknowledgement: 13 1.1 eeh * This product includes software developed by the University of 14 1.1 eeh * California, Lawrence Berkeley Laboratory. 15 1.1 eeh * 16 1.1 eeh * Redistribution and use in source and binary forms, with or without 17 1.1 eeh * modification, are permitted provided that the following conditions 18 1.1 eeh * are met: 19 1.1 eeh * 1. Redistributions of source code must retain the above copyright 20 1.1 eeh * notice, this list of conditions and the following disclaimer. 21 1.1 eeh * 2. Redistributions in binary form must reproduce the above copyright 22 1.1 eeh * notice, this list of conditions and the following disclaimer in the 23 1.1 eeh * documentation and/or other materials provided with the distribution. 24 1.24 agc * 3. Neither the name of the University nor the names of its contributors 25 1.1 eeh * may be used to endorse or promote products derived from this software 26 1.1 eeh * without specific prior written permission. 27 1.1 eeh * 28 1.1 eeh * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 29 1.1 eeh * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 30 1.1 eeh * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 31 1.1 eeh * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 32 1.1 eeh * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 33 1.1 eeh * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 34 1.1 eeh * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 35 1.1 eeh * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 36 1.1 eeh * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 37 1.1 eeh * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 38 1.1 eeh * SUCH DAMAGE. 39 1.1 eeh * 40 1.1 eeh * @(#)vmparam.h 8.1 (Berkeley) 6/11/93 41 1.1 eeh */ 42 1.1 eeh 43 1.1 eeh /* 44 1.37 martin * Machine dependent constants for Sun 4U and 4V UltraSPARC 45 1.1 eeh */ 46 1.1 eeh 47 1.12 eeh #ifndef VMPARAM_H 48 1.12 eeh #define VMPARAM_H 49 1.23 thorpej 50 1.34 martin #define __USE_TOPDOWN_VM 51 1.34 martin 52 1.23 thorpej /* 53 1.23 thorpej * We use 8K VM pages on the Sun4U. Override the PAGE_* definitions 54 1.23 thorpej * to be compile-time constants. 55 1.23 thorpej */ 56 1.23 thorpej #define PAGE_SHIFT 13 57 1.23 thorpej #define PAGE_SIZE (1 << PAGE_SHIFT) 58 1.23 thorpej #define PAGE_MASK (PAGE_SIZE - 1) 59 1.12 eeh 60 1.1 eeh /* 61 1.38 martin * Default pager_map of 16MB is awfully small. There is plenty 62 1.38 martin * of VA so use it. 63 1.38 martin */ 64 1.38 martin #define PAGER_MAP_DEFAULT_SIZE (512 * 1024 * 1024) 65 1.38 martin 66 1.38 martin /* 67 1.40 ad * Defaults for Unified Buffer Cache parameters. 68 1.40 ad */ 69 1.40 ad 70 1.40 ad #ifndef UBC_WINSHIFT 71 1.40 ad #define UBC_WINSHIFT 16 /* 64kB */ 72 1.40 ad #endif 73 1.40 ad #ifndef UBC_NWINS 74 1.40 ad #define UBC_NWINS 4096 /* 256MB */ 75 1.40 ad #endif 76 1.40 ad 77 1.40 ad /* 78 1.29 cdi * The kernel itself is mapped by the boot loader with 4Mb locked VM pages, 79 1.29 cdi * so let's keep 4Mb definitions here as well. 80 1.29 cdi */ 81 1.29 cdi #define PAGE_SHIFT_4M 22 82 1.29 cdi #define PAGE_SIZE_4M (1UL<<PAGE_SHIFT_4M) 83 1.29 cdi #define PAGE_MASK_4M (PAGE_SIZE_4M-1) 84 1.29 cdi 85 1.29 cdi /* 86 1.22 thorpej * USRSTACK is the top (end) of the user stack. 87 1.1 eeh */ 88 1.14 mrg #define USRSTACK32 0xffffe000L 89 1.13 eeh #ifdef __arch64__ 90 1.13 eeh #define USRSTACK 0xffffffffffffe000L 91 1.13 eeh #else 92 1.14 mrg #define USRSTACK USRSTACK32 93 1.13 eeh #endif 94 1.1 eeh 95 1.1 eeh /* 96 1.1 eeh * Virtual memory related constants, all in bytes 97 1.15 eeh */ 98 1.35 martin #if __arch64__ 99 1.15 eeh /* 100 1.15 eeh * 64-bit limits: 101 1.15 eeh * 102 1.15 eeh * Since the compiler generates `call' instructions we can't 103 1.15 eeh * have more than 4GB in a single text segment. 104 1.13 eeh * 105 1.15 eeh * And since we only have a 40-bit adderss space, allow half 106 1.15 eeh * of that for data and the other half for stack. 107 1.1 eeh */ 108 1.1 eeh #ifndef MAXTSIZ 109 1.35 martin #define MAXTSIZ (4UL*1024*1024*1024) /* max text size */ 110 1.15 eeh #endif 111 1.15 eeh #ifndef DFLDSIZ 112 1.35 martin #define DFLDSIZ (128UL*1024*1024) /* initial data size limit */ 113 1.15 eeh #endif 114 1.15 eeh #ifndef MAXDSIZ 115 1.42 simonb #define MAXDSIZ (1UL<<39) /* 512GB max data size */ 116 1.35 martin /* 117 1.35 martin * For processes not using topdown VA, we need to limit the data size - 118 1.35 martin * they probably have not been compiled with the proper compiler memory 119 1.35 martin * model. 120 1.35 martin */ 121 1.35 martin #define VM_DEFAULT_ADDRESS_BOTTOMUP(da, sz) \ 122 1.39 riastrad round_page((vaddr_t)(da) + (vsize_t)uimax(maxdmap,1UL*1024*1024*1024)) 123 1.15 eeh #endif 124 1.15 eeh #ifndef DFLSSIZ 125 1.20 thorpej #define DFLSSIZ (2*1024*1024) /* initial stack size limit */ 126 1.15 eeh #endif 127 1.15 eeh #ifndef MAXSSIZ 128 1.35 martin #define MAXSSIZ (128*1024*1024) /* max stack size */ 129 1.15 eeh #endif 130 1.15 eeh #else 131 1.15 eeh /* 132 1.15 eeh * 32-bit limits: 133 1.15 eeh * 134 1.35 martin * We only have 4GB to play with. Limit data, and text 135 1.35 martin * each to half of that and set a reasonable stack limit. 136 1.15 eeh * 137 1.15 eeh */ 138 1.15 eeh #ifndef MAXTSIZ 139 1.35 martin #define MAXTSIZ (2UL*1024*1024*1024) /* max text size */ 140 1.1 eeh #endif 141 1.1 eeh #ifndef DFLDSIZ 142 1.14 mrg #define DFLDSIZ (128*1024*1024) /* initial data size limit */ 143 1.1 eeh #endif 144 1.1 eeh #ifndef MAXDSIZ 145 1.35 martin #define MAXDSIZ (2UL*1024*1024*1024) /* max data size */ 146 1.1 eeh #endif 147 1.1 eeh #ifndef DFLSSIZ 148 1.20 thorpej #define DFLSSIZ (2*1024*1024) /* initial stack size limit */ 149 1.1 eeh #endif 150 1.1 eeh #ifndef MAXSSIZ 151 1.35 martin #define MAXSSIZ (64*1024*1024) /* max stack size */ 152 1.15 eeh #endif 153 1.1 eeh #endif 154 1.27 fvdl 155 1.27 fvdl /* 156 1.35 martin * 32-bit emulation limits (same as sparc - we could go bigger) 157 1.27 fvdl */ 158 1.27 fvdl #ifndef DFLDSIZ32 159 1.35 martin #define DFLDSIZ32 (64*1024*1024) /* initial data size limit */ 160 1.27 fvdl #endif 161 1.27 fvdl #ifndef MAXDSIZ32 162 1.35 martin #define MAXDSIZ32 (512*1024*1024) /* max data size */ 163 1.27 fvdl #endif 164 1.27 fvdl #ifndef DFLSSIZ32 165 1.27 fvdl #define DFLSSIZ32 (2*1024*1024) /* initial stack size limit */ 166 1.27 fvdl #endif 167 1.27 fvdl #ifndef MAXSSIZ32 168 1.35 martin #define MAXSSIZ32 (32*1024*1024) /* max stack size */ 169 1.27 fvdl #endif 170 1.27 fvdl 171 1.1 eeh /* 172 1.1 eeh * Mach derived constants 173 1.1 eeh */ 174 1.1 eeh 175 1.1 eeh /* 176 1.11 mrg * User/kernel map constants. 177 1.1 eeh */ 178 1.4 eeh #define VM_MIN_ADDRESS ((vaddr_t)0) 179 1.43 hgutch #define VM_MAX_ADDRESS (((vaddr_t)(-1))&~PGOFSET) 180 1.43 hgutch #define VM_MAXUSER_ADDRESS VM_MAX_ADDRESS 181 1.16 eeh #define VM_MAXUSER_ADDRESS32 ((vaddr_t)(0x00000000ffffffffL&~PGOFSET)) 182 1.13 eeh 183 1.4 eeh #define VM_MIN_KERNEL_ADDRESS ((vaddr_t)KERNBASE) 184 1.33 martin #ifdef __arch64__ 185 1.33 martin #define VM_KERNEL_MEM_VA_START ((vaddr_t)0x100000000UL) 186 1.33 martin #define VM_MAX_KERNEL_ADDRESS ((vaddr_t)0x000007ffffffffffUL) 187 1.33 martin #else 188 1.7 eeh #define VM_MAX_KERNEL_ADDRESS ((vaddr_t)KERNEND) 189 1.33 martin #endif 190 1.1 eeh 191 1.2 mrg #define VM_PHYSSEG_MAX 32 /* up to 32 segments */ 192 1.1 eeh #define VM_PHYSSEG_STRAT VM_PSTRAT_BSEARCH 193 1.3 thorpej 194 1.3 thorpej #define VM_NFREELIST 1 195 1.3 thorpej #define VM_FREELIST_DEFAULT 0 196 1.17 thorpej 197 1.1 eeh #endif 198