--- /dev/null
+/*
+ *
+ * This code was written as part of the CMU Common Lisp project at
+ * Carnegie Mellon University, and has been placed in the public domain.
+ *
+ */
+
+#ifndef _X86_VALIDATE_DARWIN_H_
+#define _X86_VALIDATE_DARWIN_H_
+
+/*
+ * Also look in compiler/x86/parms.lisp for some of the parameters.
+ */
+
+#define READ_ONLY_SPACE_START (SpaceStart_TargetReadOnly)
+#define READ_ONLY_SPACE_SIZE (0x0ffff000) /* 256MB - 1 page */
+
+#define STATIC_SPACE_START (SpaceStart_TargetStatic)
+#define STATIC_SPACE_SIZE (0x0ffff000) /* 256MB - 1 page */
+
+#define BINDING_STACK_START (0x38000000)
+#define BINDING_STACK_SIZE (0x07fff000) /* 128MB - 1 page */
+
+#define CONTROL_STACK_START (0x40000000)
+
+/*
+ * According to /usr/include/sys/signal.h, MINSIGSTKSZ is 32K and
+ * SIGSTKSZ is 128K. We should account for that appropriately.
+ */
+#define CONTROL_STACK_SIZE (0x07fdf000) /* 128MB - SIGSTKSZ - 1 page */
+
+#define SIGNAL_STACK_START (0x47fe0000) /* One page past the end of the control stack */
+#define SIGNAL_STACK_SIZE SIGSTKSZ
+
+#define DYNAMIC_0_SPACE_START (SpaceStart_TargetDynamic)
+#ifdef GENCGC
+
+/*
+ * On Darwin, /usr/lib/dyld appears to always be loaded at address
+ * #x8fe2e000. Hence, the maximum dynamic space size is 1206050816
+ * bytes, or just over 1.150 GB. Set the limit to 1.150 GB.
+ */
+#define DYNAMIC_SPACE_SIZE (0x47E00000U) /* 1.150GB */
+
+#else
+#define DYNAMIC_SPACE_SIZE (0x04000000U) /* 64MB */
+#endif
+
+#define DEFAULT_DYNAMIC_SPACE_SIZE (0x20000000U) /* 512MB */
+
+#ifdef LINKAGE_TABLE
+#define FOREIGN_LINKAGE_SPACE_START (LinkageSpaceStart)
+#define FOREIGN_LINKAGE_SPACE_SIZE (0x100000) /* 1MB */
+#endif
+
+#endif /*_X86_VALIDATE_DARWIN_H_*/
--- /dev/null
+/*
+ *
+ * This code was written as part of the CMU Common Lisp project at
+ * Carnegie Mellon University, and has been placed in the public domain.
+ *
+ */
+
+#ifndef _X86_VALIDATE_LINUX_H_
+#define _X86_VALIDATE_LINUX_H_
+
+/*
+ * Also look in compiler/x86/parms.lisp for some of the parameters.
+ *
+ * Address map:
+ *
+ * Linux:
+ * 0x00000000->0x08000000 128M Unused.
+ * 0x08000000->0x10000000 128M C program and memory allocation.
+ * 0x10000000->0x20000000 256M Read-Only Space.
+ * 0x20000000->0x28000000 128M Binding stack growing up.
+ * 0x28000000->0x38000000 256M Static Space.
+ * 0x38000000->0x40000000 128M Control stack growing down.
+ * 0x40000000->0x48000000 128M Reserved for shared libraries.
+ * 0x58000000->0x58100000 16M Foreign Linkage Table
+ * 0x58100000->0xBE000000 1631M Dynamic Space.
+ * 0xBFFF0000->0xC0000000 Unknown Linux mapping
+ *
+ * (Note: 0x58000000 allows us to run on a Linux system on an AMD
+ * x86-64. Hence we have a gap of unused memory starting at
+ * 0x48000000.)
+ */
+
+#define READ_ONLY_SPACE_START (SpaceStart_TargetReadOnly)
+#define READ_ONLY_SPACE_SIZE (0x0ffff000) /* 256MB - 1 page */
+
+#define STATIC_SPACE_START (SpaceStart_TargetStatic)
+#define STATIC_SPACE_SIZE (0x0ffff000) /* 256MB - 1 page */
+
+#define BINDING_STACK_START (0x20000000)
+#define BINDING_STACK_SIZE (0x07fff000) /* 128MB - 1 page */
+
+#define CONTROL_STACK_START 0x38000000
+#define CONTROL_STACK_SIZE (0x07fff000 - 8192)
+
+#define SIGNAL_STACK_START CONTROL_STACK_END
+#define SIGNAL_STACK_SIZE SIGSTKSZ
+
+#define DYNAMIC_0_SPACE_START (SpaceStart_TargetDynamic)
+
+#ifdef GENCGC
+#define DYNAMIC_SPACE_SIZE (0x66000000) /* 1.632GB */
+#else
+#define DYNAMIC_SPACE_SIZE (0x04000000) /* 64MB */
+#endif
+
+#define DEFAULT_DYNAMIC_SPACE_SIZE (0x20000000) /* 512MB */
+
+#ifdef LINKAGE_TABLE
+#define FOREIGN_LINKAGE_SPACE_START (LinkageSpaceStart)
+#define FOREIGN_LINKAGE_SPACE_SIZE (0x100000) /* 1MB */
+#endif
+
+#endif
+
--- /dev/null
+/*
+ *
+ * This code was written as part of the CMU Common Lisp project at
+ * Carnegie Mellon University, and has been placed in the public domain.
+ *
+ */
+
+#ifndef _X86_VALIDATE_SOLARIS_H_
+#define _X86_VALIDATE_SOLARIS_H_
+
+/*
+ * Also look in compiler/x86/parms.lisp for some of the parameters.
+ *
+ * The memory map for Solaris/x86 looks roughly like
+ *
+ * 0x08045000->0x08050000 C stack?
+ * 0x08050000-> Code + C heap
+ * 0x10000000->0x20000000 256 MB read-only space
+ * 0x20000000->0x28000000 128M Binding stack growing up.
+ * 0x28000000->0x30000000 256M Static Space.
+ * 0x30000000->0x31000000 16M Foreign linkage table
+ * 0x38000000->0x40000000 128M Control stack growing down.
+ * 0x40000000->0xD0000000 2304M Dynamic Space.
+ *
+ * Starting at 0xd0ce0000 there is some mapped anon memory. libc
+ * seems to start at 0xd0d40000 and other places. Looks like memory
+ * above 0xd0ffe000 or so is not mapped.
+ */
+
+#define READ_ONLY_SPACE_START (SpaceStart_TargetReadOnly)
+#define READ_ONLY_SPACE_SIZE (0x0ffff000) /* 256MB - 1 page */
+
+#define STATIC_SPACE_START (SpaceStart_TargetStatic)
+#define STATIC_SPACE_SIZE (0x0ffff000) /* 256MB - 1 page */
+
+#define BINDING_STACK_START (0x20000000)
+#define BINDING_STACK_SIZE (0x07fff000) /* 128MB - 1 page */
+
+#define CONTROL_STACK_START 0x38000000
+#define CONTROL_STACK_SIZE (0x07fff000 - 8192)
+#define SIGNAL_STACK_START CONTROL_STACK_END
+#define SIGNAL_STACK_SIZE SIGSTKSZ
+
+#define DYNAMIC_0_SPACE_START (SpaceStart_TargetDynamic)
+
+#ifdef GENCGC
+#define DYNAMIC_SPACE_SIZE (0x90000000) /* 2.304GB */
+#else
+#define DYNAMIC_SPACE_SIZE (0x04000000) /* 64MB */
+#endif
+
+#define DEFAULT_DYNAMIC_SPACE_SIZE (0x20000000) /* 512MB */
+
+#ifdef LINKAGE_TABLE
+#define FOREIGN_LINKAGE_SPACE_START (LinkageSpaceStart)
+#define FOREIGN_LINKAGE_SPACE_SIZE (0x100000) /* 1MB */
+#endif
+
+#endif
+
#ifndef _X86_VALIDATE_H_
#define _X86_VALIDATE_H_
+#if defined(__linux__)
+#include "x86-validate-linux.h"
+#endif
+
+#if defined(DARWIN)
+#include "x86-validate-darwin.h"
+#endif
+
/*
* Also look in compiler/x86/parms.lisp for some of the parameters.
*
#define DEFAULT_DYNAMIC_SPACE_SIZE (0x20000000) /* 512MB */
#endif
-#if defined(__NetBSD__) || defined(DARWIN)
+#if defined(__NetBSD__)
#define READ_ONLY_SPACE_START (SpaceStart_TargetReadOnly)
#define READ_ONLY_SPACE_SIZE (0x0ffff000) /* 256MB - 1 page */
#define BINDING_STACK_SIZE (0x07fff000) /* 128MB - 1 page */
#define CONTROL_STACK_START (0x40000000)
-#if defined(DARWIN)
-/*
- * According to /usr/include/sys/signal.h, MINSIGSTKSZ is 32K and
- * SIGSTKSZ is 128K. We should account for that appropriately.
- */
-#define CONTROL_STACK_SIZE (0x07fdf000) /* 128MB - SIGSTKSZ - 1 page */
-#define SIGNAL_STACK_START (0x47fe0000) /* One page past the end of the control stack */
-#define SIGNAL_STACK_SIZE SIGSTKSZ
-#else
#define CONTROL_STACK_SIZE (0x07fd8000) /* 128MB - SIGSTKSZ */
#define SIGNAL_STACK_START (0x47fd8000)
#define SIGNAL_STACK_SIZE SIGSTKSZ
-#endif
#define DYNAMIC_0_SPACE_START (SpaceStart_TargetDynamic)
#ifdef GENCGC
-#if defined(DARWIN)
-/*
- * On Darwin, /usr/lib/dyld appears to always be loaded at address
- * #x8fe2e000. Hence, the maximum dynamic space size is 1206050816
- * bytes, or just over 1.150 GB. Set the limit to 1.150 GB.
- */
-#define DYNAMIC_SPACE_SIZE (0x47E00000U) /* 1.150GB */
-#else
#define DYNAMIC_SPACE_SIZE (0x67800000U) /* 1.656GB */
-#endif
#else
#define DYNAMIC_SPACE_SIZE (0x04000000U) /* 64MB */
#endif
+
#define DEFAULT_DYNAMIC_SPACE_SIZE (0x20000000U) /* 512MB */
#ifdef LINKAGE_TABLE
#define FOREIGN_LINKAGE_SPACE_START (LinkageSpaceStart)
#define FOREIGN_LINKAGE_SPACE_SIZE (0x100000) /* 1MB */
#endif
-#endif /* __NetBSD__ || DARWIN */
-
-#ifdef __linux__
-#define READ_ONLY_SPACE_START (SpaceStart_TargetReadOnly)
-#define READ_ONLY_SPACE_SIZE (0x0ffff000) /* 256MB - 1 page */
-
-#define STATIC_SPACE_START (SpaceStart_TargetStatic)
-#define STATIC_SPACE_SIZE (0x0ffff000) /* 256MB - 1 page */
-
-#define BINDING_STACK_START (0x20000000)
-#define BINDING_STACK_SIZE (0x07fff000) /* 128MB - 1 page */
-
-#define CONTROL_STACK_START 0x38000000
-#define CONTROL_STACK_SIZE (0x07fff000 - 8192)
-
-#define SIGNAL_STACK_START CONTROL_STACK_END
-#define SIGNAL_STACK_SIZE SIGSTKSZ
-
-#define DYNAMIC_0_SPACE_START (SpaceStart_TargetDynamic)
-#ifdef GENCGC
-#define DYNAMIC_SPACE_SIZE (0x66000000) /* 1.632GB */
-#else
-#define DYNAMIC_SPACE_SIZE (0x04000000) /* 64MB */
-#endif
-#define DEFAULT_DYNAMIC_SPACE_SIZE (0x20000000) /* 512MB */
-#ifdef LINKAGE_TABLE
-#define FOREIGN_LINKAGE_SPACE_START (LinkageSpaceStart)
-#define FOREIGN_LINKAGE_SPACE_SIZE (0x100000) /* 1MB */
-#endif
-#endif
+#endif /* __NetBSD__ || DARWIN */
#ifdef SOLARIS
/*