Annotation of sys/arch/arm/include/vmparam.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: vmparam.h,v 1.3 2005/04/11 15:13:01 deraadt Exp $ */
2: /* $NetBSD: vmparam.h,v 1.18 2003/05/21 18:04:44 thorpej Exp $ */
3:
4: /*
5: * Copyright (c) 2001, 2002 Wasabi Systems, Inc.
6: * All rights reserved.
7: *
8: * Written by Jason R. Thorpe for Wasabi Systems, Inc.
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 for the NetBSD Project by
21: * Wasabi Systems, Inc.
22: * 4. The name of Wasabi Systems, Inc. may not be used to endorse
23: * or promote products derived from this software without specific prior
24: * written permission.
25: *
26: * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
27: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
28: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC
30: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36: * POSSIBILITY OF SUCH DAMAGE.
37: */
38:
39: #ifndef _ARM_ARM_VMPARAM_H_
40: #define _ARM_ARM_VMPARAM_H_
41:
42: #ifdef _KERNEL
43:
44: /*
45: * Virtual Memory parameters common to all arm32 platforms.
46: */
47:
48: #include <sys/lock.h> /* struct simplelock */
49: #include <arm/pte.h> /* pt_entry_t */
50: #endif /* _KERNEL */
51:
52: #define USRTEXT VM_MIN_ADDRESS
53: #define USRSTACK VM_MAXUSER_ADDRESS
54: #define KERNBASE VM_MAXUSER_ADDRESS
55:
56: /*
57: * Note that MAXTSIZ can't be larger than 32M, otherwise the compiler
58: * would have to be changed to not generate "bl" instructions.
59: */
60: #define MAXTSIZ (16*1024*1024) /* max text size */
61: #ifndef DFLDSIZ
62: #define DFLDSIZ (128*1024*1024) /* initial data size limit */
63: #endif
64: #ifndef MAXDSIZ
65: #define MAXDSIZ (512*1024*1024) /* max data size */
66: #endif
67: #ifndef DFLSSIZ
68: #define DFLSSIZ (2*1024*1024) /* initial stack size limit */
69: #endif
70: #ifndef MAXSSIZ
71: #define MAXSSIZ (8*1024*1024) /* max stack size */
72: #endif
73:
74: #define STACKGAP_RANDOM 256*1024
75:
76: /*
77: * Size of SysV shared memory map
78: */
79: #ifndef SHMMAXPGS
80: #define SHMMAXPGS 1024
81: #endif
82:
83: /*
84: * While the ARM architecture defines Section mappings, large pages,
85: * and small pages, the standard page size is (and will always be) 4K.
86: */
87: #define PAGE_SHIFT 12
88: #define PAGE_SIZE (1 << PAGE_SHIFT) /* bytes/page */
89: #define PAGE_MASK (PAGE_SIZE - 1)
90:
91: /*
92: * Mach derived constants
93: */
94: #define VM_MIN_ADDRESS ((vaddr_t) 0x00001000)
95: #define VM_MAXUSER_ADDRESS ((vaddr_t) ARM_KERNEL_BASE)
96: #define VM_MAX_ADDRESS VM_MAXUSER_ADDRESS
97:
98: #define VM_MIN_KERNEL_ADDRESS ((vaddr_t) ARM_KERNEL_BASE)
99: #define VM_MAX_KERNEL_ADDRESS ((vaddr_t) 0xffffffff)
100:
101: #ifdef _KERNEL
102:
103: /* XXX max. amount of KVM to be used by buffers. */
104: #ifndef VM_MAX_KERNEL_BUF
105: extern vaddr_t virtual_avail;
106: extern vaddr_t virtual_end;
107:
108: #define VM_MAX_KERNEL_BUF \
109: ((virtual_end - virtual_avail) * 4 / 10)
110: #endif
111:
112: /*
113: * pmap-specific data store in the vm_page structure.
114: */
115: #define __HAVE_VM_PAGE_MD
116: struct vm_page_md {
117: struct pv_entry *pvh_list; /* pv_entry list */
118: struct simplelock pvh_slock; /* lock on this head */
119: int pvh_attrs; /* page attributes */
120: u_int uro_mappings;
121: u_int urw_mappings;
122: union {
123: u_short s_mappings[2]; /* Assume kernel count <= 65535 */
124: u_int i_mappings;
125: } k_u;
126: #define kro_mappings k_u.s_mappings[0]
127: #define krw_mappings k_u.s_mappings[1]
128: #define k_mappings k_u.i_mappings
129: };
130:
131: #define VM_MDPAGE_INIT(pg) \
132: do { \
133: (pg)->mdpage.pvh_list = NULL; \
134: simple_lock_init(&(pg)->mdpage.pvh_slock); \
135: (pg)->mdpage.pvh_attrs = 0; \
136: (pg)->mdpage.uro_mappings = 0; \
137: (pg)->mdpage.urw_mappings = 0; \
138: (pg)->mdpage.k_mappings = 0; \
139: } while (/*CONSTCOND*/0)
140:
141: #endif /* _KERNEL */
142:
143: #endif /* _ARM_ARM_VMPARAM_H_ */
CVSweb