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