rip away illusion of portability in ALIGN
[unix-history] / usr / src / sys / vax / include / param.h
index 8905500..fd04afd 100644 (file)
@@ -1,36 +1,92 @@
-/*
- * Copyright (c) 1982, 1986 Regents of the University of California.
- * All rights reserved.  The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
+/*-
+ * Copyright (c) 1982, 1986 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * %sccs.include.proprietary.c%
  *
  *
- *     @(#)param.h     7.2 (Berkeley) %G%
+ *     @(#)param.h     7.21 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
- * Machine dependent constants for vax.
+ * Machine dependent constants for VAX.
  */
  */
+#define        MACHINE "vax"
 
 
-#ifndef ENDIAN
 /*
 /*
- * Definitions for byte order,
- * according to byte significance from low address to high.
+ * Round p (pointer or byte index) up to a correctly-aligned value for all
+ * data types (int, long, ...).   The result is u_int and must be cast to
+ * any desired pointer type.
  */
  */
-#define        LITTLE  1234            /* least-significant byte first (vax) */
-#define        BIG     4321            /* most-significant byte first */
-#define        PDP     3412            /* LSB first in word, MSW first in long (pdp) */
-#define        ENDIAN  LITTLE          /* byte order on vax */
+#define        ALIGN(p)        (((u_int)(p) + 3) &~ 3)
+
+#define        KERNBASE        0x80000000      /* start of kernel virtual */
+#define        BTOPKERNBASE    ((u_long)KERNBASE >> PGSHIFT)
+
+#define        NBPG            512             /* bytes/page */
+#define        PGOFSET         (NBPG-1)        /* byte offset into page */
+#define        PGSHIFT         9               /* LOG2(NBPG) */
+#define        NPTEPG          (NBPG/(sizeof (struct pte)))
+
+#define        KERNBASE        0x80000000      /* start of kernel virtual */
+#define        KERNTEXTOFF     KERNBASE        /* start of kernel text */
+#define        BTOPKERNBASE    ((u_long)KERNBASE >> PGSHIFT)
 
 
-#define        NBPG    512             /* bytes/page */
-#define        PGOFSET (NBPG-1)        /* byte offset into page */
-#define        PGSHIFT 9               /* LOG2(NBPG) */
+#ifndef SECSIZE
+#define        DEV_BSIZE       512
+#define        DEV_BSHIFT      9               /* log2(DEV_BSIZE) */
+#define BLKDEV_IOSIZE  2048
+#define        MAXPHYS         (63 * 1024)     /* max raw I/O transfer size */
+#else SECSIZE
+/*
+ * Devices without disk labels and the swap virtual device
+ * use "blocks" of exactly pagesize.  Devices with disk labels
+ * use device-dependent sector sizes for block and character interfaces.
+ */
+#define        DEV_BSIZE       NBPG
+#define        DEV_BSHIFT      PGSHIFT         /* log2(DEV_BSIZE) */
+#define BLKDEV_IOSIZE  NBPG            /* NBPG for unlabeled block devices */
+#endif SECSIZE
+#define        MAXPHYS         (63 * 1024)     /* max raw I/O transfer size */
 
 #define        CLSIZE          2
 #define        CLSIZELOG2      1
 
 
 #define        CLSIZE          2
 #define        CLSIZELOG2      1
 
-#define        SSIZE   4               /* initial stack size/NBPG */
-#define        SINCR   4               /* increment of stack/NBPG */
+/* NOTE: SSIZE, SINCR and UPAGES must be multiples of CLSIZE */
+#define        SSIZE           4               /* initial stack size/NBPG */
+#define        SINCR           4               /* increment of stack/NBPG */
 
 
-#define        UPAGES  10              /* pages of u-area */
+#define        UPAGES          16              /* pages of u-area */
+
+/*
+ * Constants related to network buffer management.
+ * MCLBYTES must be no larger than CLBYTES (the software page size), and,
+ * on machines that exchange pages of input or output buffers with mbuf
+ * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
+ * of the hardware page size.
+ */
+#define        MSIZE           128             /* size of an mbuf */
+#define        MAPPED_MBUFS                    /* can do scatter-gather I/O */
+#if CLBYTES > 1024
+#define        MCLBYTES        1024
+#define        MCLSHIFT        10
+#define        MCLOFSET        (MCLBYTES - 1)
+#else
+#define        MCLBYTES        CLBYTES
+#define        MCLSHIFT        CLSHIFT
+#define        MCLOFSET        CLOFSET
+#endif
+#ifdef GATEWAY
+#define        NMBCLUSTERS     512             /* map size, max cluster allocation */
+#else
+#define        NMBCLUSTERS     256             /* map size, max cluster allocation */
+#endif
+
+/*
+ * Size of kernel malloc arena in CLBYTES-sized logical pages
+ */ 
+#ifndef NKMEMCLUSTERS
+#define        NKMEMCLUSTERS   (512*1024/CLBYTES)
+#endif
 
 /*
  * Some macros for units conversion
 
 /*
  * Some macros for units conversion
 #define        ctos(x) (x)
 #define        stoc(x) (x)
 
 #define        ctos(x) (x)
 #define        stoc(x) (x)
 
+#ifndef SECSIZE
 /* Core clicks (512 bytes) to disk blocks */
 #define        ctod(x) (x)
 #define        dtoc(x) (x)
 /* Core clicks (512 bytes) to disk blocks */
 #define        ctod(x) (x)
 #define        dtoc(x) (x)
-#define        dtob(x) ((x)<<9)
+#define        dtob(x) ((x)<<PGSHIFT)
+#else SECSIZE
+/* Core clicks (512 bytes) to disk blocks; deprecated */
+#define        ctod(x) (x)                             /* XXX */
+#define        dtoc(x) (x)                             /* XXX */
+#define        dtob(x) ((x)<<PGSHIFT)                  /* XXX */
+#endif SECSIZE
 
 /* clicks to bytes */
 #define        ctob(x) ((x)<<9)
 
 /* clicks to bytes */
 #define        ctob(x) ((x)<<9)
 /* bytes to clicks */
 #define        btoc(x) ((((unsigned)(x)+511)>>9))
 
 /* bytes to clicks */
 #define        btoc(x) ((((unsigned)(x)+511)>>9))
 
+#ifndef SECSIZE
+#define        btodb(bytes)                    /* calculates (bytes / DEV_BSIZE) */ \
+       ((unsigned)(bytes) >> DEV_BSHIFT)
+#define        dbtob(db)                       /* calculates (db * DEV_BSIZE) */ \
+       ((unsigned)(db) << DEV_BSHIFT)
+
+/*
+ * Map a ``block device block'' to a file system block.
+ * This should be device dependent, and will be if we
+ * add an entry to cdevsw/bdevsw for that purpose.
+ * For now though just use DEV_BSIZE.
+ */
+#define        bdbtofsb(bn)    ((bn) / (BLKDEV_IOSIZE/DEV_BSIZE))
+#else SECSIZE
+/* bytes to "disk blocks" and back; deprecated */
+#define        btodb(bytes)    ((unsigned)(bytes) >> DEV_BSHIFT)       /* XXX */
+#define        dbtob(db)       ((unsigned)(db) << DEV_BSHIFT)          /* XXX */
+#endif SECSIZE
+
 /*
  * Macros to decode processor status word.
  */
 /*
  * Macros to decode processor status word.
  */
@@ -62,7 +144,6 @@ int  cpuspeed;
 #define        DELAY(n)        { register int N = cpuspeed * (n); while (--N > 0); }
 #endif
 
 #define        DELAY(n)        { register int N = cpuspeed * (n); while (--N > 0); }
 #endif
 
-#else KERNEL
+#else
 #define        DELAY(n)        { register int N = (n); while (--N > 0); }
 #define        DELAY(n)        { register int N = (n); while (--N > 0); }
-#endif KERNEL
 #endif
 #endif