param.h revision 191276
170584Sobrien/*- 270584Sobrien * Copyright (c) 2001 David E. O'Brien 370584Sobrien * Copyright (c) 1990 The Regents of the University of California. 470584Sobrien * All rights reserved. 570584Sobrien * 670584Sobrien * This code is derived from software contributed to Berkeley by 770584Sobrien * William Jolitz. 870584Sobrien * 970584Sobrien * Redistribution and use in source and binary forms, with or without 1070584Sobrien * modification, are permitted provided that the following conditions 1170584Sobrien * are met: 1270584Sobrien * 1. Redistributions of source code must retain the above copyright 1370584Sobrien * notice, this list of conditions and the following disclaimer. 1470584Sobrien * 2. Redistributions in binary form must reproduce the above copyright 1570584Sobrien * notice, this list of conditions and the following disclaimer in the 1670584Sobrien * documentation and/or other materials provided with the distribution. 1770584Sobrien * 3. All advertising materials mentioning features or use of this software 1870584Sobrien * must display the following acknowledgement: 1970584Sobrien * This product includes software developed by the University of 2070584Sobrien * California, Berkeley and its contributors. 2170584Sobrien * 4. Neither the name of the University nor the names of its contributors 2270584Sobrien * may be used to endorse or promote products derived from this software 2370584Sobrien * without specific prior written permission. 2470584Sobrien * 2570584Sobrien * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2670584Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2770584Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2870584Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2970584Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 3070584Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 3170584Sobrien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3270584Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3370584Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3470584Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3570584Sobrien * SUCH DAMAGE. 3670584Sobrien * 3770584Sobrien * from: @(#)param.h 5.8 (Berkeley) 6/28/91 3870584Sobrien * $FreeBSD: head/sys/powerpc/include/param.h 191276 2009-04-19 20:19:13Z rwatson $ 3970584Sobrien */ 4070584Sobrien 4170584Sobrien/* 4270584Sobrien * Machine dependent constants for PowerPC (32-bit only currently) 4370584Sobrien */ 4470584Sobrien 4570584Sobrien/* 4670584Sobrien * Round p (pointer or byte index) up to a correctly-aligned value 4770584Sobrien * for all data types (int, long, ...). The result is unsigned int 4870584Sobrien * and must be cast to any desired pointer type. 4970584Sobrien */ 5070584Sobrien#ifndef _ALIGNBYTES 5170584Sobrien#define _ALIGNBYTES (sizeof(int) - 1) 5270584Sobrien#endif 5370584Sobrien#ifndef _ALIGN 5470584Sobrien#define _ALIGN(p) (((unsigned)(p) + _ALIGNBYTES) & ~_ALIGNBYTES) 5570584Sobrien#endif 5670584Sobrien 5770584Sobrien#ifndef _NO_NAMESPACE_POLLUTION 5870584Sobrien 5970584Sobrien/* Needed to display interrupts on OFW PCI */ 6070584Sobrien#define __PCI_REROUTE_INTERRUPT 6170584Sobrien 6270584Sobrien#ifndef _MACHINE_PARAM_H_ 6370584Sobrien#define _MACHINE_PARAM_H_ 6470584Sobrien 6570584Sobrien#ifndef MACHINE 6670584Sobrien#define MACHINE "powerpc" 6770584Sobrien#endif 6870584Sobrien#ifndef MACHINE_ARCH 6970584Sobrien#define MACHINE_ARCH "powerpc" 7070584Sobrien#endif 7170584Sobrien#define MID_MACHINE MID_POWERPC 7270584Sobrien 7370584Sobrien#if defined(SMP) || defined(KLD_MODULE) 7470584Sobrien#define MAXCPU 2 7570584Sobrien#else 7670584Sobrien#define MAXCPU 1 7778342Sbenno#endif /* SMP || KLD_MODULE */ 7870584Sobrien 7978342Sbenno#define ALIGNBYTES _ALIGNBYTES 8070584Sobrien#define ALIGN(p) _ALIGN(p) 8170584Sobrien 8270584Sobrien#ifndef CACHE_LINE_SHIFT 8370584Sobrien#define CACHE_LINE_SHIFT 7 8470584Sobrien#endif 8570584Sobrien#define CACHE_LINE_SIZE (1 << CACHE_LINE_SHIFT) 8670584Sobrien 8770584Sobrien#define PAGE_SHIFT 12 8870584Sobrien#define PAGE_SIZE (1 << PAGE_SHIFT) /* Page size */ 8970584Sobrien#define PAGE_MASK (PAGE_SIZE - 1) 9070584Sobrien#define NPTEPG (PAGE_SIZE/(sizeof (pt_entry_t))) 9170584Sobrien 9270584Sobrien#ifndef KSTACK_PAGES 9370584Sobrien#define KSTACK_PAGES 4 /* includes pcb */ 9470584Sobrien#endif 9570584Sobrien#define KSTACK_GUARD_PAGES 1 /* pages of kstack guard; 0 disables */ 9670584Sobrien#define USPACE (KSTACK_PAGES * PAGE_SIZE) /* total size of pcb */ 9770584Sobrien 9870584Sobrien/* 9970584Sobrien * Mach derived conversion macros 10070584Sobrien */ 10170584Sobrien#define trunc_page(x) ((unsigned long)(x) & ~(PAGE_MASK)) 10270584Sobrien#define round_page(x) (((x) + PAGE_MASK) & ~PAGE_MASK) 10370584Sobrien#define trunc_4mpage(x) ((unsigned)(x) & ~PDRMASK) 10470584Sobrien#define round_4mpage(x) ((((unsigned)(x)) + PDRMASK) & ~PDRMASK) 10570584Sobrien 10670584Sobrien#define atop(x) ((unsigned long)(x) >> PAGE_SHIFT) 10770584Sobrien#define ptoa(x) ((unsigned long)(x) << PAGE_SHIFT) 10870584Sobrien 10970584Sobrien#define powerpc_btop(x) ((unsigned)(x) >> PAGE_SHIFT) 11070584Sobrien#define powerpc_ptob(x) ((unsigned)(x) << PAGE_SHIFT) 11170584Sobrien 11270584Sobrien#define pgtok(x) ((x) * (PAGE_SIZE / 1024)) 11370584Sobrien 11470584Sobrien#endif /* !_MACHINE_PARAM_H_ */ 11583682Smp#endif /* !_NO_NAMESPACE_POLLUTION */ 11683682Smp