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