vmparam.h revision 217192
1155835Sume/* $NetBSD: vmparam.h,v 1.26 2003/08/07 16:27:47 agc Exp $ */ 2155835Sume 3155835Sume/*- 4155835Sume * Copyright (c) 1988 The Regents of the University of California. 5155835Sume * All rights reserved. 6155835Sume * 7155835Sume * Redistribution and use in source and binary forms, with or without 8155835Sume * modification, are permitted provided that the following conditions 9155835Sume * are met: 10155835Sume * 1. Redistributions of source code must retain the above copyright 11155835Sume * notice, this list of conditions and the following disclaimer. 12155835Sume * 2. Redistributions in binary form must reproduce the above copyright 13155835Sume * notice, this list of conditions and the following disclaimer in the 14155835Sume * documentation and/or other materials provided with the distribution. 15155835Sume * 3. Neither the name of the University nor the names of its contributors 16155835Sume * may be used to endorse or promote products derived from this software 17155835Sume * without specific prior written permission. 18155835Sume * 19155835Sume * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 20155835Sume * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21155835Sume * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22155835Sume * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 23155835Sume * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24155835Sume * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25155835Sume * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26155835Sume * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27155835Sume * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28155835Sume * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29155835Sume * SUCH DAMAGE. 30155835Sume * 31155835Sume * $FreeBSD: head/sys/arm/include/vmparam.h 217192 2011-01-09 12:50:44Z kib $ 32155835Sume */ 33282275Stijl 34155835Sume#ifndef _MACHINE_VMPARAM_H_ 35155835Sume#define _MACHINE_VMPARAM_H_ 36155835Sume 37155835Sume 38155835Sume/*#include <arm/arm32/vmparam.h> 39155835Sume*/ 40155835Sume/* 41155835Sume * Address space constants 42155835Sume */ 43155835Sume 44155835Sume/* 45 * The line between user space and kernel space 46 * Mappings >= KERNEL_BASE are constant across all processes 47 */ 48#define KERNBASE 0xc0000000 49 50/* 51 * max number of non-contig chunks of physical RAM you can have 52 */ 53 54#define VM_PHYSSEG_MAX 32 55 56/* 57 * The physical address space is densely populated. 58 */ 59#define VM_PHYSSEG_DENSE 60 61/* 62 * Create three free page pools: VM_FREEPOOL_DEFAULT is the default pool 63 * from which physical pages are allocated and VM_FREEPOOL_DIRECT is 64 * the pool from which physical pages for small UMA objects are 65 * allocated. 66 */ 67#define VM_NFREEPOOL 3 68#define VM_FREEPOOL_CACHE 2 69#define VM_FREEPOOL_DEFAULT 0 70#define VM_FREEPOOL_DIRECT 1 71 72/* 73 * we support 2 free lists: 74 * 75 * - DEFAULT for all systems 76 * - ISADMA for the ISA DMA range on Sharks only 77 */ 78 79#define VM_NFREELIST 2 80#define VM_FREELIST_DEFAULT 0 81#define VM_FREELIST_ISADMA 1 82 83/* 84 * The largest allocation size is 1MB. 85 */ 86#define VM_NFREEORDER 9 87 88/* 89 * Only one memory domain. 90 */ 91#ifndef VM_NDOMAIN 92#define VM_NDOMAIN 1 93#endif 94 95/* 96 * Disable superpage reservations. 97 */ 98#ifndef VM_NRESERVLEVEL 99#define VM_NRESERVLEVEL 0 100#endif 101 102#define UPT_MAX_ADDRESS VADDR(UPTPTDI + 3, 0) 103#define UPT_MIN_ADDRESS VADDR(UPTPTDI, 0) 104 105#define VM_MIN_ADDRESS (0x00001000) 106#ifdef ARM_USE_SMALL_ALLOC 107/* 108 * ARM_KERN_DIRECTMAP is used to make sure there's enough space between 109 * VM_MAXUSER_ADDRESS and KERNBASE to map the whole memory. 110 * It has to be a compile-time constant, even if arm_init_smallalloc(), 111 * which will do the mapping, gets the real amount of memory at runtime, 112 * because VM_MAXUSER_ADDRESS is a constant. 113 */ 114#ifndef ARM_KERN_DIRECTMAP 115#define ARM_KERN_DIRECTMAP 512 * 1024 * 1024 /* 512 MB */ 116#endif 117#define VM_MAXUSER_ADDRESS KERNBASE - ARM_KERN_DIRECTMAP 118#else /* ARM_USE_SMALL_ALLOC */ 119#define VM_MAXUSER_ADDRESS KERNBASE 120#endif /* ARM_USE_SMALL_ALLOC */ 121#define VM_MAX_ADDRESS VM_MAXUSER_ADDRESS 122 123#define USRSTACK VM_MAXUSER_ADDRESS 124 125/* initial pagein size of beginning of executable file */ 126#ifndef VM_INITIAL_PAGEIN 127#define VM_INITIAL_PAGEIN 16 128#endif 129 130#ifndef VM_MIN_KERNEL_ADDRESS 131#define VM_MIN_KERNEL_ADDRESS KERNBASE 132#endif 133 134#define VM_MAX_KERNEL_ADDRESS 0xffffffff 135/* 136 * Virtual size (bytes) for various kernel submaps. 137 */ 138 139#ifndef VM_KMEM_SIZE 140#define VM_KMEM_SIZE (12*1024*1024) 141#endif 142 143#define MAXTSIZ (16*1024*1024) 144#define DFLDSIZ (128*1024*1024) 145#define MAXDSIZ (512*1024*1024) 146#define DFLSSIZ (2*1024*1024) 147#define MAXSSIZ (8*1024*1024) 148#define SGROWSIZ (128*1024) 149 150#ifdef ARM_USE_SMALL_ALLOC 151#define UMA_MD_SMALL_ALLOC 152#endif /* ARM_USE_SMALL_ALLOC */ 153#endif /* _MACHINE_VMPARAM_H_ */ 154