vmparam.h revision 210550
123353Sdfr/* $NetBSD: vmparam.h,v 1.26 2003/08/07 16:27:47 agc Exp $ */ 223353Sdfr 323353Sdfr/*- 423353Sdfr * Copyright (c) 1988 The Regents of the University of California. 523353Sdfr * All rights reserved. 623353Sdfr * 723353Sdfr * Redistribution and use in source and binary forms, with or without 823353Sdfr * modification, are permitted provided that the following conditions 923353Sdfr * are met: 1023353Sdfr * 1. Redistributions of source code must retain the above copyright 1123353Sdfr * notice, this list of conditions and the following disclaimer. 1223353Sdfr * 2. Redistributions in binary form must reproduce the above copyright 1323353Sdfr * notice, this list of conditions and the following disclaimer in the 1423353Sdfr * documentation and/or other materials provided with the distribution. 1523353Sdfr * 3. Neither the name of the University nor the names of its contributors 1623353Sdfr * may be used to endorse or promote products derived from this software 1723353Sdfr * without specific prior written permission. 1823353Sdfr * 1923353Sdfr * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2023353Sdfr * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2123353Sdfr * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2223353Sdfr * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2323353Sdfr * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2423353Sdfr * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2523353Sdfr * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2623353Sdfr * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2723353Sdfr * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2823353Sdfr * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2950476Speter * SUCH DAMAGE. 3023353Sdfr * 3123353Sdfr * $FreeBSD: head/sys/arm/include/vmparam.h 210550 2010-07-27 20:33:50Z jhb $ 32206622Suqs */ 3323353Sdfr 3423353Sdfr#ifndef _MACHINE_VMPARAM_H_ 3523353Sdfr#define _MACHINE_VMPARAM_H_ 3623353Sdfr 3723353Sdfr 3884306Sru/*#include <arm/arm32/vmparam.h> 3984306Sru*/ 4023353Sdfr/* 4186691Sarr * Address space constants 4223353Sdfr */ 4323367Smpp 4423353Sdfr/* 4523353Sdfr * The line between user space and kernel space 4623353Sdfr * Mappings >= KERNEL_BASE are constant across all processes 47115440Shmp */ 48140931Sru#define KERNBASE 0xc0000000 49115440Shmp 50140931Sru/* 51146567Shmp * max number of non-contig chunks of physical RAM you can have 52140931Sru */ 53115440Shmp 54140931Sru#define VM_PHYSSEG_MAX 32 55115440Shmp 56140931Sru/* 57115440Shmp * The physical address space is densely populated. 58140931Sru */ 5923353Sdfr#define VM_PHYSSEG_DENSE 6023353Sdfr 61107788Sru/* 6223353Sdfr * Create three free page pools: VM_FREEPOOL_DEFAULT is the default pool 6323353Sdfr * from which physical pages are allocated and VM_FREEPOOL_DIRECT is 6423353Sdfr * the pool from which physical pages for small UMA objects are 6523353Sdfr * allocated. 66104006Sphk */ 67107383Sru#define VM_NFREEPOOL 3 68107383Sru#define VM_FREEPOOL_CACHE 2 69107383Sru#define VM_FREEPOOL_DEFAULT 0 7023353Sdfr#define VM_FREEPOOL_DIRECT 1 7123353Sdfr 7223353Sdfr/* 73147647Shmp * we support 2 free lists: 7434504Scharnier * 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#define MAXSLP 20 150 151#ifdef ARM_USE_SMALL_ALLOC 152#define UMA_MD_SMALL_ALLOC 153#endif /* ARM_USE_SMALL_ALLOC */ 154#endif /* _MACHINE_VMPARAM_H_ */ 155