param.h revision 192331
1273331Sbryanv/*- 2273331Sbryanv * Copyright (c) 1990 The Regents of the University of California. 3273331Sbryanv * All rights reserved. 4273331Sbryanv * 5273331Sbryanv * This code is derived from software contributed to Berkeley by 6273331Sbryanv * William Jolitz. 7273331Sbryanv * 8273331Sbryanv * Redistribution and use in source and binary forms, with or without 9273331Sbryanv * modification, are permitted provided that the following conditions 10273331Sbryanv * are met: 11273331Sbryanv * 1. Redistributions of source code must retain the above copyright 12273331Sbryanv * notice, this list of conditions and the following disclaimer. 13273331Sbryanv * 2. Redistributions in binary form must reproduce the above copyright 14273331Sbryanv * notice, this list of conditions and the following disclaimer in the 15273331Sbryanv * documentation and/or other materials provided with the distribution. 16273331Sbryanv * 4. Neither the name of the University nor the names of its contributors 17273331Sbryanv * may be used to endorse or promote products derived from this software 18273331Sbryanv * without specific prior written permission. 19273331Sbryanv * 20273331Sbryanv * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21273331Sbryanv * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22273331Sbryanv * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23273331Sbryanv * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24273331Sbryanv * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25273331Sbryanv * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26273331Sbryanv * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27273331Sbryanv * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28273331Sbryanv * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29273331Sbryanv * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30273331Sbryanv * SUCH DAMAGE. 31273331Sbryanv * 32273331Sbryanv * from: @(#)param.h 5.8 (Berkeley) 6/28/91 33273331Sbryanv * $FreeBSD: head/sys/i386/include/param.h 192331 2009-05-18 19:33:59Z jhb $ 34273331Sbryanv */ 35273331Sbryanv 36273331Sbryanv/* 37273331Sbryanv * Machine dependent constants for Intel 386. 38273331Sbryanv */ 39273331Sbryanv 40273331Sbryanv/* 41273331Sbryanv * Round p (pointer or byte index) up to a correctly-aligned value 42273331Sbryanv * for all data types (int, long, ...). The result is unsigned int 43273331Sbryanv * and must be cast to any desired pointer type. 44273331Sbryanv */ 45273331Sbryanv#ifndef _ALIGNBYTES 46273331Sbryanv#define _ALIGNBYTES (sizeof(int) - 1) 47273331Sbryanv#endif 48273331Sbryanv#ifndef _ALIGN 49273331Sbryanv#define _ALIGN(p) (((unsigned)(p) + _ALIGNBYTES) & ~_ALIGNBYTES) 50273331Sbryanv#endif 51273331Sbryanv 52273331Sbryanv#ifndef _NO_NAMESPACE_POLLUTION 53273331Sbryanv 54273331Sbryanv#define __HAVE_ACPI 55273331Sbryanv#define __PCI_REROUTE_INTERRUPT 56273331Sbryanv 57273331Sbryanv#ifndef _MACHINE_PARAM_H_ 58273331Sbryanv#define _MACHINE_PARAM_H_ 59273331Sbryanv 60273331Sbryanv#ifndef MACHINE 61273331Sbryanv#define MACHINE "i386" 62273331Sbryanv#endif 63273331Sbryanv#ifndef MACHINE_ARCH 64273331Sbryanv#define MACHINE_ARCH "i386" 65273331Sbryanv#endif 66273331Sbryanv#define MID_MACHINE MID_I386 67273331Sbryanv 68273331Sbryanv#if defined(SMP) || defined(KLD_MODULE) 69273331Sbryanv#define MAXCPU 32 70273331Sbryanv#else 71273331Sbryanv#define MAXCPU 1 72273331Sbryanv#endif /* SMP || KLD_MODULE */ 73273331Sbryanv 74273331Sbryanv#define ALIGNBYTES _ALIGNBYTES 75273331Sbryanv#define ALIGN(p) _ALIGN(p) 76273331Sbryanv 77273331Sbryanv/* 78273331Sbryanv * CACHE_LINE_SIZE is the compile-time maximum cache line size for an 79273331Sbryanv * architecture. It should be used with appropriate caution. 80273331Sbryanv */ 81273331Sbryanv#define CACHE_LINE_SHIFT 7 82273331Sbryanv#define CACHE_LINE_SIZE (1 << CACHE_LINE_SHIFT) 83273331Sbryanv 84273331Sbryanv#define PAGE_SHIFT 12 /* LOG2(PAGE_SIZE) */ 85273331Sbryanv#define PAGE_SIZE (1<<PAGE_SHIFT) /* bytes/page */ 86273331Sbryanv#define PAGE_MASK (PAGE_SIZE-1) 87273331Sbryanv#define NPTEPG (PAGE_SIZE/(sizeof (pt_entry_t))) 88273331Sbryanv 89273331Sbryanv#ifdef PAE 90273331Sbryanv#define NPGPTD 4 91273331Sbryanv#define PDRSHIFT 21 /* LOG2(NBPDR) */ 92273331Sbryanv#define NPGPTD_SHIFT 9 93273331Sbryanv#else 94273331Sbryanv#define NPGPTD 1 95273331Sbryanv#define PDRSHIFT 22 /* LOG2(NBPDR) */ 96273331Sbryanv#define NPGPTD_SHIFT 10 97273331Sbryanv#endif 98273331Sbryanv 99273331Sbryanv#define NBPTD (NPGPTD<<PAGE_SHIFT) 100273331Sbryanv#define NPDEPTD (NBPTD/(sizeof (pd_entry_t))) 101273331Sbryanv#define NPDEPG (PAGE_SIZE/(sizeof (pd_entry_t))) 102273331Sbryanv#define NBPDR (1<<PDRSHIFT) /* bytes/page dir */ 103273331Sbryanv#define PDRMASK (NBPDR-1) 104273331Sbryanv 105273331Sbryanv#define IOPAGES 2 /* pages of i/o permission bitmap */ 106273331Sbryanv 107273331Sbryanv#ifndef KSTACK_PAGES 108273331Sbryanv#define KSTACK_PAGES 2 /* Includes pcb! */ 109273331Sbryanv#endif 110273331Sbryanv#define KSTACK_GUARD_PAGES 1 /* pages of kstack guard; 0 disables */ 111273331Sbryanv 112273331Sbryanv/* 113273331Sbryanv * Ceiling on amount of swblock kva space, can be changed via 114273331Sbryanv * the kern.maxswzone /boot/loader.conf variable. 115273331Sbryanv */ 116273331Sbryanv#ifndef VM_SWZONE_SIZE_MAX 117273331Sbryanv#define VM_SWZONE_SIZE_MAX (32 * 1024 * 1024) 118273331Sbryanv#endif 119273331Sbryanv 120273331Sbryanv/* 121273331Sbryanv * Ceiling on size of buffer cache (really only effects write queueing, 122273331Sbryanv * the VM page cache is not effected), can be changed via 123273331Sbryanv * the kern.maxbcache /boot/loader.conf variable. 124273331Sbryanv */ 125273331Sbryanv#ifndef VM_BCACHE_SIZE_MAX 126273331Sbryanv#define VM_BCACHE_SIZE_MAX (200 * 1024 * 1024) 127273331Sbryanv#endif 128273331Sbryanv 129273331Sbryanv/* 130273331Sbryanv * Mach derived conversion macros 131273331Sbryanv */ 132273331Sbryanv#define trunc_page(x) ((x) & ~PAGE_MASK) 133273331Sbryanv#define round_page(x) (((x) + PAGE_MASK) & ~PAGE_MASK) 134273331Sbryanv#define trunc_4mpage(x) ((x) & ~PDRMASK) 135273331Sbryanv#define round_4mpage(x) ((((x)) + PDRMASK) & ~PDRMASK) 136273331Sbryanv 137273331Sbryanv#define atop(x) ((x) >> PAGE_SHIFT) 138273331Sbryanv#define ptoa(x) ((x) << PAGE_SHIFT) 139273331Sbryanv 140273331Sbryanv#define i386_btop(x) ((x) >> PAGE_SHIFT) 141273331Sbryanv#define i386_ptob(x) ((x) << PAGE_SHIFT) 142273331Sbryanv 143273331Sbryanv#define pgtok(x) ((x) * (PAGE_SIZE / 1024)) 144273331Sbryanv 145273331Sbryanv#endif /* !_MACHINE_PARAM_H_ */ 146273331Sbryanv#endif /* !_NO_NAMESPACE_POLLUTION */ 147273331Sbryanv