|
|
1.1 root 1: /*
2: * Copyright (c) 1982, 1986, 1988 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)machparam.h 7.6 (Berkeley) 5/10/90
7: */
8:
9: /*
10: * Machine dependent constants for TAHOE.
11: */
12: #define MACHINE "tahoe"
13:
14: #ifndef BYTE_ORDER
15: #include <machine/endian.h>
16: #endif
17:
18: #include <machine/machlimits.h>
19:
20: /*
21: * Round p (pointer or byte index) up to a correctly-aligned value
22: * for all data types (int, long, ...). The result is u_int and
23: * must be cast to any desired pointer type.
24: */
25: #define ALIGN(p) (((u_int)(p) + (sizeof(int) - 1)) &~ (sizeof(int) - 1))
26:
27: #define NBPG 1024 /* bytes/page */
28: #define PGOFSET (NBPG-1) /* byte offset into page */
29: #define PGSHIFT 10 /* LOG2(NBPG) */
30: #define NPTEPG (NBPG/(sizeof (struct pte)))
31:
32: #define KERNBASE 0xc0000000 /* start of kernel virtual */
33: #define KERNTEXTOFF (KERNBASE + 0x800) /* start of kernel text */
34: #define BTOPKERNBASE ((u_long)KERNBASE >> PGSHIFT)
35:
36: #define DEV_BSIZE 1024
37: #define DEV_BSHIFT 10 /* log2(DEV_BSIZE) */
38: #define BLKDEV_IOSIZE 1024 /* NBPG for physical controllers */
39: #define MAXPHYS (64 * 1024) /* max raw I/O transfer size */
40:
41: #define CLSIZE 1
42: #define CLSIZELOG2 0
43:
44: #define SSIZE 2 /* initial stack size/NBPG */
45: #define SINCR 2 /* increment of stack/NBPG */
46: #define UPAGES 8 /* pages of u-area (2 stack pages) */
47:
48: /*
49: * Constants related to network buffer management.
50: * MCLBYTES must be no larger than CLBYTES (the software page size), and,
51: * on machines that exchange pages of input or output buffers with mbuf
52: * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
53: * of the hardware page size.
54: */
55: #define MSIZE 128 /* size of an mbuf */
56: #define MAPPED_MBUFS /* can do scatter-gather I/O */
57: #if CLBYTES > 1024
58: #define MCLBYTES 1024
59: #define MCLSHIFT 10
60: #define MCLOFSET (MCLBYTES - 1)
61: #else
62: #define MCLBYTES CLBYTES
63: #define MCLSHIFT CLSHIFT
64: #define MCLOFSET CLOFSET
65: #endif
66: #ifdef GATEWAY
67: #define NMBCLUSTERS 512 /* map size, max cluster allocation */
68: #else
69: #define NMBCLUSTERS 256 /* map size, max cluster allocation */
70: #endif
71:
72: #define MAXCKEY 255 /* maximal allowed code key */
73: #define MAXDKEY 255 /* maximal allowed data key */
74: #define NCKEY (MAXCKEY+1) /* # code keys, including 0 (reserved) */
75: #define NDKEY (MAXDKEY+1) /* # data keys, including 0 (reserved) */
76:
77: /*
78: * Size of kernel malloc arena in CLBYTES-sized logical pages
79: */
80: #ifndef NKMEMCLUSTERS
81: #define NKMEMCLUSTERS (512*1024/CLBYTES)
82: #endif
83:
84: /*
85: * Some macros for units conversion
86: */
87: /* Core clicks (1024 bytes) to segments and vice versa */
88: #define ctos(x) (x)
89: #define stoc(x) (x)
90:
91: /* Core clicks (1024 bytes) to disk blocks */
92: #define ctod(x) (x)
93: #define dtoc(x) (x)
94: #define dtob(x) ((x)<<PGSHIFT)
95:
96: /* clicks to bytes */
97: #define ctob(x) ((x)<<PGSHIFT)
98:
99: /* bytes to clicks */
100: #define btoc(x) ((((unsigned)(x)+NBPG-1) >> PGSHIFT))
101:
102: #define btodb(bytes) /* calculates (bytes / DEV_BSIZE) */ \
103: ((unsigned)(bytes) >> DEV_BSHIFT)
104: #define dbtob(db) /* calculates (db * DEV_BSIZE) */ \
105: ((unsigned)(db) << DEV_BSHIFT)
106:
107: /*
108: * Map a ``block device block'' to a file system block.
109: * This should be device dependent, and will be if we
110: * add an entry to cdevsw/bdevsw for that purpose.
111: * For now though just use DEV_BSIZE.
112: */
113: #define bdbtofsb(bn) ((bn) / (BLKDEV_IOSIZE/DEV_BSIZE))
114:
115: /*
116: * Macros to decode processor status word.
117: */
118: #define USERMODE(ps) (((ps) & PSL_CURMOD) == PSL_CURMOD)
119: #define BASEPRI(ps) (((ps) & PSL_IPL) == 0)
120:
121: #define DELAY(n) { register int N = 3*(n); while (--N > 0); }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.