xref: /illumos-gate/usr/src/uts/sun4/sys/vm_machparam.h (revision 71cf2822)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 /*	Copyright (c) 1988 AT&T	*/
22 /*	  All Rights Reserved	*/
23 
24 /*
25  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
26  * Use is subject to license terms.
27  */
28 
29 #ifndef _SYS_VM_MACHPARAM_H
30 #define	_SYS_VM_MACHPARAM_H
31 
32 #ifdef	__cplusplus
33 extern "C" {
34 #endif
35 
36 /*
37  * Machine dependent constants for sun4u.
38  */
39 
40 /*
41  * USRTEXT is the start of the user text/data space.
42  */
43 #define	USRTEXT		0x2000
44 
45 /*
46  * Virtual memory related constants for UNIX resource control, all in bytes
47  * The default stack size of 8M allows an optimization of mmu mapping
48  * resources so that in normal use a single mmu region map entry (smeg)
49  * can be used to map both the stack and shared libraries
50  */
51 #define	MAXSSIZ		(0x7ffff000)	/* max stack size limit */
52 #define	DFLSSIZ		(8*1024*1024)	/* initial stack size limit */
53 
54 /*
55  * Minimum allowable virtual address space to be used
56  * by the seg_map segment driver for fast kernel mappings.
57  */
58 #define	MINMAPSIZE	0x200000
59 
60 /*
61  * The virtual address space to be used by the seg_map segment
62  * driver for fast kernel mappings.
63  *
64  * Size is 1/8th of physmem at boot.
65  */
66 
67 #ifdef	_LP64
68 #define	SEGMAPSIZE	(256L * 1024L * 1024L * 1024L)	/* 256G */
69 #else
70 #define	SEGMAPSIZE	(256 * 1024 * 1024)		/* 256M */
71 #endif	/* _LP64 */
72 
73 /*
74  * Define the default virtual size and valid size range for the segkp segment.
75  */
76 #ifdef	_LP64
77 #define	SEGKPDEFSIZE	(2L * 1024L * 1024L * 1024L)		/*   2G */
78 #define	SEGKPMAXSIZE	(24L * 1024L * 1024L * 1024L)		/*  24G */
79 #define	SEGKPMINSIZE	(512L * 1024 * 1024L)			/* 512M */
80 #else
81 #define	SEGKPDEFSIZE	(512 * 1024 * 1024)
82 #define	SEGKPMAXSIZE	(512 * 1024 * 1024)
83 #define	SEGKPMINSIZE	(512 * 1024 * 1024)
84 #endif	/* _LP64 */
85 
86 /*
87  * Define minimum size for zio segment
88  */
89 #define	SEGZIOMINSIZE	(512L * 1024L * 1024L)			/* 512M */
90 #define	SEGZIOMAXSIZE	(512L * 1024L * 1024L * 1024L)		/* 512G */
91 
92 /*
93  * The time for a process to be blocked before being very swappable.
94  * This is a number of seconds which the system takes as being a non-trivial
95  * amount of real time. You probably shouldn't change this;
96  * it is used in subtle ways (fractions and multiples of it are, that is, like
97  * half of a ``long time'', almost a long time, etc.)
98  * It is related to human patience and other factors which don't really
99  * change over time.
100  */
101 #define	MAXSLP		20
102 
103 /*
104  * A swapped in process is given a small amount of core without being bothered
105  * by the page replacement algorithm. Basically this says that if you are
106  * swapped in you deserve some resources. We protect the last SAFERSS
107  * pages against paging and will just swap you out rather than paging you.
108  * Note that each process has at least UPAGES pages which are not
109  * paged anyways so this number just means a swapped in process is
110  * given around 32k bytes.
111  */
112 /*
113  * nominal ``small'' resident set size
114  * protected against replacement
115  */
116 #define	SAFERSS		3
117 
118 /*
119  * DISKRPM is used to estimate the number of paging i/o operations
120  * which one can expect from a single disk controller.
121  *
122  * XXX - The system doesn't account for multiple swap devices.
123  */
124 #define	DISKRPM		600
125 
126 /*
127  * The maximum value for handspreadpages which is the the distance
128  * between the two clock hands in pages.
129  */
130 #define	MAXHANDSPREADPAGES	((64 * 1024 * 1024) / PAGESIZE)
131 
132 /*
133  * Paged text files that are less than PGTHRESH bytes
134  * may be "prefaulted in" instead of demand paged.
135  */
136 #define	PGTHRESH	(280 * 1024)
137 
138 /*
139  * Cacheable bit for 64 bit MXCC Stream Source registers
140  */
141 #define	BC_CACHE_SHIFT	36
142 
143 /*
144  * set type for 64 bit phys addr variables.  Needed at least for interface
145  * with MXCC.
146  */
147 
148 #ifndef _ASM
149 typedef unsigned long long pa_t;
150 #endif
151 
152 #ifdef	__cplusplus
153 }
154 #endif
155 
156 #endif	/* _SYS_VM_MACHPARAM_H */
157