]>
Commit | Line | Data |
---|---|---|
2aa62f2b | 1 | /* $NetBSD: param.h,v 1.61 2006/08/28 13:43:35 yamt Exp $ */\r |
2 | \r | |
3 | /*-\r | |
4 | * Copyright (c) 1990 The Regents of the University of California.\r | |
5 | * All rights reserved.\r | |
6 | *\r | |
7 | * This code is derived from software contributed to Berkeley by\r | |
8 | * William Jolitz.\r | |
9 | *\r | |
10 | * Redistribution and use in source and binary forms, with or without\r | |
11 | * modification, are permitted provided that the following conditions\r | |
12 | * are met:\r | |
13 | * 1. Redistributions of source code must retain the above copyright\r | |
14 | * notice, this list of conditions and the following disclaimer.\r | |
15 | * 2. Redistributions in binary form must reproduce the above copyright\r | |
16 | * notice, this list of conditions and the following disclaimer in the\r | |
17 | * documentation and/or other materials provided with the distribution.\r | |
18 | * 3. Neither the name of the University nor the names of its contributors\r | |
19 | * may be used to endorse or promote products derived from this software\r | |
20 | * without specific prior written permission.\r | |
21 | *\r | |
22 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\r | |
23 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r | |
24 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r | |
25 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\r | |
26 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r | |
27 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r | |
28 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r | |
29 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r | |
30 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r | |
31 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r | |
32 | * SUCH DAMAGE.\r | |
33 | *\r | |
34 | * @(#)param.h 5.8 (Berkeley) 6/28/91\r | |
35 | */\r | |
36 | \r | |
37 | #ifndef _I386_PARAM_H_\r | |
38 | #define _I386_PARAM_H_\r | |
39 | \r | |
40 | /*\r | |
41 | * Machine dependent constants for Intel 386.\r | |
42 | */\r | |
43 | \r | |
44 | #ifdef _KERNEL\r | |
45 | #ifdef _LOCORE\r | |
46 | #include <machine/psl.h>\r | |
47 | #else\r | |
48 | #include <machine/cpu.h>\r | |
49 | #endif\r | |
50 | #endif\r | |
51 | \r | |
52 | #define _MACHINE i386\r | |
53 | #define MACHINE "i386"\r | |
54 | #define _MACHINE_ARCH i386\r | |
55 | #define MACHINE_ARCH "i386"\r | |
56 | #define MID_MACHINE MID_I386\r | |
57 | \r | |
58 | /*\r | |
59 | * Round p (pointer or byte index) up to a correctly-aligned value\r | |
60 | * for all data types (int, long, ...). The result is u_int and\r | |
61 | * must be cast to any desired pointer type.\r | |
62 | *\r | |
63 | * ALIGNED_POINTER is a boolean macro that checks whether an address\r | |
64 | * is valid to fetch data elements of type t from on this architecture.\r | |
65 | * This does not reflect the optimal alignment, just the possibility\r | |
66 | * (within reasonable limits). \r | |
67 | *\r | |
68 | */\r | |
69 | #define ALIGNBYTES (sizeof(int) - 1)\r | |
70 | #define ALIGN(p) (((u_int)(u_long)(p) + ALIGNBYTES) &~ \\r | |
71 | ALIGNBYTES)\r | |
72 | #define ALIGNED_POINTER(p,t) 1\r | |
73 | \r | |
74 | #define PGSHIFT 12 /* LOG2(NBPG) */\r | |
75 | #define NBPG (1 << PGSHIFT) /* bytes/page */\r | |
76 | #define PGOFSET (NBPG-1) /* byte offset into page */\r | |
77 | #define NPTEPG (NBPG/(sizeof (pt_entry_t)))\r | |
78 | \r | |
79 | #if defined(_KERNEL_OPT)\r | |
80 | #include "opt_kernbase.h"\r | |
81 | #endif /* defined(_KERNEL_OPT) */\r | |
82 | \r | |
83 | #ifdef KERNBASE_LOCORE\r | |
84 | #error "You should only re-define KERNBASE"\r | |
85 | #endif\r | |
86 | \r | |
87 | #ifndef KERNBASE\r | |
88 | #define KERNBASE 0xc0000000UL /* start of kernel virtual space */\r | |
89 | #endif\r | |
90 | \r | |
91 | #define KERNTEXTOFF (KERNBASE + 0x100000) /* start of kernel text */\r | |
92 | #define BTOPKERNBASE (KERNBASE >> PGSHIFT)\r | |
93 | \r | |
94 | #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */\r | |
95 | #define DEV_BSIZE (1 << DEV_BSHIFT)\r | |
96 | #define BLKDEV_IOSIZE 2048\r | |
97 | #ifndef MAXPHYS\r | |
98 | #define MAXPHYS (64 * 1024) /* max raw I/O transfer size */\r | |
99 | #endif\r | |
100 | \r | |
101 | #define SSIZE 1 /* initial stack size/NBPG */\r | |
102 | #define SINCR 1 /* increment of stack/NBPG */\r | |
103 | \r | |
104 | #ifdef _KERNEL_OPT\r | |
105 | #include "opt_noredzone.h"\r | |
106 | #endif\r | |
107 | #ifndef UPAGES\r | |
108 | #ifdef NOREDZONE\r | |
109 | #define UPAGES 2 /* pages of u-area */\r | |
110 | #else\r | |
111 | #define UPAGES 3\r | |
112 | #endif /*NOREDZONE */\r | |
113 | #endif /* !defined(UPAGES) */\r | |
114 | #define USPACE (UPAGES * NBPG) /* total size of u-area */\r | |
115 | \r | |
116 | #ifndef MSGBUFSIZE\r | |
117 | #define MSGBUFSIZE 4*NBPG /* default message buffer size */\r | |
118 | #endif\r | |
119 | \r | |
120 | /*\r | |
121 | * Constants related to network buffer management.\r | |
122 | * MCLBYTES must be no larger than NBPG (the software page size), and,\r | |
123 | * on machines that exchange pages of input or output buffers with mbuf\r | |
124 | * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple\r | |
125 | * of the hardware page size.\r | |
126 | */\r | |
127 | #define MSIZE 256 /* size of an mbuf */\r | |
128 | \r | |
129 | #ifndef MCLSHIFT\r | |
130 | #define MCLSHIFT 11 /* convert bytes to m_buf clusters */\r | |
131 | /* 2K cluster can hold Ether frame */\r | |
132 | #endif /* MCLSHIFT */\r | |
133 | \r | |
134 | #define MCLBYTES (1 << MCLSHIFT) /* size of a m_buf cluster */\r | |
135 | \r | |
136 | #ifndef NMBCLUSTERS\r | |
137 | #if defined(_KERNEL_OPT)\r | |
138 | #include "opt_gateway.h"\r | |
139 | #endif\r | |
140 | \r | |
141 | #ifdef GATEWAY\r | |
142 | #define NMBCLUSTERS 2048 /* map size, max cluster allocation */\r | |
143 | #else\r | |
144 | #define NMBCLUSTERS 1024 /* map size, max cluster allocation */\r | |
145 | #endif\r | |
146 | #endif\r | |
147 | \r | |
148 | #ifndef NFS_RSIZE\r | |
149 | #define NFS_RSIZE 32768\r | |
150 | #endif\r | |
151 | #ifndef NFS_WSIZE\r | |
152 | #define NFS_WSIZE 32768\r | |
153 | #endif\r | |
154 | \r | |
155 | /*\r | |
156 | * Minimum and maximum sizes of the kernel malloc arena in PAGE_SIZE-sized\r | |
157 | * logical pages.\r | |
158 | */\r | |
159 | #define NKMEMPAGES_MIN_DEFAULT ((8 * 1024 * 1024) >> PAGE_SHIFT)\r | |
160 | #define NKMEMPAGES_MAX_DEFAULT ((128 * 1024 * 1024) >> PAGE_SHIFT)\r | |
161 | \r | |
162 | /*\r | |
163 | * Mach derived conversion macros\r | |
164 | */\r | |
165 | #define x86_round_pdr(x) ((((unsigned)(x)) + PDOFSET) & ~PDOFSET)\r | |
166 | #define x86_trunc_pdr(x) ((unsigned)(x) & ~PDOFSET)\r | |
167 | #define x86_btod(x) ((unsigned)(x) >> PDSHIFT)\r | |
168 | #define x86_dtob(x) ((unsigned)(x) << PDSHIFT)\r | |
169 | #define x86_round_page(x) ((((unsigned)(x)) + PGOFSET) & ~PGOFSET)\r | |
170 | #define x86_trunc_page(x) ((unsigned)(x) & ~PGOFSET)\r | |
171 | #define x86_btop(x) ((unsigned)(x) >> PGSHIFT)\r | |
172 | #define x86_ptob(x) ((unsigned)(x) << PGSHIFT)\r | |
173 | \r | |
174 | #endif /* _I386_PARAM_H_ */\r |