root / lab4 / .minix-src / include / i386 / param.h @ 14
History | View | Annotate | Download (4.94 KB)
1 | 13 | up20180614 | /* $NetBSD: param.h,v 1.77 2012/04/20 22:23:24 rmind Exp $ */
|
---|---|---|---|
2 | |||
3 | /*-
|
||
4 | * Copyright (c) 1990 The Regents of the University of California.
|
||
5 | * All rights reserved.
|
||
6 | *
|
||
7 | * This code is derived from software contributed to Berkeley by
|
||
8 | * William Jolitz.
|
||
9 | *
|
||
10 | * Redistribution and use in source and binary forms, with or without
|
||
11 | * modification, are permitted provided that the following conditions
|
||
12 | * are met:
|
||
13 | * 1. Redistributions of source code must retain the above copyright
|
||
14 | * notice, this list of conditions and the following disclaimer.
|
||
15 | * 2. Redistributions in binary form must reproduce the above copyright
|
||
16 | * notice, this list of conditions and the following disclaimer in the
|
||
17 | * documentation and/or other materials provided with the distribution.
|
||
18 | * 3. Neither the name of the University nor the names of its contributors
|
||
19 | * may be used to endorse or promote products derived from this software
|
||
20 | * without specific prior written permission.
|
||
21 | *
|
||
22 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||
23 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
24 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
25 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||
26 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
27 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
28 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
29 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
30 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
31 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
32 | * SUCH DAMAGE.
|
||
33 | *
|
||
34 | * @(#)param.h 5.8 (Berkeley) 6/28/91
|
||
35 | */
|
||
36 | |||
37 | #ifndef _I386_PARAM_H_
|
||
38 | #define _I386_PARAM_H_
|
||
39 | |||
40 | /*
|
||
41 | * Machine dependent constants for Intel 386.
|
||
42 | */
|
||
43 | |||
44 | /*
|
||
45 | * MAXCPUS must be defined before cpu.h inclusion. Note: i386 might
|
||
46 | * support more CPUs, but due to the limited KVA space available on
|
||
47 | * i386, such support would be inefficient. Use amd64 instead.
|
||
48 | */
|
||
49 | #define MAXCPUS 32 |
||
50 | |||
51 | #ifdef _KERNEL
|
||
52 | #include <machine/cpu.h> |
||
53 | #endif
|
||
54 | |||
55 | #define _MACHINE i386
|
||
56 | #define MACHINE "i386" |
||
57 | #define _MACHINE_ARCH i386
|
||
58 | #define MACHINE_ARCH "i386" |
||
59 | #define MID_MACHINE MID_I386
|
||
60 | |||
61 | #define ALIGNED_POINTER(p,t) 1 |
||
62 | |||
63 | #define PGSHIFT 12 /* LOG2(NBPG) */ |
||
64 | #define NBPG (1 << PGSHIFT) /* bytes/page */ |
||
65 | #define PGOFSET (NBPG-1) /* byte offset into page */ |
||
66 | #define NPTEPG (NBPG/(sizeof (pt_entry_t))) |
||
67 | |||
68 | #if defined(_KERNEL_OPT)
|
||
69 | #include "opt_kernbase.h" |
||
70 | #endif /* defined(_KERNEL_OPT) */ |
||
71 | |||
72 | #ifdef KERNBASE_LOCORE
|
||
73 | #error "You should only re-define KERNBASE" |
||
74 | #endif
|
||
75 | |||
76 | #ifndef KERNBASE
|
||
77 | #define KERNBASE 0xc0000000UL /* start of kernel virtual space */ |
||
78 | #endif
|
||
79 | |||
80 | #define KERNTEXTOFF (KERNBASE + 0x100000) /* start of kernel text */ |
||
81 | #define BTOPKERNBASE (KERNBASE >> PGSHIFT)
|
||
82 | |||
83 | #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */ |
||
84 | #define DEV_BSIZE (1 << DEV_BSHIFT) |
||
85 | #define BLKDEV_IOSIZE 2048 |
||
86 | #ifndef MAXPHYS
|
||
87 | #define MAXPHYS (64 * 1024) /* max raw I/O transfer size */ |
||
88 | #endif
|
||
89 | |||
90 | #define SSIZE 1 /* initial stack size/NBPG */ |
||
91 | #define SINCR 1 /* increment of stack/NBPG */ |
||
92 | |||
93 | #ifndef UPAGES
|
||
94 | # ifdef DIAGNOSTIC
|
||
95 | # define UPAGES 3 /* 2 + 1 page for redzone */ |
||
96 | # else
|
||
97 | # define UPAGES 2 /* normal pages of u-area */ |
||
98 | # endif /* DIAGNOSTIC */ |
||
99 | #endif /* !defined(UPAGES) */ |
||
100 | #define USPACE (UPAGES * NBPG) /* total size of u-area */ |
||
101 | #define INTRSTACKSIZE 8192 |
||
102 | |||
103 | #ifndef MSGBUFSIZE
|
||
104 | #define MSGBUFSIZE 8*NBPG /* default message buffer size */ |
||
105 | #endif
|
||
106 | |||
107 | /*
|
||
108 | * Constants related to network buffer management.
|
||
109 | * MCLBYTES must be no larger than NBPG (the software page size), and,
|
||
110 | * on machines that exchange pages of input or output buffers with mbuf
|
||
111 | * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
|
||
112 | * of the hardware page size.
|
||
113 | */
|
||
114 | #define MSIZE 256 /* size of an mbuf */ |
||
115 | |||
116 | #ifndef MCLSHIFT
|
||
117 | #define MCLSHIFT 11 /* convert bytes to m_buf clusters */ |
||
118 | /* 2K cluster can hold Ether frame */
|
||
119 | #endif /* MCLSHIFT */ |
||
120 | |||
121 | #define MCLBYTES (1 << MCLSHIFT) /* size of a m_buf cluster */ |
||
122 | |||
123 | #ifndef NMBCLUSTERS_MAX
|
||
124 | #define NMBCLUSTERS_MAX (0x2000000 / MCLBYTES) /* Limit to 64MB for clusters */ |
||
125 | #endif
|
||
126 | |||
127 | #ifndef NFS_RSIZE
|
||
128 | #define NFS_RSIZE 32768 |
||
129 | #endif
|
||
130 | #ifndef NFS_WSIZE
|
||
131 | #define NFS_WSIZE 32768 |
||
132 | #endif
|
||
133 | |||
134 | /*
|
||
135 | * Minimum and maximum sizes of the kernel malloc arena in PAGE_SIZE-sized
|
||
136 | * logical pages.
|
||
137 | */
|
||
138 | #define NKMEMPAGES_MIN_DEFAULT ((16 * 1024 * 1024) >> PAGE_SHIFT) |
||
139 | #define NKMEMPAGES_MAX_DEFAULT ((360 * 1024 * 1024) >> PAGE_SHIFT) |
||
140 | |||
141 | /*
|
||
142 | * Mach derived conversion macros
|
||
143 | */
|
||
144 | #define x86_round_pdr(x) \
|
||
145 | ((((unsigned long)(x)) + (NBPD_L2 - 1)) & ~(NBPD_L2 - 1)) |
||
146 | #define x86_trunc_pdr(x) ((unsigned long)(x) & ~(NBPD_L2 - 1)) |
||
147 | #define x86_btod(x) ((unsigned long)(x) >> L2_SHIFT) |
||
148 | #define x86_dtob(x) ((unsigned long)(x) << L2_SHIFT) |
||
149 | #define x86_round_page(x) ((((paddr_t)(x)) + PGOFSET) & ~PGOFSET)
|
||
150 | #define x86_trunc_page(x) ((paddr_t)(x) & ~PGOFSET)
|
||
151 | #define x86_btop(x) ((paddr_t)(x) >> PGSHIFT)
|
||
152 | #define x86_ptob(x) ((paddr_t)(x) << PGSHIFT)
|
||
153 | |||
154 | #endif /* _I386_PARAM_H_ */ |