param.h revision 114347
1/* $FreeBSD: head/sys/ia64/include/param.h 114347 2003-04-30 23:16:33Z marcel $ */
2/* From: NetBSD: param.h,v 1.20 1997/09/19 13:52:53 leo Exp */
3
4/*
5 * Copyright (c) 1988 University of Utah.
6 * Copyright (c) 1992, 1993
7 *	The Regents of the University of California.  All rights reserved.
8 *
9 * This code is derived from software contributed to Berkeley by
10 * the Systems Programming Group of the University of Utah Computer
11 * Science Department and Ralph Campbell.
12 *
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
15 * are met:
16 * 1. Redistributions of source code must retain the above copyright
17 *    notice, this list of conditions and the following disclaimer.
18 * 2. Redistributions in binary form must reproduce the above copyright
19 *    notice, this list of conditions and the following disclaimer in the
20 *    documentation and/or other materials provided with the distribution.
21 * 3. All advertising materials mentioning features or use of this software
22 *    must display the following acknowledgement:
23 *	This product includes software developed by the University of
24 *	California, Berkeley and its contributors.
25 * 4. Neither the name of the University nor the names of its contributors
26 *    may be used to endorse or promote products derived from this software
27 *    without specific prior written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
30 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
33 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
35 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
38 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
39 * SUCH DAMAGE.
40 *
41 * from: Utah $Hdr: machparam.h 1.11 89/08/14$
42 *
43 *	@(#)param.h	8.1 (Berkeley) 6/10/93
44 */
45
46/*
47 * Machine dependent constants for the IA64.
48 */
49/*
50 * Round p (pointer or byte index) up to a correctly-aligned value for all
51 * data types (int, long, ...).   The result is u_long and must be cast to
52 * any desired pointer type.
53 *
54 * ALIGNED_POINTER is a boolean macro that checks whether an address
55 * is valid to fetch data elements of type t from on this architecture.
56 * This does not reflect the optimal alignment, just the possibility
57 * (within reasonable limits).
58 *
59 */
60#ifndef _ALIGNBYTES
61#define	_ALIGNBYTES		15
62#endif
63#ifndef _ALIGN
64#define	_ALIGN(p)		(((u_long)(p) + _ALIGNBYTES) &~ _ALIGNBYTES)
65#endif
66#ifndef _ALIGNED_POINTER
67#define _ALIGNED_POINTER(p,t)	((((u_long)(p)) & (sizeof(t)-1)) == 0)
68#endif
69
70#ifndef _MACHINE
71#define	_MACHINE	ia64
72#endif
73#ifndef _MACHINE_ARCH
74#define	_MACHINE_ARCH	ia64
75#endif
76
77#ifndef _NO_NAMESPACE_POLLUTION
78
79#ifndef _MACHINE_PARAM_H_
80#define	_MACHINE_PARAM_H_
81
82#ifndef MACHINE
83#define	MACHINE		"ia64"
84#endif
85#ifndef MACHINE_ARCH
86#define	MACHINE_ARCH	"ia64"
87#endif
88
89#ifdef SMP
90#define	MAXCPU		16
91#else
92#define MAXCPU		1
93#endif
94
95/*
96 * Round p (pointer or byte index) up to a correctly-aligned value for all
97 * data types (int, long, ...).   The result is u_long and must be cast to
98 * any desired pointer type.
99 *
100 * ALIGNED_POINTER is a boolean macro that checks whether an address
101 * is valid to fetch data elements of type t from on this architecture.
102 * This does not reflect the optimal alignment, just the possibility
103 * (within reasonable limits).
104 *
105 */
106#define	ALIGNBYTES		_ALIGNBYTES
107#define	ALIGN(p)		_ALIGN(p)
108#define ALIGNED_POINTER(p,t)	_ALIGNED_POINTER(p,t)
109
110#if !defined(PAGE_SIZE_4K) && !defined(PAGE_SIZE_8K) && !defined(PAGE_SIZE_16K)
111#define PAGE_SIZE_8K
112#endif
113
114#ifdef PAGE_SIZE_4K
115#define	PAGE_SIZE	4096			/* bytes/page */
116#define PAGE_SHIFT	12
117#endif
118#ifdef PAGE_SIZE_8K
119#define	PAGE_SIZE	8192			/* bytes/page */
120#define PAGE_SHIFT	13
121#endif
122#ifdef PAGE_SIZE_16K
123#define	PAGE_SIZE	16384			/* bytes/page */
124#define PAGE_SHIFT	14
125#endif
126
127#define PAGE_MASK	(PAGE_SIZE-1)
128#define NPTEPG		(PAGE_SIZE/(sizeof (pt_entry_t)))
129
130#define	CLSIZE		1
131#define	CLSIZELOG2	0
132
133/* NOTE: SSIZE, SINCR and UPAGES must be multiples of CLSIZE */
134#define	SSIZE		1		/* initial stack size/NBPG */
135#define	SINCR		1		/* increment of stack/NBPG */
136
137#define	KSTACK_PAGES	4		/* pages of kernel stack */
138#define	UAREA_PAGES	1		/* pages of u-area */
139
140/*
141 * Mach derived conversion macros
142 */
143#define	round_page(x)	((((unsigned long)(x)) + PAGE_MASK) & ~(PAGE_MASK))
144#define	trunc_page(x)	((unsigned long)(x) & ~(PAGE_MASK))
145
146#define atop(x)			((unsigned long)(x) >> PAGE_SHIFT)
147#define ptoa(x)			((unsigned long)(x) << PAGE_SHIFT)
148
149#define	ia64_btop(x)		((unsigned long)(x) >> PAGE_SHIFT)
150#define	ia64_ptob(x)		((unsigned long)(x) << PAGE_SHIFT)
151
152#define pgtok(x)                ((x) * (PAGE_SIZE / 1024))
153
154#endif	/* !_MACHINE_PARAM_H_ */
155#endif	/* !_NO_NAMESPACE_POLLUTION */
156