param.h revision 139790
166458Sdfr/* $FreeBSD: head/sys/ia64/include/param.h 139790 2005-01-06 22:18:23Z imp $ */
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
6666458Sdfr#ifndef _MACHINE
6766458Sdfr#define	_MACHINE	ia64
6866458Sdfr#endif
6996912Smarcel#ifndef _MACHINE_ARCH
7096912Smarcel#define	_MACHINE_ARCH	ia64
7196912Smarcel#endif
7296912Smarcel
7396912Smarcel#ifndef _NO_NAMESPACE_POLLUTION
7496912Smarcel
7596912Smarcel#ifndef _MACHINE_PARAM_H_
7696912Smarcel#define	_MACHINE_PARAM_H_
7796912Smarcel
7866458Sdfr#ifndef MACHINE
7966458Sdfr#define	MACHINE		"ia64"
8066458Sdfr#endif
8166458Sdfr#ifndef MACHINE_ARCH
8266458Sdfr#define	MACHINE_ARCH	"ia64"
8366458Sdfr#endif
8466458Sdfr
8574733Sjhb#ifdef SMP
8674733Sjhb#define	MAXCPU		16
8774733Sjhb#else
8874733Sjhb#define MAXCPU		1
8974733Sjhb#endif
9066458Sdfr
9166458Sdfr/*
9266458Sdfr * Round p (pointer or byte index) up to a correctly-aligned value for all
9366458Sdfr * data types (int, long, ...).   The result is u_long and must be cast to
9466458Sdfr * any desired pointer type.
9566458Sdfr *
9666458Sdfr * ALIGNED_POINTER is a boolean macro that checks whether an address
9766458Sdfr * is valid to fetch data elements of type t from on this architecture.
9866458Sdfr * This does not reflect the optimal alignment, just the possibility
9966458Sdfr * (within reasonable limits).
10066458Sdfr *
10166458Sdfr */
10270508Sdfr#define	ALIGNBYTES		_ALIGNBYTES
10370508Sdfr#define	ALIGN(p)		_ALIGN(p)
10470508Sdfr#define ALIGNED_POINTER(p,t)	_ALIGNED_POINTER(p,t)
10566458Sdfr
106119347Smarcel#ifndef LOG2_PAGE_SIZE
107119347Smarcel#define	LOG2_PAGE_SIZE		13		/* 8K pages by default. */
10883198Sdfr#endif
109119347Smarcel#define	PAGE_SHIFT	(LOG2_PAGE_SIZE)
110119347Smarcel#define	PAGE_SIZE	(1<<(LOG2_PAGE_SIZE))
11166458Sdfr#define PAGE_MASK	(PAGE_SIZE-1)
11266458Sdfr#define NPTEPG		(PAGE_SIZE/(sizeof (pt_entry_t)))
11366458Sdfr
11466458Sdfr#define	CLSIZE		1
11566458Sdfr#define	CLSIZELOG2	0
11666458Sdfr
11766458Sdfr/* NOTE: SSIZE, SINCR and UPAGES must be multiples of CLSIZE */
11866458Sdfr#define	SSIZE		1		/* initial stack size/NBPG */
11966458Sdfr#define	SINCR		1		/* increment of stack/NBPG */
12066458Sdfr
121118239Speter#ifndef	KSTACK_PAGES
12283366Sjulian#define	KSTACK_PAGES	4		/* pages of kernel stack */
123118239Speter#endif
124116355Salc#define	KSTACK_GUARD_PAGES 0		/* pages of kstack guard; 0 disables */
12566458Sdfr
12666458Sdfr/*
12766458Sdfr * Mach derived conversion macros
12866458Sdfr */
12966458Sdfr#define	round_page(x)	((((unsigned long)(x)) + PAGE_MASK) & ~(PAGE_MASK))
13066458Sdfr#define	trunc_page(x)	((unsigned long)(x) & ~(PAGE_MASK))
13166458Sdfr
13266458Sdfr#define atop(x)			((unsigned long)(x) >> PAGE_SHIFT)
13366458Sdfr#define ptoa(x)			((unsigned long)(x) << PAGE_SHIFT)
13466458Sdfr
13566458Sdfr#define	ia64_btop(x)		((unsigned long)(x) >> PAGE_SHIFT)
13666458Sdfr#define	ia64_ptob(x)		((unsigned long)(x) << PAGE_SHIFT)
13766458Sdfr
13866458Sdfr#define pgtok(x)                ((x) * (PAGE_SIZE / 1024))
13996912Smarcel
14096912Smarcel#endif	/* !_MACHINE_PARAM_H_ */
14196912Smarcel#endif	/* !_NO_NAMESPACE_POLLUTION */
142