/* $OpenBSD: param.h,v 1.11 1998/08/30 22:05:35 millert Exp $ */ /*- * Copyright (c) 1988 University of Utah. * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software contributed to Berkeley by * the Systems Programming Group of the University of Utah Computer * Science Department and Ralph Campbell. * * 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. * 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: @(#)param.h 8.1 (Berkeley) 6/10/93 * JNPR: param.h,v 1.6.2.1 2007/09/10 07:49:36 girish * $FreeBSD: head/sys/mips/include/param.h 178172 2008-04-13 07:27:37Z imp $ */ #ifndef _MACHINE_PARAM_H_ #define _MACHINE_PARAM_H_ #include #ifdef _KERNEL #ifdef _LOCORE #include #else #include #endif #endif #define __PCI_REROUTE_INTERRUPT #ifndef MACHINE #define MACHINE "mips" #endif #ifndef MACHINE_ARCH #define MACHINE_ARCH "mips" #endif /* * OBJFORMAT_NAMES is a comma-separated list of the object formats * that are supported on the architecture. */ #define OBJFORMAT_NAMES "elf" #define OBJFORMAT_DEFAULT "elf" #define MID_MACHINE 0 /* None but has to be defined */ #ifdef SMP #define MAXSMPCPU 16 #define MAXCPU MAXSMPCPU #else #define MAXSMPCPU 1 #define MAXCPU 1 #endif /* * 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 _ALIGNBYTES 7 #define _ALIGN(p) (((u_int)(p) + _ALIGNBYTES) &~ _ALIGNBYTES) #define ALIGNED_POINTER(p, t) ((((u_int32_t)(p)) & (sizeof (t) - 1)) == 0) #define ALIGNBYTES _ALIGNBYTES #define ALIGN(p) _ALIGN(p) #define NBPG 4096 /* bytes/page */ #define PGOFSET (NBPG-1) /* byte offset into page */ #define PGSHIFT 12 /* LOG2(NBPG) */ #define PAGE_SHIFT 12 /* LOG2(PAGE_SIZE) */ #define PAGE_SIZE (1<> PGSHIFT) #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */ #define BLKDEV_IOSIZE 2048 #define DFLTPHYS (64 * 1024) /* default max raw I/O transfer size */ #define MAXPHYS (128 * 1024) /* max raw I/O transfer size */ #define MAXDUMPPGS 1 #define CLSIZE 1 #define CLBYTES (CLSIZE * NBPG) #define CLSIZELOG2 0 /* * NOTE: In FreeBSD, Uarea's don't have a fixed address. * Therefore, any code imported from OpenBSD which depends on * UADDR, UVPN and KERNELSTACK requires porting. */ #define KSTACK_PAGES 3 /* kernel stack*/ #define KSTACK_GUARD_PAGES 0 /* pages of kstack guard; 0 disables */ #define UPAGES 2 /* * 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. */ #ifndef MSIZE #define MSIZE 256 /* size of an mbuf */ #endif /* MSIZE */ #ifndef MCLSHIFT #define MCLSHIFT 11 #endif /* MCLSHIFT */ #define MCLBYTES (1 << MCLSHIFT) /* enough for whole Ethernet packet */ #define MCLOFSET (MCLBYTES - 1) /* * Size of kernel malloc arena in CLBYTES-sized logical pages */ #ifndef NKMEMCLUSTERS #define NKMEMCLUSTERS (4096*1024/CLBYTES) #endif /* pages ("clicks") (4096 bytes) to disk blocks */ #define ctod(x) ((x) << (PGSHIFT - DEV_BSHIFT)) #define dtoc(x) ((x) >> (PGSHIFT - DEV_BSHIFT)) /* pages to bytes */ #define ctob(x) ((x) << PGSHIFT) #define btoc(x) (((x) + PGOFSET) >> PGSHIFT) /* bytes to disk blocks */ #define btodb(x) ((x) >> DEV_BSHIFT) #define dbtob(x) ((x) << DEV_BSHIFT) /* * Map a ``block device block'' to a file system block. * 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)) /* * Conversion macros */ #define mips_round_page(x) ((((unsigned)(x)) + NBPG - 1) & ~(NBPG-1)) #define mips_trunc_page(x) ((unsigned)(x) & ~(NBPG-1)) #define mips_btop(x) ((unsigned)(x) >> PGSHIFT) #define mips_ptob(x) ((unsigned)(x) << PGSHIFT) #define round_page mips_round_page #define trunc_page mips_trunc_page #define atop(x) ((unsigned long)(x) >> PAGE_SHIFT) #define ptoa(x) ((unsigned long)(x) << PAGE_SHIFT) #define pgtok(x) ((x) * (PAGE_SIZE / 1024)) #ifndef _KERNEL #define DELAY(n) { register int N = (n); while (--N > 0); } #endif /* !_KERNEL */ #endif /* !_MACHINE_PARAM_H_ */