param.h revision 1.13
1/*	$NetBSD: param.h,v 1.13 2002/03/09 23:35:59 chs Exp $	*/
2
3/*-
4 * Copyright (C) 1995, 1996 Wolfgang Solfrank.
5 * Copyright (C) 1995, 1996 TooLs GmbH.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 *    notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 *    notice, this list of conditions and the following disclaimer in the
15 *    documentation and/or other materials provided with the distribution.
16 * 3. All advertising materials mentioning features or use of this software
17 *    must display the following acknowledgement:
18 *	This product includes software developed by TooLs GmbH.
19 * 4. The name of TooLs GmbH may not be used to endorse or promote products
20 *    derived from this software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
23 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
24 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
25 * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
28 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
31 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34#ifndef _POWERPC_PARAM_H
35#define	_POWERPC_PARAM_H
36
37#ifdef	_KERNEL
38#ifndef	_LOCORE
39#include <machine/cpu.h>
40#endif	/* _LOCORE */
41#endif
42
43/*
44 * Machine dependent constants for PowerPC (32-bit only currently)
45 */
46#ifndef MACHINE
47#define	MACHINE		"powerpc"
48#endif
49#define	MACHINE_ARCH	"powerpc"
50#define	MID_MACHINE	MID_POWERPC
51
52#define	ALIGNBYTES		(sizeof(double) - 1)
53#define	ALIGN(p)		(((u_int)(p) + ALIGNBYTES) & ~ALIGNBYTES)
54#define ALIGNED_POINTER(p,t)	((((u_long)(p)) & (sizeof(t)-1)) == 0)
55
56#define	PGSHIFT		12
57#define	NBPG		(1 << PGSHIFT)	/* Page size */
58#define	PGOFSET		(NBPG - 1)
59
60#define	DEV_BSHIFT	9		/* log2(DEV_BSIZE) */
61#define	DEV_BSIZE	(1 << DEV_BSHIFT)
62#define	BLKDEV_IOSIZE	NBPG
63#define	MAXPHYS		(64 * 1024)	/* max raw I/O transfer size */
64
65#define	UPAGES		4
66#define	USPACE		(UPAGES * NBPG)
67
68#ifndef	MSGBUFSIZE
69#define	MSGBUFSIZE	NBPG		/* default message buffer size */
70#endif
71
72#ifndef KERNBASE
73#define	KERNBASE	0x100000
74#endif
75
76/*
77 * Constants related to network buffer management.
78 * MCLBYTES must be no larger than NBPG (the software page size), and,
79 * on machines that exchange pages of input or output buffers with mbuf
80 * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
81 * of the hardware page size.
82 */
83#define	MSIZE		256		/* size of an mbuf */
84#define	MCLSHIFT	11		/* convert bytes to m_buf clusters */
85#define	MCLBYTES	(1 << MCLSHIFT)	/* size of a m_buf cluster */
86
87#ifndef NMBCLUSTERS
88
89#if defined(_KERNEL_OPT)
90#include "opt_gateway.h"
91#endif
92
93#ifdef GATEWAY
94#define	NMBCLUSTERS	2048		/* map size, max cluster allocation */
95#else
96#define	NMBCLUSTERS	1024		/* map size, max cluster allocation */
97#endif
98#endif
99
100/*
101 * Minimum and maximum sizes of the kernel malloc arena in PAGE_SIZE-sized
102 * logical pages.
103 */
104#ifndef NKMEMPAGES_MIN_DEFAULT
105#define	NKMEMPAGES_MIN_DEFAULT	((16 * 1024 * 1024) >> PAGE_SHIFT)
106#endif
107#ifndef NKMEMPAGES_MAX_DEFAULT
108#define	NKMEMPAGES_MAX_DEFAULT	((128 * 1024 * 1024) >> PAGE_SHIFT)
109#endif
110
111/*
112 * pages ("clicks") to disk blocks
113 */
114#define	ctod(x)		((x) << (PGSHIFT - DEV_BSHIFT))
115#define	dtoc(x)		((x) >> (PGSHIFT - DEV_BSHIFT))
116/*
117 * bytes to pages
118 */
119#define	ctob(x)		((x) << PGSHIFT)
120#define	btoc(x)		(((x) + PGOFSET) >> PGSHIFT)
121
122/*
123 * bytes to disk blocks
124 */
125#define	dbtob(x)	((x) << DEV_BSHIFT)
126#define	btodb(x)	((x) >> DEV_BSHIFT)
127
128#ifdef OLDPMAP
129/*
130 * Segment handling stuff
131 */
132#define	SEGMENT_LENGTH	0x10000000
133#define	SEGMENT_MASK	0xf0000000
134
135/*
136 * Fixed segments
137 */
138#define	USER_SR		13
139#define	KERNEL_SR	14
140#define	KERNEL_SEGMENT	(0xf00000 + KERNEL_SR)
141#define	EMPTY_SEGMENT	0xfffff0
142#define	USER_ADDR	((void *)(USER_SR << ADDR_SR_SHFT))
143
144/*
145 * Some system constants
146 */
147#ifndef	NPMAPS
148#define	NPMAPS		32768	/* Number of pmaps in system */
149#endif
150
151#endif /* OLDPMAP */
152
153#endif /* _POWERPC_PARAM_H_ */
154