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