BSD 4_3_Net_2 release
[unix-history] / usr / src / sys / hp300 / include / param.h
index 4d57f24..c4f7160 100644 (file)
@@ -7,11 +7,37 @@
  * the Systems Programming Group of the University of Utah Computer
  * Science Department.
  *
  * the Systems Programming Group of the University of Utah Computer
  * Science Department.
  *
- * %sccs.include.redist.c%
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
  *
  * from: Utah $Hdr: machparam.h 1.11 89/08/14$
  *
  *
  * from: Utah $Hdr: machparam.h 1.11 89/08/14$
  *
- *     @(#)param.h     7.3 (Berkeley) %G%
+ *     @(#)param.h     7.8 (Berkeley) 6/28/91
  */
 
 /*
  */
 
 /*
  */
 #define        MACHINE "hp300"
 
  */
 #define        MACHINE "hp300"
 
+/*
+ * 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        ALIGN(p)        (((u_int)(p) + (sizeof(int) - 1)) &~ (sizeof(int) - 1))
+
 #define        NBPG            4096            /* bytes/page */
 #define        PGOFSET         (NBPG-1)        /* byte offset into page */
 #define        PGSHIFT         12              /* LOG2(NBPG) */
 #define        NBPG            4096            /* bytes/page */
 #define        PGOFSET         (NBPG-1)        /* byte offset into page */
 #define        PGSHIFT         12              /* LOG2(NBPG) */
@@ -39,6 +72,7 @@
 #define        CLSIZE          1
 #define        CLSIZELOG2      0
 
 #define        CLSIZE          1
 #define        CLSIZELOG2      0
 
+/* NOTE: SSIZE, SINCR and UPAGES must be multiples of CLSIZE */
 #define        SSIZE           1               /* initial stack size/NBPG */
 #define        SINCR           1               /* increment of stack/NBPG */
 
 #define        SSIZE           1               /* initial stack size/NBPG */
 #define        SINCR           1               /* increment of stack/NBPG */
 
  * Size of kernel malloc arena in CLBYTES-sized logical pages
  */ 
 #ifndef NKMEMCLUSTERS
  * Size of kernel malloc arena in CLBYTES-sized logical pages
  */ 
 #ifndef NKMEMCLUSTERS
-#define        NKMEMCLUSTERS   (512*1024/CLBYTES)
+#define        NKMEMCLUSTERS   (2048*1024/CLBYTES)
 #endif
 
 #endif
 
-/*
- * Some macros for units conversion
- */
-/* Core clicks (4096 bytes) to segments and vice versa */
-#define        ctos(x) (x)
-#define        stoc(x) (x)
-
-/* Core clicks (4096 bytes) to disk blocks */
+/* pages ("clicks") (4096 bytes) to disk blocks */
 #define        ctod(x) ((x)<<(PGSHIFT-DEV_BSHIFT))
 #define        dtoc(x) ((x)>>(PGSHIFT-DEV_BSHIFT))
 #define        dtob(x) ((x)<<DEV_BSHIFT)
 
 #define        ctod(x) ((x)<<(PGSHIFT-DEV_BSHIFT))
 #define        dtoc(x) ((x)>>(PGSHIFT-DEV_BSHIFT))
 #define        dtob(x) ((x)<<DEV_BSHIFT)
 
-/* clicks to bytes */
+/* pages to bytes */
 #define        ctob(x) ((x)<<PGSHIFT)
 
 #define        ctob(x) ((x)<<PGSHIFT)
 
-/* bytes to clicks */
+/* bytes to pages */
 #define        btoc(x) (((unsigned)(x)+(NBPG-1))>>PGSHIFT)
 
 #define        btodb(bytes)                    /* calculates (bytes / DEV_BSIZE) */ \
 #define        btoc(x) (((unsigned)(x)+(NBPG-1))>>PGSHIFT)
 
 #define        btodb(bytes)                    /* calculates (bytes / DEV_BSIZE) */ \
 
 /*
  * Map a ``block device block'' to a file system block.
 
 /*
  * 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.
+ * This should be device dependent, and should use the bsize
+ * field from the disk label.
  * For now though just use DEV_BSIZE.
  */
 #define        bdbtofsb(bn)    ((bn) / (BLKDEV_IOSIZE/DEV_BSIZE))
  * For now though just use DEV_BSIZE.
  */
 #define        bdbtofsb(bn)    ((bn) / (BLKDEV_IOSIZE/DEV_BSIZE))
 #define hp300_ptob(x)          ((unsigned)(x) << PGSHIFT)
 
 /*
 #define hp300_ptob(x)          ((unsigned)(x) << PGSHIFT)
 
 /*
- * Macros to decode processor status word.
+ * spl functions; all but spl0 are done in-line
  */
  */
-#define        USERMODE(ps)    (((ps) & PSL_S) == 0)
-#define        BASEPRI(ps)     (((ps) & PSL_IPL7) == 0)
+#include <machine/psl.h>
+
+#define _spl(s) \
+({ \
+        register int _spl_r; \
+\
+        asm __volatile ("clrl %0; movew sr,%0; movew %1,sr" : \
+                "&=d" (_spl_r) : "di" (s)); \
+        _spl_r; \
+})
+
+/* spl0 requires checking for software interrupts */
+#define spl1()  _spl(PSL_S|PSL_IPL1)
+#define spl2()  _spl(PSL_S|PSL_IPL2)
+#define spl3()  _spl(PSL_S|PSL_IPL3)
+#define spl4()  _spl(PSL_S|PSL_IPL4)
+#define spl5()  _spl(PSL_S|PSL_IPL5)
+#define spl6()  _spl(PSL_S|PSL_IPL6)
+#define spl7()  _spl(PSL_S|PSL_IPL7)
+
+#define splsoftclock()  spl1()
+#define splnet()        spl1()
+#define splbio()        spl5()
+#define splimp()        spl5()
+#define spltty()        spl5()
+#define splclock()      spl6()
+#define splvm()         spl6()
+#define splhigh()       spl7()
+#define splsched()      spl7()
+
+/* watch out for side effects */
+#define splx(s)         (s & PSL_IPL ? _spl(s) : spl0())
 
 #ifdef KERNEL
 #ifndef LOCORE
 
 #ifdef KERNEL
 #ifndef LOCORE
@@ -125,9 +182,9 @@ 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
 
 #ifdef HPUXCOMPAT
 /*
 
 #ifdef HPUXCOMPAT
 /*
@@ -136,6 +193,6 @@ int cpuspeed;
  */
 #define HPMMMASK       0xF0000000
 #define ISHPMMADDR(v)  \
  */
 #define HPMMMASK       0xF0000000
 #define ISHPMMADDR(v)  \
-    ((u.u_pcb.pcb_flags&PCB_HPUXMMAP) && ((unsigned)(v)&HPMMMASK) != HPMMMASK)
+    ((curproc->p_addr->u_pcb.pcb_flags&PCB_HPUXMMAP) && ((unsigned)(v)&HPMMMASK) != HPMMMASK)
 #define HPMMBASEADDR(v)        ((unsigned)(v) & ~HPMMMASK)
 #endif
 #define HPMMBASEADDR(v)        ((unsigned)(v) & ~HPMMMASK)
 #endif