Split x86-validate into separate files.
[projects/cmucl/cmucl.git] / src / lisp / x86-validate-linux.h
1 /*
2  *
3  * This code was written as part of the CMU Common Lisp project at
4  * Carnegie Mellon University, and has been placed in the public domain.
5  *
6  */
7
8 #ifndef _X86_VALIDATE_LINUX_H_
9 #define _X86_VALIDATE_LINUX_H_
10
11 /*
12  * Also look in compiler/x86/parms.lisp for some of the parameters.
13  *
14  * Address map:
15  *
16  *  Linux:
17  *      0x00000000->0x08000000  128M Unused.
18  *      0x08000000->0x10000000  128M C program and memory allocation.
19  *      0x10000000->0x20000000  256M Read-Only Space.
20  *      0x20000000->0x28000000  128M Binding stack growing up.
21  *      0x28000000->0x38000000  256M Static Space.
22  *      0x38000000->0x40000000  128M Control stack growing down.
23  *      0x40000000->0x48000000  128M Reserved for shared libraries.
24  *      0x58000000->0x58100000   16M Foreign Linkage Table
25  *      0x58100000->0xBE000000 1631M Dynamic Space.
26  *      0xBFFF0000->0xC0000000       Unknown Linux mapping
27  *
28  *      (Note: 0x58000000 allows us to run on a Linux system on an AMD
29  *      x86-64.  Hence we have a gap of unused memory starting at
30  *      0x48000000.)
31  */
32
33 #define READ_ONLY_SPACE_START   (SpaceStart_TargetReadOnly)
34 #define READ_ONLY_SPACE_SIZE    (0x0ffff000)    /* 256MB - 1 page */
35
36 #define STATIC_SPACE_START      (SpaceStart_TargetStatic)
37 #define STATIC_SPACE_SIZE       (0x0ffff000)    /* 256MB - 1 page */
38
39 #define BINDING_STACK_START     (0x20000000)
40 #define BINDING_STACK_SIZE      (0x07fff000)    /* 128MB - 1 page */
41
42 #define CONTROL_STACK_START     0x38000000
43 #define CONTROL_STACK_SIZE      (0x07fff000 - 8192)
44
45 #define SIGNAL_STACK_START      CONTROL_STACK_END
46 #define SIGNAL_STACK_SIZE       SIGSTKSZ
47
48 #define DYNAMIC_0_SPACE_START   (SpaceStart_TargetDynamic)
49
50 #ifdef GENCGC
51 #define DYNAMIC_SPACE_SIZE      (0x66000000)    /* 1.632GB */
52 #else
53 #define DYNAMIC_SPACE_SIZE      (0x04000000)    /* 64MB */
54 #endif
55
56 #define DEFAULT_DYNAMIC_SPACE_SIZE      (0x20000000)    /* 512MB */
57
58 #ifdef LINKAGE_TABLE
59 #define FOREIGN_LINKAGE_SPACE_START (LinkageSpaceStart)
60 #define FOREIGN_LINKAGE_SPACE_SIZE (0x100000)   /* 1MB */
61 #endif
62
63 #endif
64