/[cmucl]/src/lisp/x86-validate.h
ViewVC logotype

Diff of /src/lisp/x86-validate.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2.2.4 by pw, Sat Mar 23 18:51:10 2002 UTC revision 1.34 by rtoy, Wed Dec 22 05:55:22 2010 UTC
# Line 7  Line 7 
7   *   *
8   */   */
9    
10    #ifndef _X86_VALIDATE_H_
11    #define _X86_VALIDATE_H_
12    
13  /*  /*
14     * Also look in compiler/x86/parms.lisp for some of the parameters.
15     *
16   * Address map:   * Address map:
17   *   *
18   *  FreeBSD:   *  FreeBSD:
19   *      0x00000000->0x0E000000 224M C program and memory allocation.   *      0x00000000->0x0E000000  224M C program and memory allocation.
20   *      0x0E000000->0x10000000  32M Foreign segment.   *      0x0E000000->0x10000000   32M Foreign segment.
21   *      0x10000000->0x20000000 256M Read-Only Space.   *      0x10000000->0x20000000  256M Read-Only Space.
22   *      0x20000000->0x28000000 128M Reserved for shared libraries.   *      0x20000000->0x28000000  128M Reserved for shared libraries.
23   *      0x28000000->0x38000000 256M Static Space.   *      0x28000000->0x38000000  256M Static Space.
24   *      0x38000000->0x40000000 128M Binding stack growing up.   *      0x38000000->0x40000000  128M Binding stack growing up.
25   *      0x40000000->0x48000000 128M Control stack growing down.   *      0x40000000->0x48000000  128M Control stack growing down.
26   *      0x48000000->0xC8000000 2GB  Dynamic Space.   *      0x48000000->0xB0000000 1664M Dynamic Space.
27   *      0xE0000000->           256M C stack - Alien stack.   *      0xB0000000->0xB1000000       Foreign Linkage Table
28   *   *      0xE0000000->            256M C stack - Alien stack.
29   *  OpenBSD and NetBSD:   *
30   *      0x00000000->0x0E000000 224M C program and memory allocation.   *  OpenBSD:
31   *      0x0E000000->0x10000000  32M Foreign segment.   *      0x00000000->0x0E000000  224M C program and memory allocation.
32   *      0x10000000->0x20000000 256M Read-Only Space.   *      0x0E000000->0x10000000   32M Foreign segment.
33   *      0x20000000->0x28000000 128M Binding stack growing up.   *      0x10000000->0x20000000  256M Read-Only Space.
34   *      0x28000000->0x38000000 256M Static Space.   *      0x20000000->0x28000000  128M Binding stack growing up.
35   *      0x38000000->0x40000000 128M Control stack growing down.   *      0x28000000->0x38000000  256M Static Space.
36   *      0x40000000->0x48000000 128M Reserved for shared libraries.   *      0x38000000->0x40000000  128M Control stack growing down.
37   *      0x48000000->0xB8000000 1.75GB  Dynamic Space.   *      0x40000000->0x48000000  128M Reserved for shared libraries.
38   *      0xE0000000->           256M C stack - Alien stack.   *      0x48000000->0xB0000000 1664M Dynamic Space.
39     *      0xB0000000->0xB1000000   16M Foreign Linkage Table
40     *      0xE0000000->            256M C stack - Alien stack.
41     *
42     *  NetBSD:
43     *      0x00000000->0x0E000000  224M C program and memory allocation.
44     *      0x0E000000->0x10000000   32M Foreign segment.
45     *      0x10000000->0x20000000  256M Read-Only Space.
46     *      0x28000000->0x38000000  256M Static Space.
47     *      0x38000000->0x40000000  128M Binding stack growing up.
48     *      0x40000000->0x48000000  128M Control stack growing down.
49     *      0x48800000->0xB0000000 1656M Dynamic Space.
50     *      0xB0000000->0xB1000000   16M Foreign Linkage Table
51     *      0xE0000000->            256M C stack - Alien stack.
52   *   *
53   *  Linux:   *  Linux:
54   *      0x00000000->0x08000000 128M Unused.   *      0x00000000->0x08000000  128M Unused.
55   *      0x08000000->0x10000000 128M C program and memory allocation.   *      0x08000000->0x10000000  128M C program and memory allocation.
56   *      0x10000000->0x20000000 256M Read-Only Space.   *      0x10000000->0x20000000  256M Read-Only Space.
57   *      0x20000000->0x28000000 128M Binding stack growing up.   *      0x20000000->0x28000000  128M Binding stack growing up.
58   *      0x28000000->0x38000000 256M Static Space.   *      0x28000000->0x38000000  256M Static Space.
59   *      0x38000000->0x40000000 128M Control stack growing down.   *      0x38000000->0x40000000  128M Control stack growing down.
60   *      0x40000000->0x48000000 128M Reserved for shared libraries.   *      0x40000000->0x48000000  128M Reserved for shared libraries.
61   *      0x48000000->0xB8000000 1.75G Dynamic Space.   *      0x58000000->0x58100000   16M Foreign Linkage Table
62     *      0x58100000->0xBE000000 1631M Dynamic Space.
63     *      0xBFFF0000->0xC0000000       Unknown Linux mapping
64   *   *
65     *      (Note: 0x58000000 allows us to run on a Linux system on an AMD
66     *      x86-64.  Hence we have a gap of unused memory starting at
67     *      0x48000000.)
68   */   */
69    
70  #ifdef __FreeBSD__  #ifdef __FreeBSD__
71  #define READ_ONLY_SPACE_START   (0x10000000)  #define READ_ONLY_SPACE_START   (0x10000000)
72  #define READ_ONLY_SPACE_SIZE    (0x0ffff000) /* 256MB - 1 page */  #define READ_ONLY_SPACE_SIZE    (0x0ffff000)    /* 256MB - 1 page */
73    
74  #define STATIC_SPACE_START      (0x28f00000)  #define STATIC_SPACE_START      (0x28f00000)
75  #define STATIC_SPACE_SIZE       (0x0f0ff000) /* 241MB - 1 page */  #define STATIC_SPACE_SIZE       (0x0f0ff000)    /* 241MB - 1 page */
76    
77  #define BINDING_STACK_START     (0x38000000)  #define BINDING_STACK_START     (0x38000000)
78  #define BINDING_STACK_SIZE      (0x07fff000) /* 128MB - 1 page */  #define BINDING_STACK_SIZE      (0x07fff000)    /* 128MB - 1 page */
79    
80  #define CONTROL_STACK_START     (0x40000000)  #define CONTROL_STACK_START     0x40000000
81  #define CONTROL_STACK_SIZE      (0x08000000) /* 128MB */  #define CONTROL_STACK_SIZE      0x07fd8000      /* 128MB - SIGSTKSZ */
82    #define SIGNAL_STACK_START      0x47fd8000
83    #define SIGNAL_STACK_SIZE       SIGSTKSZ
84    
85  #define DYNAMIC_0_SPACE_START   (0x48000000)  #define DYNAMIC_0_SPACE_START   (0x48000000UL)
86  #ifdef GENCGC  #ifdef GENCGC
87  #define DYNAMIC_SPACE_SIZE      (0x40000000) /* May be up to 2GB */  #define DYNAMIC_SPACE_SIZE      (0x78000000UL)  /* May be up to 1.7 GB */
88  #else  #else
89  #define DYNAMIC_SPACE_SIZE      (0x04000000) /* 64MB */  #define DYNAMIC_SPACE_SIZE      (0x04000000UL)  /* 64MB */
90  #endif  #endif
91  #define DEFAULT_DYNAMIC_SPACE_SIZE      (0x20000000) /* 512MB */  #define DEFAULT_DYNAMIC_SPACE_SIZE      (0x20000000UL)  /* 512MB */
92    #ifdef LINKAGE_TABLE
93    #define FOREIGN_LINKAGE_SPACE_START ((unsigned long) LinkageSpaceStart)
94    #define FOREIGN_LINKAGE_SPACE_SIZE (0x100000UL) /* 1MB */
95  #endif  #endif
96    #endif /* __FreeBSD__ */
97    
98    
99  #if defined(__OpenBSD__) || defined(__NetBSD__)  #ifdef __OpenBSD__
100  #define READ_ONLY_SPACE_START   (0x10000000)  #define READ_ONLY_SPACE_START   (0x10000000)
101  #define READ_ONLY_SPACE_SIZE    (0x0ffff000) /* 256MB - 1 page */  #define READ_ONLY_SPACE_SIZE    (0x0ffff000)    /* 256MB - 1 page */
102    
103  #define STATIC_SPACE_START      (0x28000000)  #define STATIC_SPACE_START      (0x28000000)
104  #define STATIC_SPACE_SIZE       (0x0ffff000) /* 256MB - 1 page */  #define STATIC_SPACE_SIZE       (0x0ffff000)    /* 256MB - 1 page */
105    
106  #define BINDING_STACK_START     (0x20000000)  #define BINDING_STACK_START     (0x38000000)
107  #define BINDING_STACK_SIZE      (0x07fff000) /* 128MB - 1 page */  #define BINDING_STACK_SIZE      (0x07fff000)    /* 128MB - 1 page */
108    
109    #define CONTROL_STACK_START     (0x40000000)
110    #define CONTROL_STACK_SIZE      (0x07fd8000)    /* 128MB - SIGSTKSZ */
111    
112  #define CONTROL_STACK_START     (0x38000000)  #define SIGNAL_STACK_START      (0x47fd8000)
113  #define CONTROL_STACK_SIZE      (0x07fff000) /* 128MB - 1 page */  #define SIGNAL_STACK_SIZE       SIGSTKSZ
114    
115  #define DYNAMIC_0_SPACE_START   (0x48000000)  #define DYNAMIC_0_SPACE_START   (0x48000000)
116  #ifdef GENCGC  #ifdef GENCGC
117  #define DYNAMIC_SPACE_SIZE      (0x68000000) /* 1.625GB */  #define DYNAMIC_SPACE_SIZE      (0x68000000)    /* 1.625GB */
118  #else  #else
119  #define DYNAMIC_SPACE_SIZE      (0x04000000) /* 64MB */  #define DYNAMIC_SPACE_SIZE      (0x04000000)    /* 64MB */
120  #endif  #endif
121  #define DEFAULT_DYNAMIC_SPACE_SIZE      (0x20000000) /* 512MB */  #define DEFAULT_DYNAMIC_SPACE_SIZE      (0x20000000)    /* 512MB */
122    #endif
123    
124    #if defined(__NetBSD__) || defined(DARWIN)
125    #define READ_ONLY_SPACE_START   (SpaceStart_TargetReadOnly)
126    #define READ_ONLY_SPACE_SIZE    (0x0ffff000)    /* 256MB - 1 page */
127    
128    #define STATIC_SPACE_START      (SpaceStart_TargetStatic)
129    #define STATIC_SPACE_SIZE       (0x0ffff000)    /* 256MB - 1 page */
130    
131    #define BINDING_STACK_START     (0x38000000)
132    #define BINDING_STACK_SIZE      (0x07fff000)    /* 128MB - 1 page */
133    
134    #define CONTROL_STACK_START     (0x40000000)
135    #if defined(DARWIN)
136    /*
137     * According to /usr/include/sys/signal.h, MINSIGSTKSZ is 32K and
138     * SIGSTKSZ is 128K.  We should account for that appropriately.
139     */
140    #define CONTROL_STACK_SIZE      (0x07fdf000)    /* 128MB - SIGSTKSZ - 1 page */
141    
142    #define SIGNAL_STACK_START      (0x47fe0000)    /* One page past the end of the control stack */
143    #define SIGNAL_STACK_SIZE       SIGSTKSZ
144    #else
145    #define CONTROL_STACK_SIZE      (0x07fd8000)    /* 128MB - SIGSTKSZ */
146    
147    #define SIGNAL_STACK_START      (0x47fd8000)
148    #define SIGNAL_STACK_SIZE       SIGSTKSZ
149  #endif  #endif
150    
151    #define DYNAMIC_0_SPACE_START   (SpaceStart_TargetDynamic)
152    #ifdef GENCGC
153    #if defined(DARWIN)
154    /*
155     * On Darwin, /usr/lib/dyld appears to always be loaded at address
156     * #x8fe2e000.  Hence, the maximum dynamic space size is 1206050816
157     * bytes, or just over 1.150 GB.  Set the limit to 1.150 GB.
158     */
159    #define DYNAMIC_SPACE_SIZE      (0x47E00000U)   /* 1.150GB */
160    #else
161    #define DYNAMIC_SPACE_SIZE      (0x67800000U)   /* 1.656GB */
162    #endif
163    #else
164    #define DYNAMIC_SPACE_SIZE      (0x04000000U)   /* 64MB */
165    #endif
166    #define DEFAULT_DYNAMIC_SPACE_SIZE      (0x20000000U)   /* 512MB */
167    #ifdef LINKAGE_TABLE
168    #define FOREIGN_LINKAGE_SPACE_START (LinkageSpaceStart)
169    #define FOREIGN_LINKAGE_SPACE_SIZE (0x100000)   /* 1MB */
170    #endif
171    #endif /* __NetBSD__ || DARWIN */
172    
173  #ifdef __linux__  #ifdef __linux__
174  #define READ_ONLY_SPACE_START   (0x10000000)  #define READ_ONLY_SPACE_START   (SpaceStart_TargetReadOnly)
175  #define READ_ONLY_SPACE_SIZE    (0x0ffff000) /* 256MB - 1 page */  #define READ_ONLY_SPACE_SIZE    (0x0ffff000)    /* 256MB - 1 page */
176    
177  #define STATIC_SPACE_START      (0x28000000)  #define STATIC_SPACE_START      (SpaceStart_TargetStatic)
178  #define STATIC_SPACE_SIZE       (0x0ffff000) /* 256MB - 1 page */  #define STATIC_SPACE_SIZE       (0x0ffff000)    /* 256MB - 1 page */
179    
180  #define BINDING_STACK_START     (0x20000000)  #define BINDING_STACK_START     (0x20000000)
181  #define BINDING_STACK_SIZE      (0x07fff000) /* 128MB - 1 page */  #define BINDING_STACK_SIZE      (0x07fff000)    /* 128MB - 1 page */
182    
183  #define CONTROL_STACK_START     (0x38000000)  #define CONTROL_STACK_START     0x38000000
184  #define CONTROL_STACK_SIZE      (0x07fff000) /* 128MB - 1 page */  #define CONTROL_STACK_SIZE      (0x07fff000 - 8192)
185    #define SIGNAL_STACK_START      CONTROL_STACK_END
186    #define SIGNAL_STACK_SIZE       SIGSTKSZ
187    
188    #define DYNAMIC_0_SPACE_START   (SpaceStart_TargetDynamic)
189    
 #define DYNAMIC_0_SPACE_START   (0x48000000)  
190  #ifdef GENCGC  #ifdef GENCGC
191  #define DYNAMIC_SPACE_SIZE      (0x68000000) /* 1.625GB */  #define DYNAMIC_SPACE_SIZE      (0x66000000)    /* 1.632GB */
192  #else  #else
193  #define DYNAMIC_SPACE_SIZE      (0x04000000) /* 64MB */  #define DYNAMIC_SPACE_SIZE      (0x04000000)    /* 64MB */
194    #endif
195    #define DEFAULT_DYNAMIC_SPACE_SIZE      (0x20000000)    /* 512MB */
196    #ifdef LINKAGE_TABLE
197    #define FOREIGN_LINKAGE_SPACE_START (LinkageSpaceStart)
198    #define FOREIGN_LINKAGE_SPACE_SIZE (0x100000)   /* 1MB */
199  #endif  #endif
 #define DEFAULT_DYNAMIC_SPACE_SIZE      (0x20000000) /* 512MB */  
200  #endif  #endif
201    
202    #ifdef SOLARIS
203    /*
204     * The memory map for Solaris/x86 looks roughly like
205     *
206     *      0x08045000->0x08050000   C stack?
207     *      0x08050000->             Code + C heap
208     *      0x10000000->0x20000000   256 MB read-only space
209     *      0x20000000->0x28000000   128M Binding stack growing up.
210     *      0x28000000->0x30000000   256M Static Space.
211     *      0x30000000->0x31000000   16M Foreign linkage table
212     *      0x38000000->0x40000000   128M Control stack growing down.
213     *      0x40000000->0xD0000000   2304M Dynamic Space.
214     *
215     * Starting at 0xd0ce0000 there is some mapped anon memory.  libc
216     * seems to start at 0xd0d40000 and other places.  Looks like memory
217     * above 0xd0ffe000 or so is not mapped.
218     */
219    
220    #define READ_ONLY_SPACE_START   (SpaceStart_TargetReadOnly)
221    #define READ_ONLY_SPACE_SIZE    (0x0ffff000)    /* 256MB - 1 page */
222    
223    #define STATIC_SPACE_START      (SpaceStart_TargetStatic)
224    #define STATIC_SPACE_SIZE       (0x0ffff000)    /* 256MB - 1 page */
225    
226    #define BINDING_STACK_START     (0x20000000)
227    #define BINDING_STACK_SIZE      (0x07fff000)    /* 128MB - 1 page */
228    
229    #define CONTROL_STACK_START     0x38000000
230    #define CONTROL_STACK_SIZE      (0x07fff000 - 8192)
231    #define SIGNAL_STACK_START      CONTROL_STACK_END
232    #define SIGNAL_STACK_SIZE       SIGSTKSZ
233    
234    #define DYNAMIC_0_SPACE_START   (SpaceStart_TargetDynamic)
235    
236    #ifdef GENCGC
237    #define DYNAMIC_SPACE_SIZE      (0x90000000)    /* 2.304GB */
238    #else
239    #define DYNAMIC_SPACE_SIZE      (0x04000000)    /* 64MB */
240    #endif
241    #define DEFAULT_DYNAMIC_SPACE_SIZE      (0x20000000)    /* 512MB */
242    #ifdef LINKAGE_TABLE
243    #define FOREIGN_LINKAGE_SPACE_START (LinkageSpaceStart)
244    #define FOREIGN_LINKAGE_SPACE_SIZE (0x100000)   /* 1MB */
245    #endif
246    #endif
247    
248  #define CONTROL_STACK_END       (CONTROL_STACK_START + CONTROL_STACK_SIZE)  #define CONTROL_STACK_END       (CONTROL_STACK_START + CONTROL_STACK_SIZE)
249    
250  /* Note that GENCGC only uses dynamic_space 0. */  /* Note that GENCGC only uses dynamic_space 0. */
251  #define DYNAMIC_1_SPACE_START   (DYNAMIC_0_SPACE_START + DYNAMIC_SPACE_SIZE)  #define DYNAMIC_1_SPACE_START   (DYNAMIC_0_SPACE_START + DYNAMIC_SPACE_SIZE)
252    
253    #endif /* _X86_VALIDATE_H_ */

Legend:
Removed from v.1.2.2.4  
changed lines
  Added in v.1.34

  ViewVC Help
Powered by ViewVC 1.1.5