|
|
1.1 ! root 1: /*- ! 2: * Copyright (c) 1990 The Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * This code is derived from software contributed to Berkeley by ! 6: * William Jolitz. ! 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 the University of ! 19: * California, Berkeley and its contributors. ! 20: * 4. Neither the name of the University nor the names of its contributors ! 21: * may be used to endorse or promote products derived from this software ! 22: * without specific prior written permission. ! 23: * ! 24: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ! 25: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ! 26: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! 27: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ! 28: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! 29: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ! 30: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ! 31: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ! 32: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ! 33: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ! 34: * SUCH DAMAGE. ! 35: * ! 36: * @(#)param.h 5.8 (Berkeley) 6/28/91 ! 37: */ ! 38: ! 39: /* ! 40: * Machine dependent constants for Intel 386. ! 41: */ ! 42: ! 43: #define MACHINE "i386" ! 44: ! 45: /* ! 46: * Round p (pointer or byte index) up to a correctly-aligned value ! 47: * for all data types (int, long, ...). The result is u_int and ! 48: * must be cast to any desired pointer type. ! 49: */ ! 50: #define ALIGN(p) (((u_int)(p) + (sizeof(int) - 1)) &~ (sizeof(int) - 1)) ! 51: ! 52: #define NBPG 4096 /* bytes/page */ ! 53: #define PGOFSET (NBPG-1) /* byte offset into page */ ! 54: #define PGSHIFT 12 /* LOG2(NBPG) */ ! 55: #define NPTEPG (NBPG/(sizeof (struct pte))) ! 56: ! 57: #define NBPDR (1024*NBPG) /* bytes/page dir */ ! 58: #define PDROFSET (NBPDR-1) /* byte offset into page dir */ ! 59: #define PDRSHIFT 22 /* LOG2(NBPDR) */ ! 60: ! 61: #define KERNBASE 0xFE000000 /* start of kernel virtual */ ! 62: #define BTOPKERNBASE ((u_long)KERNBASE >> PGSHIFT) ! 63: ! 64: #define DEV_BSIZE 512 ! 65: #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */ ! 66: #define BLKDEV_IOSIZE 2048 ! 67: #define MAXPHYS (64 * 1024) /* max raw I/O transfer size */ ! 68: ! 69: #define CLSIZE 1 ! 70: #define CLSIZELOG2 0 ! 71: ! 72: /* NOTE: SSIZE, SINCR and UPAGES must be multiples of CLSIZE */ ! 73: #define SSIZE 1 /* initial stack size/NBPG */ ! 74: #define SINCR 1 /* increment of stack/NBPG */ ! 75: ! 76: #define UPAGES 2 /* pages of u-area */ ! 77: ! 78: /* ! 79: * Constants related to network buffer management. ! 80: * MCLBYTES must be no larger than CLBYTES (the software page size), and, ! 81: * on machines that exchange pages of input or output buffers with mbuf ! 82: * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple ! 83: * of the hardware page size. ! 84: */ ! 85: #define MSIZE 128 /* size of an mbuf */ ! 86: #define MCLBYTES 1024 ! 87: #define MCLSHIFT 10 ! 88: #define MCLOFSET (MCLBYTES - 1) ! 89: #ifndef NMBCLUSTERS ! 90: #ifdef GATEWAY ! 91: #define NMBCLUSTERS 512 /* map size, max cluster allocation */ ! 92: #else ! 93: #define NMBCLUSTERS 256 /* map size, max cluster allocation */ ! 94: #endif ! 95: #endif ! 96: ! 97: /* ! 98: * Size of kernel malloc arena in CLBYTES-sized logical pages ! 99: */ ! 100: #ifndef NKMEMCLUSTERS ! 101: #define NKMEMCLUSTERS (2048*1024/CLBYTES) ! 102: #endif ! 103: /* ! 104: * Some macros for units conversion ! 105: */ ! 106: /* Core clicks (4096 bytes) to segments and vice versa */ ! 107: #define ctos(x) (x) ! 108: #define stoc(x) (x) ! 109: ! 110: /* Core clicks (4096 bytes) to disk blocks */ ! 111: #define ctod(x) ((x)<<(PGSHIFT-DEV_BSHIFT)) ! 112: #define dtoc(x) ((x)>>(PGSHIFT-DEV_BSHIFT)) ! 113: #define dtob(x) ((x)<<DEV_BSHIFT) ! 114: ! 115: /* clicks to bytes */ ! 116: #define ctob(x) ((x)<<PGSHIFT) ! 117: ! 118: /* bytes to clicks */ ! 119: #define btoc(x) (((unsigned)(x)+(NBPG-1))>>PGSHIFT) ! 120: ! 121: #define btodb(bytes) /* calculates (bytes / DEV_BSIZE) */ \ ! 122: ((unsigned)(bytes) >> DEV_BSHIFT) ! 123: #define dbtob(db) /* calculates (db * DEV_BSIZE) */ \ ! 124: ((unsigned)(db) << DEV_BSHIFT) ! 125: ! 126: /* ! 127: * Map a ``block device block'' to a file system block. ! 128: * This should be device dependent, and will be if we ! 129: * add an entry to cdevsw/bdevsw for that purpose. ! 130: * For now though just use DEV_BSIZE. ! 131: */ ! 132: #define bdbtofsb(bn) ((bn) / (BLKDEV_IOSIZE/DEV_BSIZE)) ! 133: ! 134: /* ! 135: * Mach derived conversion macros ! 136: */ ! 137: #define i386_round_pdr(x) ((((unsigned)(x)) + NBPDR - 1) & ~(NBPDR-1)) ! 138: #define i386_trunc_pdr(x) ((unsigned)(x) & ~(NBPDR-1)) ! 139: #define i386_round_page(x) ((((unsigned)(x)) + NBPG - 1) & ~(NBPG-1)) ! 140: #define i386_trunc_page(x) ((unsigned)(x) & ~(NBPG-1)) ! 141: #define i386_btod(x) ((unsigned)(x) >> PDRSHIFT) ! 142: #define i386_dtob(x) ((unsigned)(x) << PDRSHIFT) ! 143: #define i386_btop(x) ((unsigned)(x) >> PGSHIFT) ! 144: #define i386_ptob(x) ((unsigned)(x) << PGSHIFT) ! 145: ! 146: #ifdef KERNEL ! 147: #ifndef LOCORE ! 148: int cpuspeed; ! 149: #endif ! 150: #define DELAY(n) { register int N = cpuspeed * (n); while (--N > 0); } ! 151: ! 152: #else ! 153: #define DELAY(n) { register int N = (n); while (--N > 0); } ! 154: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.