177957Sbenno/*-
277957Sbenno * Copyright (C) 1995, 1996 Wolfgang Solfrank.
377957Sbenno * Copyright (C) 1995, 1996 TooLs GmbH.
477957Sbenno * All rights reserved.
577957Sbenno *
677957Sbenno * Redistribution and use in source and binary forms, with or without
777957Sbenno * modification, are permitted provided that the following conditions
877957Sbenno * are met:
977957Sbenno * 1. Redistributions of source code must retain the above copyright
1077957Sbenno *    notice, this list of conditions and the following disclaimer.
1177957Sbenno * 2. Redistributions in binary form must reproduce the above copyright
1277957Sbenno *    notice, this list of conditions and the following disclaimer in the
1377957Sbenno *    documentation and/or other materials provided with the distribution.
1477957Sbenno * 3. All advertising materials mentioning features or use of this software
1577957Sbenno *    must display the following acknowledgement:
1677957Sbenno *	This product includes software developed by TooLs GmbH.
1777957Sbenno * 4. The name of TooLs GmbH may not be used to endorse or promote products
1877957Sbenno *    derived from this software without specific prior written permission.
1977957Sbenno *
2077957Sbenno * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
2177957Sbenno * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
2277957Sbenno * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
2377957Sbenno * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2477957Sbenno * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
2577957Sbenno * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
2677957Sbenno * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
2777957Sbenno * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
2877957Sbenno * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
2977957Sbenno * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3077957Sbenno *
3177957Sbenno *	$NetBSD: vmparam.h,v 1.11 2000/02/11 19:25:16 thorpej Exp $
3277957Sbenno * $FreeBSD: releng/10.3/sys/powerpc/include/vmparam.h 266204 2014-05-16 01:30:30Z ian $
3377957Sbenno */
3477957Sbenno
3577957Sbenno#ifndef _MACHINE_VMPARAM_H_
3677957Sbenno#define	_MACHINE_VMPARAM_H_
3777957Sbenno
38217400Skib#define	USRSTACK	SHAREDPAGE
3977957Sbenno
4077957Sbenno#ifndef	MAXTSIZ
41200018Snwhitehorn#define	MAXTSIZ		(64*1024*1024)		/* max text size */
4277957Sbenno#endif
4377957Sbenno
4477957Sbenno#ifndef	DFLDSIZ
45200018Snwhitehorn#define	DFLDSIZ		(128*1024*1024)		/* default data size */
4677957Sbenno#endif
4777957Sbenno
4877957Sbenno#ifndef	MAXDSIZ
49200018Snwhitehorn#define	MAXDSIZ		(1*1024*1024*1024)	/* max data size */
5077957Sbenno#endif
5177957Sbenno
5277957Sbenno#ifndef	DFLSSIZ
53200018Snwhitehorn#define	DFLSSIZ		(8*1024*1024)		/* default stack size */
5477957Sbenno#endif
5577957Sbenno
5677957Sbenno#ifndef	MAXSSIZ
57200018Snwhitehorn#define	MAXSSIZ		(64*1024*1024)		/* max stack size */
5877957Sbenno#endif
5977957Sbenno
60228413Snwhitehorn#ifdef AIM
61228413Snwhitehorn#define	VM_MAXUSER_ADDRESS32	((vm_offset_t)0xfffff000)
62228413Snwhitehorn#else
63228413Snwhitehorn#define	VM_MAXUSER_ADDRESS32	((vm_offset_t)0x7ffff000)
64228413Snwhitehorn#endif
65228413Snwhitehorn
6677957Sbenno/*
6777957Sbenno * Would like to have MAX addresses = 0, but this doesn't (currently) work
6877957Sbenno */
69176770Sraj#if !defined(LOCORE)
70209975Snwhitehorn#ifdef __powerpc64__
71209975Snwhitehorn#define	VM_MIN_ADDRESS		(0x0000000000000000UL)
72228413Snwhitehorn#define	VM_MAXUSER_ADDRESS	(0xfffffffffffff000UL)
73209975Snwhitehorn#define	VM_MAX_ADDRESS		(0xffffffffffffffffUL)
74209975Snwhitehorn#else
7577957Sbenno#define	VM_MIN_ADDRESS		((vm_offset_t)0)
76228413Snwhitehorn#define	VM_MAXUSER_ADDRESS	VM_MAXUSER_ADDRESS32
77228413Snwhitehorn#define	VM_MAX_ADDRESS		((vm_offset_t)0xffffffff)
78228413Snwhitehorn#endif
79217400Skib#define	SHAREDPAGE		(VM_MAXUSER_ADDRESS - PAGE_SIZE)
80209975Snwhitehorn#else /* LOCORE */
81236141Sraj#if !defined(__powerpc64__) && defined(BOOKE)
82176770Sraj#define	VM_MIN_ADDRESS		0
83176770Sraj#define	VM_MAXUSER_ADDRESS	0x7ffff000
84209975Snwhitehorn#endif
85176770Sraj#endif /* LOCORE */
86176770Sraj
87228413Snwhitehorn#define	FREEBSD32_SHAREDPAGE	(VM_MAXUSER_ADDRESS32 - PAGE_SIZE)
88217400Skib#define	FREEBSD32_USRSTACK	FREEBSD32_SHAREDPAGE
89176770Sraj
90209975Snwhitehorn#ifdef AIM
91209975Snwhitehorn#define	KERNBASE		0x00100000UL	/* start of kernel virtual */
92176770Sraj
93209975Snwhitehorn#ifdef __powerpc64__
94209975Snwhitehorn#define	VM_MIN_KERNEL_ADDRESS		0xc000000000000000UL
95209975Snwhitehorn#define	VM_MAX_KERNEL_ADDRESS		0xc0000001c7ffffffUL
96209975Snwhitehorn#define	VM_MAX_SAFE_KERNEL_ADDRESS	VM_MAX_KERNEL_ADDRESS
97209975Snwhitehorn#else
98209975Snwhitehorn#define	VM_MIN_KERNEL_ADDRESS	((vm_offset_t)KERNEL_SR << ADDR_SR_SHFT)
99204128Snwhitehorn#define	VM_MAX_SAFE_KERNEL_ADDRESS (VM_MIN_KERNEL_ADDRESS + 2*SEGMENT_LENGTH -1)
100204128Snwhitehorn#define	VM_MAX_KERNEL_ADDRESS	(VM_MIN_KERNEL_ADDRESS + 3*SEGMENT_LENGTH - 1)
101209975Snwhitehorn#endif
10277957Sbenno
103176770Sraj/*
104176770Sraj * Use the direct-mapped BAT registers for UMA small allocs. This
105176770Sraj * takes pressure off the small amount of available KVA.
106176770Sraj */
107176770Sraj#define UMA_MD_SMALL_ALLOC
108125687Sgrehan
109209975Snwhitehorn#else /* Book-E */
110176770Sraj
111176770Sraj#define	KERNBASE		0xc0000000	/* start of kernel virtual */
112176770Sraj
113176770Sraj#define	VM_MIN_KERNEL_ADDRESS	KERNBASE
114191363Smarcel#define	VM_MAX_KERNEL_ADDRESS	0xf8000000
115265998Sian#define	VM_MAX_SAFE_KERNEL_ADDRESS	VM_MAX_KERNEL_ADDRESS
116176770Sraj
117176770Sraj#endif /* AIM/E500 */
118176770Sraj
119176770Sraj#if !defined(LOCORE)
12077957Sbennostruct pmap_physseg {
12177957Sbenno	struct pv_entry *pvent;
12277957Sbenno	char *attrs;
12377957Sbenno};
124176770Sraj#endif
12577957Sbenno
12677957Sbenno#define	VM_PHYSSEG_MAX		16	/* 1? */
12777957Sbenno
128169291Salc/*
129216589Snwhitehorn * The physical address space is densely populated on 32-bit systems,
130216589Snwhitehorn * but may not be on 64-bit ones.
131169291Salc */
132216589Snwhitehorn#ifdef __powerpc64__
133216589Snwhitehorn#define	VM_PHYSSEG_SPARSE
134216589Snwhitehorn#else
135169291Salc#define	VM_PHYSSEG_DENSE
136216589Snwhitehorn#endif
137169291Salc
138170816Salc/*
139172317Salc * Create three free page pools: VM_FREEPOOL_DEFAULT is the default pool
140170816Salc * from which physical pages are allocated and VM_FREEPOOL_DIRECT is
141170816Salc * the pool from which physical pages for small UMA objects are
142170816Salc * allocated.
143170816Salc */
144172317Salc#define	VM_NFREEPOOL		3
145172317Salc#define	VM_FREEPOOL_CACHE	2
146170816Salc#define	VM_FREEPOOL_DEFAULT	0
147170816Salc#define	VM_FREEPOOL_DIRECT	1
148170816Salc
149170816Salc/*
150170816Salc * Create one free page list.
151170816Salc */
15277957Sbenno#define	VM_NFREELIST		1
15377957Sbenno#define	VM_FREELIST_DEFAULT	0
15477957Sbenno
155170816Salc/*
156170816Salc * The largest allocation size is 4MB.
157170816Salc */
158170816Salc#define	VM_NFREEORDER		11
159170816Salc
160174938Salc/*
161174938Salc * Disable superpage reservations.
162174938Salc */
163174938Salc#ifndef	VM_NRESERVLEVEL
164174938Salc#define	VM_NRESERVLEVEL		0
165174938Salc#endif
166174938Salc
16777957Sbenno#ifndef VM_INITIAL_PAGEIN
16877957Sbenno#define	VM_INITIAL_PAGEIN	16
16977957Sbenno#endif
17077957Sbenno
17177957Sbenno#ifndef SGROWSIZ
17277957Sbenno#define	SGROWSIZ	(128UL*1024)		/* amount to grow stack */
17377957Sbenno#endif
17477957Sbenno
175266204Sian/*
176266204Sian * How many physical pages per kmem arena virtual page.
177266204Sian */
178266204Sian#ifndef VM_KMEM_SIZE_SCALE
179266204Sian#define	VM_KMEM_SIZE_SCALE	(3)
18077957Sbenno#endif
18177957Sbenno
182265998Sian/*
183266204Sian * Optional floor (in bytes) on the size of the kmem arena.
184265998Sian */
185266204Sian#ifndef VM_KMEM_SIZE_MIN
186266204Sian#define	VM_KMEM_SIZE_MIN	(12 * 1024 * 1024)
187209975Snwhitehorn#endif
188209975Snwhitehorn
189265998Sian/*
190266204Sian * Optional ceiling (in bytes) on the size of the kmem arena: 40% of the
191266204Sian * usable KVA space.
192265998Sian */
193209975Snwhitehorn#ifndef VM_KMEM_SIZE_MAX
194265998Sian#define VM_KMEM_SIZE_MAX	((VM_MAX_SAFE_KERNEL_ADDRESS - \
195265998Sian    VM_MIN_KERNEL_ADDRESS + 1) * 2 / 5)
196209975Snwhitehorn#endif
197209975Snwhitehorn
198221855Smdf#define	ZERO_REGION_SIZE	(64 * 1024)	/* 64KB */
199221855Smdf
20077957Sbenno#endif /* _MACHINE_VMPARAM_H_ */
201