Annotation of sys/arch/powerpc/include/param.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: param.h,v 1.29 2007/05/28 21:02:49 thib Exp $ */
2: /* $NetBSD: param.h,v 1.1 1996/09/30 16:34:28 ws Exp $ */
3:
4: /*-
5: * Copyright (C) 1995, 1996 Wolfgang Solfrank.
6: * Copyright (C) 1995, 1996 TooLs GmbH.
7: * All rights reserved.
8: *
9: * Redistribution and use in source and binary forms, with or without
10: * modification, are permitted provided that the following conditions
11: * are met:
12: * 1. Redistributions of source code must retain the above copyright
13: * notice, this list of conditions and the following disclaimer.
14: * 2. Redistributions in binary form must reproduce the above copyright
15: * notice, this list of conditions and the following disclaimer in the
16: * documentation and/or other materials provided with the distribution.
17: * 3. All advertising materials mentioning features or use of this software
18: * must display the following acknowledgement:
19: * This product includes software developed by TooLs GmbH.
20: * 4. The name of TooLs GmbH may not be used to endorse or promote products
21: * derived from this software without specific prior written permission.
22: *
23: * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
24: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
25: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
26: * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
28: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
29: * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
30: * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
31: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
32: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33: */
34:
35: #ifndef _POWERPC_PARAM_H_
36: #define _POWERPC_PARAM_H_
37:
38: #ifdef _KERNEL
39: #ifndef _LOCORE
40: #include <machine/cpu.h>
41: #endif /* _LOCORE */
42: #endif
43:
44: /*
45: * Machine dependent constants for PowerPC (32-bit only currently)
46: */
47: #define MACHINE_ARCH "powerpc"
48: #define _MACHINE_ARCH powerpc
49:
50: #define MID_MACHINE MID_POWERPC
51:
52: #define ALIGNBYTES (sizeof(double) - 1)
53: #define ALIGN(p) (((u_int)(p) + ALIGNBYTES) & ~ALIGNBYTES)
54: #define ALIGNED_POINTER(p,t) ((((u_long)(p)) & (sizeof(t)-1)) == 0)
55:
56: #define PAGE_SHIFT 12
57: #define PAGE_SIZE 4096
58: #define PAGE_MASK (PAGE_SIZE - 1)
59: #define PGSHIFT PAGE_SHIFT
60: #define NBPG PAGE_SIZE
61: #define PGOFSET PAGE_MASK
62:
63: #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */
64: #define DEV_BSIZE (1 << DEV_BSHIFT)
65: #define BLKDEV_IOSIZE 2048
66: #define MAXPHYS (64 * 1024) /* max raw I/O transfer size */
67:
68: #define UPAGES 4
69: #define USPACE (UPAGES * NBPG)
70: #define USPACE_ALIGN (0) /* u-area alignment 0-none */
71:
72: /*
73: * Minimum and maximum sizes of the kernel malloc arena in PAGE_SIZE-sized
74: * logical pages.
75: */
76: #define NKMEMPAGES_MIN_DEFAULT ((4 * 1024 * 1024) >> PAGE_SHIFT)
77: #define NKMEMPAGES_MAX_DEFAULT ((64 * 1024 * 1024) >> PAGE_SHIFT)
78:
79: /*
80: * Constants related to network buffer management.
81: */
82: #define NMBCLUSTERS 4096 /* map size, max cluster allocation */
83:
84: /*
85: * pages ("clicks") to disk blocks
86: */
87: #define ctod(x) ((x) << (PGSHIFT - DEV_BSHIFT))
88: #define dtoc(x) ((x) >> (PGSHIFT - DEV_BSHIFT))
89: /*
90: * bytes to pages
91: */
92: #define ctob(x) ((x) << PGSHIFT)
93: #define btoc(x) (((x) + PGOFSET) >> PGSHIFT)
94:
95: /*
96: * bytes to disk blocks
97: */
98: #define dbtob(x) ((x) << DEV_BSHIFT)
99: #define btodb(x) ((x) >> DEV_BSHIFT)
100:
101: /*
102: * Segment handling stuff
103: */
104: #define PPC_SEGMENT_LENGTH 0x10000000
105: #define PPC_SEGMENT_MASK 0xf0000000
106:
107: /*
108: * Fixed segments
109: */
110: #define PPC_USER_SR 13
111: #define PPC_KERNEL_SR 14
112: #define PPC_KERNEL_SEG0 0xfffff0
113: #define PPC_KERNEL_SEGMENT (PPC_KERNEL_SEG0 + PPC_KERNEL_SR)
114: #define PPC_USER_ADDR ((void *)(PPC_USER_SR << ADDR_SR_SHIFT))
115:
116: /*
117: * Some system constants
118: */
119: #ifndef NPMAPS
120: #define NPMAPS 32768 /* Number of pmaps in system */
121: #endif
122:
123: /*
124: * Temporary kludge till we do (ov)bcopy in assembler
125: */
126: #define ovbcopy bcopy
127:
128: #endif /* _POWERPC_PARAM_H_ */
CVSweb