param.h revision 191278
166458Sdfr/* $FreeBSD: head/sys/ia64/include/param.h 191278 2009-04-19 21:26:36Z rwatson $ */
266458Sdfr/* From: NetBSD: param.h,v 1.20 1997/09/19 13:52:53 leo Exp */
366458Sdfr
4139790Simp/*-
566458Sdfr * Copyright (c) 1988 University of Utah.
666458Sdfr * Copyright (c) 1992, 1993
766458Sdfr *	The Regents of the University of California.  All rights reserved.
866458Sdfr *
966458Sdfr * This code is derived from software contributed to Berkeley by
1066458Sdfr * the Systems Programming Group of the University of Utah Computer
1166458Sdfr * Science Department and Ralph Campbell.
1266458Sdfr *
1366458Sdfr * Redistribution and use in source and binary forms, with or without
1466458Sdfr * modification, are permitted provided that the following conditions
1566458Sdfr * are met:
1666458Sdfr * 1. Redistributions of source code must retain the above copyright
1766458Sdfr *    notice, this list of conditions and the following disclaimer.
1866458Sdfr * 2. Redistributions in binary form must reproduce the above copyright
1966458Sdfr *    notice, this list of conditions and the following disclaimer in the
2066458Sdfr *    documentation and/or other materials provided with the distribution.
2166458Sdfr * 4. Neither the name of the University nor the names of its contributors
2266458Sdfr *    may be used to endorse or promote products derived from this software
2366458Sdfr *    without specific prior written permission.
2466458Sdfr *
2566458Sdfr * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2666458Sdfr * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2766458Sdfr * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2866458Sdfr * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2966458Sdfr * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
3066458Sdfr * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
3166458Sdfr * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3266458Sdfr * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
3366458Sdfr * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3466458Sdfr * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3566458Sdfr * SUCH DAMAGE.
3666458Sdfr *
3766458Sdfr * from: Utah $Hdr: machparam.h 1.11 89/08/14$
3866458Sdfr *
3966458Sdfr *	@(#)param.h	8.1 (Berkeley) 6/10/93
4066458Sdfr */
4166458Sdfr
4266458Sdfr/*
4366458Sdfr * Machine dependent constants for the IA64.
4466458Sdfr */
4570508Sdfr/*
4670508Sdfr * Round p (pointer or byte index) up to a correctly-aligned value for all
4770508Sdfr * data types (int, long, ...).   The result is u_long and must be cast to
4870508Sdfr * any desired pointer type.
4970508Sdfr *
5070508Sdfr * ALIGNED_POINTER is a boolean macro that checks whether an address
5170508Sdfr * is valid to fetch data elements of type t from on this architecture.
5270508Sdfr * This does not reflect the optimal alignment, just the possibility
5370508Sdfr * (within reasonable limits).
5470508Sdfr *
5570508Sdfr */
5670508Sdfr#ifndef _ALIGNBYTES
57111031Smarcel#define	_ALIGNBYTES		15
5870508Sdfr#endif
5970508Sdfr#ifndef _ALIGN
6070508Sdfr#define	_ALIGN(p)		(((u_long)(p) + _ALIGNBYTES) &~ _ALIGNBYTES)
6170508Sdfr#endif
6270508Sdfr#ifndef _ALIGNED_POINTER
6370508Sdfr#define _ALIGNED_POINTER(p,t)	((((u_long)(p)) & (sizeof(t)-1)) == 0)
6470508Sdfr#endif
6570508Sdfr
6696912Smarcel#ifndef _NO_NAMESPACE_POLLUTION
6796912Smarcel
68154128Simp#define __HAVE_ACPI
69154128Simp#define __PCI_REROUTE_INTERRUPT
70154128Simp
7196912Smarcel#ifndef _MACHINE_PARAM_H_
7296912Smarcel#define	_MACHINE_PARAM_H_
7396912Smarcel
7466458Sdfr#ifndef MACHINE
7566458Sdfr#define	MACHINE		"ia64"
7666458Sdfr#endif
7766458Sdfr#ifndef MACHINE_ARCH
7866458Sdfr#define	MACHINE_ARCH	"ia64"
7966458Sdfr#endif
8066458Sdfr
81177661Sjb#if defined(SMP) || defined(KLD_MODULE)
82148805Smarcel#define	MAXCPU		4
8374733Sjhb#else
8474733Sjhb#define MAXCPU		1
8574733Sjhb#endif
8666458Sdfr
8766458Sdfr/*
8866458Sdfr * Round p (pointer or byte index) up to a correctly-aligned value for all
8966458Sdfr * data types (int, long, ...).   The result is u_long and must be cast to
9066458Sdfr * any desired pointer type.
9166458Sdfr *
9266458Sdfr * ALIGNED_POINTER is a boolean macro that checks whether an address
9366458Sdfr * is valid to fetch data elements of type t from on this architecture.
9466458Sdfr * This does not reflect the optimal alignment, just the possibility
9566458Sdfr * (within reasonable limits).
9666458Sdfr *
9766458Sdfr */
9870508Sdfr#define	ALIGNBYTES		_ALIGNBYTES
9970508Sdfr#define	ALIGN(p)		_ALIGN(p)
10070508Sdfr#define ALIGNED_POINTER(p,t)	_ALIGNED_POINTER(p,t)
10166458Sdfr
102191278Srwatson/*
103191278Srwatson * CACHE_LINE_SIZE is the compile-time maximum cache line size for an
104191278Srwatson * architecture.  It should be used with appropriate caution.
105191278Srwatson */
106191276Srwatson#ifndef CACHE_LINE_SHIFT
107191276Srwatson#define	CACHE_LINE_SHIFT	6
108191276Srwatson#endif
109191276Srwatson#define	CACHE_LINE_SIZE		(1 << CACHE_LINE_SHIFT)
110191276Srwatson
111119347Smarcel#ifndef LOG2_PAGE_SIZE
112119347Smarcel#define	LOG2_PAGE_SIZE		13		/* 8K pages by default. */
11383198Sdfr#endif
114119347Smarcel#define	PAGE_SHIFT	(LOG2_PAGE_SIZE)
115119347Smarcel#define	PAGE_SIZE	(1<<(LOG2_PAGE_SIZE))
11666458Sdfr#define PAGE_MASK	(PAGE_SIZE-1)
11766458Sdfr#define NPTEPG		(PAGE_SIZE/(sizeof (pt_entry_t)))
11866458Sdfr
119118239Speter#ifndef	KSTACK_PAGES
12083366Sjulian#define	KSTACK_PAGES	4		/* pages of kernel stack */
121118239Speter#endif
122116355Salc#define	KSTACK_GUARD_PAGES 0		/* pages of kstack guard; 0 disables */
12366458Sdfr
12466458Sdfr/*
12566458Sdfr * Mach derived conversion macros
12666458Sdfr */
12766458Sdfr#define	round_page(x)	((((unsigned long)(x)) + PAGE_MASK) & ~(PAGE_MASK))
12866458Sdfr#define	trunc_page(x)	((unsigned long)(x) & ~(PAGE_MASK))
12966458Sdfr
13066458Sdfr#define atop(x)			((unsigned long)(x) >> PAGE_SHIFT)
13166458Sdfr#define ptoa(x)			((unsigned long)(x) << PAGE_SHIFT)
13266458Sdfr
13366458Sdfr#define	ia64_btop(x)		((unsigned long)(x) >> PAGE_SHIFT)
13466458Sdfr#define	ia64_ptob(x)		((unsigned long)(x) << PAGE_SHIFT)
13566458Sdfr
13666458Sdfr#define pgtok(x)                ((x) * (PAGE_SIZE / 1024))
13796912Smarcel
13896912Smarcel#endif	/* !_MACHINE_PARAM_H_ */
13996912Smarcel#endif	/* !_NO_NAMESPACE_POLLUTION */
140