vmparam.h revision 210550
1230557Sjimharris/*-
2230557Sjimharris * Copyright (C) 1995, 1996 Wolfgang Solfrank.
3230557Sjimharris * Copyright (C) 1995, 1996 TooLs GmbH.
4230557Sjimharris * All rights reserved.
5230557Sjimharris *
6230557Sjimharris * Redistribution and use in source and binary forms, with or without
7230557Sjimharris * modification, are permitted provided that the following conditions
8230557Sjimharris * are met:
9230557Sjimharris * 1. Redistributions of source code must retain the above copyright
10230557Sjimharris *    notice, this list of conditions and the following disclaimer.
11230557Sjimharris * 2. Redistributions in binary form must reproduce the above copyright
12230557Sjimharris *    notice, this list of conditions and the following disclaimer in the
13230557Sjimharris *    documentation and/or other materials provided with the distribution.
14230557Sjimharris * 3. All advertising materials mentioning features or use of this software
15230557Sjimharris *    must display the following acknowledgement:
16230557Sjimharris *	This product includes software developed by TooLs GmbH.
17230557Sjimharris * 4. The name of TooLs GmbH may not be used to endorse or promote products
18230557Sjimharris *    derived from this software without specific prior written permission.
19230557Sjimharris *
20230557Sjimharris * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
21230557Sjimharris * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
22230557Sjimharris * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
23230557Sjimharris * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24230557Sjimharris * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25230557Sjimharris * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26230557Sjimharris * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27230557Sjimharris * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28230557Sjimharris * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29230557Sjimharris * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30230557Sjimharris *
31230557Sjimharris *	$NetBSD: vmparam.h,v 1.11 2000/02/11 19:25:16 thorpej Exp $
32230557Sjimharris * $FreeBSD: head/sys/powerpc/include/vmparam.h 210550 2010-07-27 20:33:50Z jhb $
33230557Sjimharris */
34230557Sjimharris
35230557Sjimharris#ifndef _MACHINE_VMPARAM_H_
36230557Sjimharris#define	_MACHINE_VMPARAM_H_
37230557Sjimharris
38230557Sjimharris#define	USRSTACK	VM_MAXUSER_ADDRESS
39230557Sjimharris
40230557Sjimharris#ifndef	MAXTSIZ
41230557Sjimharris#define	MAXTSIZ		(64*1024*1024)		/* max text size */
42230557Sjimharris#endif
43230557Sjimharris
44230557Sjimharris#ifndef	DFLDSIZ
45230557Sjimharris#define	DFLDSIZ		(128*1024*1024)		/* default data size */
46230557Sjimharris#endif
47230557Sjimharris
48230557Sjimharris#ifndef	MAXDSIZ
49230557Sjimharris#define	MAXDSIZ		(1*1024*1024*1024)	/* max data size */
50230557Sjimharris#endif
51230557Sjimharris
52230557Sjimharris#ifndef	DFLSSIZ
53230557Sjimharris#define	DFLSSIZ		(8*1024*1024)		/* default stack size */
54230557Sjimharris#endif
55230557Sjimharris
56230557Sjimharris#ifndef	MAXSSIZ
57230557Sjimharris#define	MAXSSIZ		(64*1024*1024)		/* max stack size */
58230557Sjimharris#endif
59230557Sjimharris
60230557Sjimharris/*
61230557Sjimharris * The time for a process to be blocked before being very swappable.
62230557Sjimharris * This is a number of seconds which the system takes as being a non-trivial
63230557Sjimharris * amount of real time.  You probably shouldn't change this;
64230557Sjimharris * it is used in subtle ways (fractions and multiples of it are, that is, like
65230557Sjimharris * half of a ``long time'', almost a long time, etc.)
66230557Sjimharris * It is related to human patience and other factors which don't really
67230557Sjimharris * change over time.
68230557Sjimharris */
69230557Sjimharris#define	MAXSLP 		20
70230557Sjimharris
71230557Sjimharris/*
72230557Sjimharris * Would like to have MAX addresses = 0, but this doesn't (currently) work
73230557Sjimharris */
74230557Sjimharris#if !defined(LOCORE)
75230557Sjimharris#ifdef __powerpc64__
76230557Sjimharris#define	VM_MIN_ADDRESS		(0x0000000000000000UL)
77230557Sjimharris#define	VM_MAXUSER_ADDRESS	(0x7ffffffffffff000UL)
78230557Sjimharris#define	VM_MAX_ADDRESS		(0xffffffffffffffffUL)
79230557Sjimharris#else
80230557Sjimharris#define	VM_MIN_ADDRESS		((vm_offset_t)0)
81230557Sjimharris#define	VM_MAXUSER_ADDRESS	((vm_offset_t)0x7ffff000)
82230557Sjimharris#define	VM_MAX_ADDRESS		VM_MAXUSER_ADDRESS
83230557Sjimharris#endif
84230557Sjimharris#else /* LOCORE */
85230557Sjimharris#ifndef __powerpc64__
86230557Sjimharris#define	VM_MIN_ADDRESS		0
87230557Sjimharris#define	VM_MAXUSER_ADDRESS	0x7ffff000
88230557Sjimharris#endif
89230557Sjimharris#endif /* LOCORE */
90230557Sjimharris
91230557Sjimharris#define	FREEBSD32_USRSTACK	0x7ffff000
92230557Sjimharris
93230557Sjimharris
94230557Sjimharris#ifdef AIM
95230557Sjimharris#define	KERNBASE		0x00100000UL	/* start of kernel virtual */
96230557Sjimharris
97230557Sjimharris#ifdef __powerpc64__
98230557Sjimharris#define	VM_MIN_KERNEL_ADDRESS		0xc000000000000000UL
99230557Sjimharris#define	VM_MAX_KERNEL_ADDRESS		0xc0000001c7ffffffUL
100230557Sjimharris#define	VM_MAX_SAFE_KERNEL_ADDRESS	VM_MAX_KERNEL_ADDRESS
101230557Sjimharris#else
102230557Sjimharris#define	VM_MIN_KERNEL_ADDRESS	((vm_offset_t)KERNEL_SR << ADDR_SR_SHFT)
103230557Sjimharris#define	VM_MAX_SAFE_KERNEL_ADDRESS (VM_MIN_KERNEL_ADDRESS + 2*SEGMENT_LENGTH -1)
104230557Sjimharris#define	VM_MAX_KERNEL_ADDRESS	(VM_MIN_KERNEL_ADDRESS + 3*SEGMENT_LENGTH - 1)
105230557Sjimharris#endif
106230557Sjimharris
107230557Sjimharris/*
108230557Sjimharris * Use the direct-mapped BAT registers for UMA small allocs. This
109230557Sjimharris * takes pressure off the small amount of available KVA.
110230557Sjimharris */
111230557Sjimharris#define UMA_MD_SMALL_ALLOC
112230557Sjimharris
113230557Sjimharris#else /* Book-E */
114230557Sjimharris
115230557Sjimharris/*
116230557Sjimharris * Kernel CCSRBAR location. We make this the reset location.
117230557Sjimharris */
118230557Sjimharris#define	CCSRBAR_VA		0xfef00000
119230557Sjimharris#define	CCSRBAR_SIZE		0x00100000
120230557Sjimharris
121230557Sjimharris#define	KERNBASE		0xc0000000	/* start of kernel virtual */
122230557Sjimharris
123230557Sjimharris#define	VM_MIN_KERNEL_ADDRESS	KERNBASE
124230557Sjimharris#define	VM_MAX_KERNEL_ADDRESS	0xf8000000
125230557Sjimharris
126230557Sjimharris#endif /* AIM/E500 */
127230557Sjimharris
128230557Sjimharris/* XXX max. amount of KVM to be used by buffers. */
129230557Sjimharris#ifndef VM_MAX_KERNEL_BUF
130230557Sjimharris#define	VM_MAX_KERNEL_BUF	(SEGMENT_LENGTH * 7 / 10)
131230557Sjimharris#endif
132230557Sjimharris
133230557Sjimharris#if !defined(LOCORE)
134230557Sjimharrisstruct pmap_physseg {
135230557Sjimharris	struct pv_entry *pvent;
136230557Sjimharris	char *attrs;
137230557Sjimharris};
138230557Sjimharris#endif
139230557Sjimharris
140230557Sjimharris#define	VM_PHYSSEG_MAX		16	/* 1? */
141230557Sjimharris
142230557Sjimharris/*
143230557Sjimharris * The physical address space is densely populated.
144230557Sjimharris */
145230557Sjimharris#define	VM_PHYSSEG_DENSE
146230557Sjimharris
147230557Sjimharris/*
148230557Sjimharris * Create three free page pools: VM_FREEPOOL_DEFAULT is the default pool
149230557Sjimharris * from which physical pages are allocated and VM_FREEPOOL_DIRECT is
150230557Sjimharris * the pool from which physical pages for small UMA objects are
151230557Sjimharris * allocated.
152230557Sjimharris */
153230557Sjimharris#define	VM_NFREEPOOL		3
154230557Sjimharris#define	VM_FREEPOOL_CACHE	2
155230557Sjimharris#define	VM_FREEPOOL_DEFAULT	0
156230557Sjimharris#define	VM_FREEPOOL_DIRECT	1
157230557Sjimharris
158230557Sjimharris/*
159230557Sjimharris * Create one free page list.
160230557Sjimharris */
161230557Sjimharris#define	VM_NFREELIST		1
162230557Sjimharris#define	VM_FREELIST_DEFAULT	0
163230557Sjimharris
164230557Sjimharris/*
165230557Sjimharris * The largest allocation size is 4MB.
166230557Sjimharris */
167230557Sjimharris#define	VM_NFREEORDER		11
168230557Sjimharris
169230557Sjimharris/*
170230557Sjimharris * Only one memory domain.
171230557Sjimharris */
172230557Sjimharris#ifndef VM_NDOMAIN
173230557Sjimharris#define	VM_NDOMAIN		1
174230557Sjimharris#endif
175230557Sjimharris
176230557Sjimharris/*
177230557Sjimharris * Disable superpage reservations.
178230557Sjimharris */
179230557Sjimharris#ifndef	VM_NRESERVLEVEL
180230557Sjimharris#define	VM_NRESERVLEVEL		0
181230557Sjimharris#endif
182230557Sjimharris
183230557Sjimharris#ifndef VM_INITIAL_PAGEIN
184230557Sjimharris#define	VM_INITIAL_PAGEIN	16
185230557Sjimharris#endif
186230557Sjimharris
187230557Sjimharris#ifndef SGROWSIZ
188230557Sjimharris#define	SGROWSIZ	(128UL*1024)		/* amount to grow stack */
189230557Sjimharris#endif
190230557Sjimharris
191230557Sjimharris#ifndef VM_KMEM_SIZE
192230557Sjimharris#define	VM_KMEM_SIZE		(12 * 1024 * 1024)
193230557Sjimharris#endif
194230557Sjimharris
195230792Sjimharris#ifdef __powerpc64__
196230792Sjimharris#ifndef VM_KMEM_SIZE_SCALE
197230557Sjimharris#define VM_KMEM_SIZE_SCALE      (3)
198230557Sjimharris#endif
199230557Sjimharris
200230557Sjimharris#ifndef VM_KMEM_SIZE_MAX
201230557Sjimharris#define VM_KMEM_SIZE_MAX        0x1c0000000  /* 7 GB */
202230557Sjimharris#endif
203230557Sjimharris#endif
204230557Sjimharris
205230557Sjimharris#endif /* _MACHINE_VMPARAM_H_ */
206230557Sjimharris