xref: /freebsd/sys/i386/include/vmparam.h (revision 6ccf265bb057f44135aeee6f322208ecc5ebb7c3)
15b81b6b3SRodney W. Grimes /*-
25b81b6b3SRodney W. Grimes  * Copyright (c) 1990 The Regents of the University of California.
35b81b6b3SRodney W. Grimes  * All rights reserved.
47f8cb368SDavid Greenman  * Copyright (c) 1994 John S. Dyson
57f8cb368SDavid Greenman  * All rights reserved.
65b81b6b3SRodney W. Grimes  *
75b81b6b3SRodney W. Grimes  * This code is derived from software contributed to Berkeley by
85b81b6b3SRodney W. Grimes  * William Jolitz.
95b81b6b3SRodney W. Grimes  *
105b81b6b3SRodney W. Grimes  * Redistribution and use in source and binary forms, with or without
115b81b6b3SRodney W. Grimes  * modification, are permitted provided that the following conditions
125b81b6b3SRodney W. Grimes  * are met:
135b81b6b3SRodney W. Grimes  * 1. Redistributions of source code must retain the above copyright
145b81b6b3SRodney W. Grimes  *    notice, this list of conditions and the following disclaimer.
155b81b6b3SRodney W. Grimes  * 2. Redistributions in binary form must reproduce the above copyright
165b81b6b3SRodney W. Grimes  *    notice, this list of conditions and the following disclaimer in the
175b81b6b3SRodney W. Grimes  *    documentation and/or other materials provided with the distribution.
185b81b6b3SRodney W. Grimes  * 3. All advertising materials mentioning features or use of this software
195b81b6b3SRodney W. Grimes  *    must display the following acknowledgement:
205b81b6b3SRodney W. Grimes  *	This product includes software developed by the University of
215b81b6b3SRodney W. Grimes  *	California, Berkeley and its contributors.
225b81b6b3SRodney W. Grimes  * 4. Neither the name of the University nor the names of its contributors
235b81b6b3SRodney W. Grimes  *    may be used to endorse or promote products derived from this software
245b81b6b3SRodney W. Grimes  *    without specific prior written permission.
255b81b6b3SRodney W. Grimes  *
265b81b6b3SRodney W. Grimes  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
275b81b6b3SRodney W. Grimes  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
285b81b6b3SRodney W. Grimes  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
295b81b6b3SRodney W. Grimes  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
305b81b6b3SRodney W. Grimes  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
315b81b6b3SRodney W. Grimes  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
325b81b6b3SRodney W. Grimes  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
335b81b6b3SRodney W. Grimes  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
345b81b6b3SRodney W. Grimes  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
355b81b6b3SRodney W. Grimes  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
365b81b6b3SRodney W. Grimes  * SUCH DAMAGE.
375b81b6b3SRodney W. Grimes  *
38d42d25c4SRodney W. Grimes  *	from: @(#)vmparam.h	5.9 (Berkeley) 5/12/91
39c3aac50fSPeter Wemm  * $FreeBSD$
405b81b6b3SRodney W. Grimes  */
415b81b6b3SRodney W. Grimes 
425b81b6b3SRodney W. Grimes 
436e393973SGarrett Wollman #ifndef _MACHINE_VMPARAM_H_
446e393973SGarrett Wollman #define _MACHINE_VMPARAM_H_ 1
456e393973SGarrett Wollman 
465b81b6b3SRodney W. Grimes /*
475b81b6b3SRodney W. Grimes  * Machine dependent constants for 386.
485b81b6b3SRodney W. Grimes  */
495b81b6b3SRodney W. Grimes 
50d0aea04fSJohn Dyson #define VM_PROT_READ_IS_EXEC	/* if you can read -- then you can exec */
51d0aea04fSJohn Dyson 
525b81b6b3SRodney W. Grimes /*
535b81b6b3SRodney W. Grimes  * Virtual memory related constants, all in bytes
545b81b6b3SRodney W. Grimes  */
55f4fabec6SDavid Greenman #define	MAXTSIZ		(128UL*1024*1024)	/* max text size */
565b81b6b3SRodney W. Grimes #ifndef DFLDSIZ
57f4fabec6SDavid Greenman #define	DFLDSIZ		(128UL*1024*1024)	/* initial data size limit */
585b81b6b3SRodney W. Grimes #endif
595b81b6b3SRodney W. Grimes #ifndef MAXDSIZ
607416845fSJordan K. Hubbard #define	MAXDSIZ		(512UL*1024*1024)	/* max data size */
615b81b6b3SRodney W. Grimes #endif
625b81b6b3SRodney W. Grimes #ifndef	DFLSSIZ
6329360eb0SDavid Greenman #define	DFLSSIZ		(8UL*1024*1024)		/* initial stack size limit */
645b81b6b3SRodney W. Grimes #endif
655b81b6b3SRodney W. Grimes #ifndef	MAXSSIZ
66e10a6186SDavid Greenman #define	MAXSSIZ		(64UL*1024*1024)	/* max stack size */
675b81b6b3SRodney W. Grimes #endif
6829360eb0SDavid Greenman #ifndef SGROWSIZ
6929360eb0SDavid Greenman #define SGROWSIZ	(128UL*1024)		/* amount to grow stack */
7029360eb0SDavid Greenman #endif
715b81b6b3SRodney W. Grimes 
72e911eafcSPoul-Henning Kamp #define USRTEXT		(1*PAGE_SIZE)		/* base of user text XXX bogus */
73cde72574SDavid Greenman 
745b81b6b3SRodney W. Grimes /*
755b81b6b3SRodney W. Grimes  * The time for a process to be blocked before being very swappable.
765b81b6b3SRodney W. Grimes  * This is a number of seconds which the system takes as being a non-trivial
775b81b6b3SRodney W. Grimes  * amount of real time.  You probably shouldn't change this;
785b81b6b3SRodney W. Grimes  * it is used in subtle ways (fractions and multiples of it are, that is, like
795b81b6b3SRodney W. Grimes  * half of a ``long time'', almost a long time, etc.)
805b81b6b3SRodney W. Grimes  * It is related to human patience and other factors which don't really
815b81b6b3SRodney W. Grimes  * change over time.
825b81b6b3SRodney W. Grimes  */
835b81b6b3SRodney W. Grimes #define	MAXSLP 		20
845b81b6b3SRodney W. Grimes 
8568c1eb12SPoul-Henning Kamp 
865b81b6b3SRodney W. Grimes /*
876ccf265bSPeter Wemm  * Kernel physical load address.
886ccf265bSPeter Wemm  */
896ccf265bSPeter Wemm #ifndef KERNLOAD
906ccf265bSPeter Wemm #define	KERNLOAD		(1 << PDRSHIFT)
916ccf265bSPeter Wemm #endif
926ccf265bSPeter Wemm 
936ccf265bSPeter Wemm /*
9468c1eb12SPoul-Henning Kamp  * Virtual addresses of things.  Derived from the page directory and
9568c1eb12SPoul-Henning Kamp  * page table indexes from pmap.h for precision.
9668c1eb12SPoul-Henning Kamp  * Because of the page that is both a PD and PT, it looks a little
9768c1eb12SPoul-Henning Kamp  * messy at times, but hey, we'll do anything to save a page :-)
985b81b6b3SRodney W. Grimes  */
995b81b6b3SRodney W. Grimes 
10046ea68ddSJake Burkholder #define VM_MAX_KERNEL_ADDRESS	VADDR(KPTDI+NKPDE-1, NPTEPG-1)
10168c1eb12SPoul-Henning Kamp #define VM_MIN_KERNEL_ADDRESS	VADDR(PTDPTDI, PTDPTDI)
1027f8cb368SDavid Greenman 
10368c1eb12SPoul-Henning Kamp #define	KERNBASE		VADDR(KPTDI, 0)
10468c1eb12SPoul-Henning Kamp 
10568c1eb12SPoul-Henning Kamp #define UPT_MAX_ADDRESS		VADDR(PTDPTDI, PTDPTDI)
10668c1eb12SPoul-Henning Kamp #define UPT_MIN_ADDRESS		VADDR(PTDPTDI, 0)
10768c1eb12SPoul-Henning Kamp 
1085cd612b2SJake Burkholder #define VM_MAXUSER_ADDRESS	VADDR(PTDPTDI, 0)
10968c1eb12SPoul-Henning Kamp 
1107f8cb368SDavid Greenman #define USRSTACK		VM_MAXUSER_ADDRESS
11168c1eb12SPoul-Henning Kamp 
11268c1eb12SPoul-Henning Kamp #define VM_MAX_ADDRESS		VADDR(PTDPTDI, PTDPTDI)
11368c1eb12SPoul-Henning Kamp #define VM_MIN_ADDRESS		((vm_offset_t)0)
1145b81b6b3SRodney W. Grimes 
1155b81b6b3SRodney W. Grimes /* virtual sizes (bytes) for various kernel submaps */
1167bcc0f3dSTor Egge #ifndef VM_KMEM_SIZE
117d9bed5beSJohn Dyson #define VM_KMEM_SIZE		(12 * 1024 * 1024)
118d9bed5beSJohn Dyson #endif
119d9bed5beSJohn Dyson 
120d9bed5beSJohn Dyson /*
121d9bed5beSJohn Dyson  * How many physical pages per KVA page allocated.
122d9bed5beSJohn Dyson  * min(max(VM_KMEM_SIZE, Physical memory/VM_KMEM_SIZE_SCALE), VM_KMEM_SIZE_MAX)
123d9bed5beSJohn Dyson  * is the total KVA space allocated for kmem_map.
124d9bed5beSJohn Dyson  */
125d9bed5beSJohn Dyson #ifndef VM_KMEM_SIZE_SCALE
126d9bed5beSJohn Dyson #define	VM_KMEM_SIZE_SCALE	(3)
127d9bed5beSJohn Dyson #endif
128d9bed5beSJohn Dyson 
129d9bed5beSJohn Dyson /*
130d9bed5beSJohn Dyson  * Ceiling on amount of kmem_map kva space.
131d9bed5beSJohn Dyson  */
132d9bed5beSJohn Dyson #ifndef VM_KMEM_SIZE_MAX
1336704748cSDavid Greenman #define	VM_KMEM_SIZE_MAX	(200 * 1024 * 1024)
1347bcc0f3dSTor Egge #endif
1355b81b6b3SRodney W. Grimes 
13695461b45SJohn Dyson /* initial pagein size of beginning of executable file */
13795461b45SJohn Dyson #ifndef VM_INITIAL_PAGEIN
13895461b45SJohn Dyson #define	VM_INITIAL_PAGEIN	16
13995461b45SJohn Dyson #endif
14095461b45SJohn Dyson 
1416e393973SGarrett Wollman #endif /* _MACHINE_VMPARAM_H_ */
142