home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 2 / FFMCD02.bin / useful / include / machine / param.h < prev    next >
C/C++ Source or Header  |  1993-09-05  |  6KB  |  171 lines

  1. /*
  2.  * Copyright (c) 1988 University of Utah.
  3.  * Copyright (c) 1982, 1986, 1990 The Regents of the University of California.
  4.  * All rights reserved.
  5.  *
  6.  * This code is derived from software contributed to Berkeley by
  7.  * the Systems Programming Group of the University of Utah Computer
  8.  * Science Department.
  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. All advertising materials mentioning features or use of this software
  19.  *    must display the following acknowledgement:
  20.  *    This product includes software developed by the University of
  21.  *    California, Berkeley and its contributors.
  22.  * 4. Neither the name of the University nor the names of its contributors
  23.  *    may be used to endorse or promote products derived from this software
  24.  *    without specific prior written permission.
  25.  *
  26.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  27.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  28.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  29.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  30.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  31.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  32.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  33.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  34.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  35.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  36.  * SUCH DAMAGE.
  37.  *
  38.  * from: Utah $Hdr: machparam.h 1.11 89/08/14$
  39.  *
  40.  *    @(#)param.h    7.8 (Berkeley) 6/28/91
  41.  */
  42.  
  43. /*
  44.  * Machine dependent constants for amiga
  45.  */
  46. #define    MACHINE "amiga"
  47.  
  48. /*
  49.  * Round p (pointer or byte index) up to a correctly-aligned value
  50.  * for all data types (int, long, ...).   The result is u_int and
  51.  * must be cast to any desired pointer type.
  52.  */
  53. #define    ALIGN(p)    (((u_int)(p) + (sizeof(int) - 1)) &~ (sizeof(int) - 1))
  54.  
  55. #define    NBPG        4096        /* bytes/page */
  56. #define    PGOFSET        (NBPG-1)    /* byte offset into page */
  57. #define    PGSHIFT        12        /* LOG2(NBPG) */
  58. #define    NPTEPG        (NBPG/(sizeof (struct pte)))
  59.  
  60. #define NBSEG        (1024*NBPG)    /* bytes/segment */
  61. #define    SEGOFSET    (NBSEG-1)    /* byte offset into segment */
  62. #define    SEGSHIFT    22        /* LOG2(NBSEG) */
  63.  
  64. #define    KERNBASE    0x00000000    /* start of kernel virtual */
  65. #define    BTOPKERNBASE    ((u_long)KERNBASE >> PGSHIFT)
  66.  
  67. #define    DEV_BSIZE    512
  68. #define    DEV_BSHIFT    9        /* log2(DEV_BSIZE) */
  69. #define BLKDEV_IOSIZE    2048
  70. #define    MAXPHYS        (64 * 1024)    /* max raw I/O transfer size */
  71.  
  72. #define    CLSIZE        1
  73. #define    CLSIZELOG2    0
  74.  
  75. /* NOTE: SSIZE, SINCR and UPAGES must be multiples of CLSIZE */
  76. #define    SSIZE        1        /* initial stack size/NBPG */
  77. #define    SINCR        1        /* increment of stack/NBPG */
  78.  
  79. #define    UPAGES        3        /* pages of u-area */
  80.  
  81. /*
  82.  * Constants related to network buffer management.
  83.  * MCLBYTES must be no larger than CLBYTES (the software page size), and,
  84.  * on machines that exchange pages of input or output buffers with mbuf
  85.  * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
  86.  * of the hardware page size.
  87.  */
  88. #define    MSIZE        128        /* size of an mbuf */
  89. #define    MCLBYTES    1024
  90. #define    MCLSHIFT    10
  91. #define    MCLOFSET    (MCLBYTES - 1)
  92. #ifndef NMBCLUSTERS
  93. #ifdef GATEWAY
  94. #define    NMBCLUSTERS    512        /* map size, max cluster allocation */
  95. #else
  96. #define    NMBCLUSTERS    256        /* map size, max cluster allocation */
  97. #endif
  98. #endif
  99.  
  100. /*
  101.  * Size of kernel malloc arena in CLBYTES-sized logical pages
  102.  */ 
  103. #ifndef NKMEMCLUSTERS
  104. #define    NKMEMCLUSTERS    (2048*1024/CLBYTES)
  105. #endif
  106.  
  107. /* pages ("clicks") (4096 bytes) to disk blocks */
  108. #define    ctod(x)    ((x)<<(PGSHIFT-DEV_BSHIFT))
  109. #define    dtoc(x)    ((x)>>(PGSHIFT-DEV_BSHIFT))
  110. #define    dtob(x)    ((x)<<DEV_BSHIFT)
  111.  
  112. /* pages to bytes */
  113. #define    ctob(x)    ((x)<<PGSHIFT)
  114.  
  115. /* bytes to pages */
  116. #define    btoc(x)    (((unsigned)(x)+(NBPG-1))>>PGSHIFT)
  117.  
  118. #define    btodb(bytes)             /* calculates (bytes / DEV_BSIZE) */ \
  119.     ((unsigned)(bytes) >> DEV_BSHIFT)
  120. #define    dbtob(db)            /* calculates (db * DEV_BSIZE) */ \
  121.     ((unsigned)(db) << DEV_BSHIFT)
  122.  
  123. /*
  124.  * Map a ``block device block'' to a file system block.
  125.  * This should be device dependent, and should use the bsize
  126.  * field from the disk label.
  127.  * For now though just use DEV_BSIZE.
  128.  */
  129. #define    bdbtofsb(bn)    ((bn) / (BLKDEV_IOSIZE/DEV_BSIZE))
  130.  
  131. /*
  132.  * Mach derived conversion macros
  133.  */
  134. #define hp300_round_seg(x)    ((((unsigned)(x)) + NBSEG - 1) & ~(NBSEG-1))
  135. #define hp300_trunc_seg(x)    ((unsigned)(x) & ~(NBSEG-1))
  136. #define hp300_round_page(x)    ((((unsigned)(x)) + NBPG - 1) & ~(NBPG-1))
  137. #define hp300_trunc_page(x)    ((unsigned)(x) & ~(NBPG-1))
  138. #define hp300_btos(x)        ((unsigned)(x) >> SEGSHIFT)
  139. #define hp300_stob(x)        ((unsigned)(x) << SEGSHIFT)
  140. #define hp300_btop(x)        ((unsigned)(x) >> PGSHIFT)
  141. #define hp300_ptob(x)        ((unsigned)(x) << PGSHIFT)
  142.  
  143. #if 0
  144. #define splsoftclock()  spl1()
  145. #define splnet()        spl1()
  146. #define splbio()        spl5()
  147. #define splimp()        spl5()
  148. #define spltty()        spl5()
  149. #define splclock()      spl6()
  150. #define splvm()         spl6()
  151. #define splhigh()       spl7()
  152. #define splsched()      spl7()
  153.  
  154. /* watch out for side effects */
  155. #define splx(s)         (s & PSL_IPL ? _spl(s) : spl0())
  156. #endif
  157.  
  158. #ifdef KERNEL
  159. #ifndef LOCORE
  160. #ifndef __EXTERN
  161. #define __EXTERN extern
  162. #endif
  163. __EXTERN int    cpuspeed;
  164. #undef __EXTERN
  165. #define    DELAY(n)    { register int N = cpuspeed * (n); while (--N > 0); }
  166. #endif
  167.  
  168. #else
  169. #define    DELAY(n)    { register int N = (n); while (--N > 0); }
  170. #endif
  171.