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