aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2010-03-02 19:41:56 +0100
committerMike Pall <mike>2010-03-02 19:41:56 +0100
commit1cda54a3ab37d4389acc6267ca31071e72a38722 (patch)
tree756cfdff34ab422627f994934706fca928741923 /src
parenteed5585c510718405dfe3c95f64436602879e803 (diff)
downloadluajit-1cda54a3ab37d4389acc6267ca31071e72a38722.tar.gz
luajit-1cda54a3ab37d4389acc6267ca31071e72a38722.tar.bz2
luajit-1cda54a3ab37d4389acc6267ca31071e72a38722.zip
Add compile errors for 64 bit OS without an equivalent of MAP_32BIT.
Diffstat (limited to 'src')
-rw-r--r--src/lj_alloc.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/lj_alloc.c b/src/lj_alloc.c
index 9aa6440d..0c498a7d 100644
--- a/src/lj_alloc.c
+++ b/src/lj_alloc.c
@@ -160,16 +160,29 @@ static LJ_AINLINE int CALL_MUNMAP(void *ptr, size_t size)
160#define MMAP_PROT (PROT_READ|PROT_WRITE) 160#define MMAP_PROT (PROT_READ|PROT_WRITE)
161#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) 161#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
162#define MAP_ANONYMOUS MAP_ANON 162#define MAP_ANONYMOUS MAP_ANON
163#endif /* MAP_ANON */ 163#endif
164#define MMAP_FLAGS (MAP_PRIVATE|MAP_ANONYMOUS)
164 165
165#if LJ_64 166#if LJ_64
166#define MMAP_FLAGS (MAP_PRIVATE|MAP_ANONYMOUS|MAP_32BIT) 167/* Need special support for allocating memory in the lower 2GB. */
168
169#if defined(__linux__)
170/* Actually this only gives us max. 1GB in current Linux kernels. */
171#define CALL_MMAP(s) mmap(0, (s), MMAP_PROT, MAP_32BIT|MMAP_FLAGS, -1, 0)
172#elif defined(__MACH__) && defined(__APPLE__)
173#error "NYI: no support for 64 bit OSX (yet)"
174#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
175/* FreeBSD 64 bit kernel ignores mmap() hints for lower 8GB of memory. */
176#error "No support for 64 bit FreeBSD"
167#else 177#else
168#define MMAP_FLAGS (MAP_PRIVATE|MAP_ANONYMOUS) 178#error "NYI: need an equivalent of MAP_32BIT for this 64 bit OS"
169#endif 179#endif
170 180
171#define INIT_MMAP() ((void)0) 181#else
172#define CALL_MMAP(s) mmap(0, (s), MMAP_PROT, MMAP_FLAGS, -1, 0) 182#define CALL_MMAP(s) mmap(0, (s), MMAP_PROT, MMAP_FLAGS, -1, 0)
183#endif
184
185#define INIT_MMAP() ((void)0)
173#define DIRECT_MMAP(s) CALL_MMAP(s) 186#define DIRECT_MMAP(s) CALL_MMAP(s)
174#define CALL_MUNMAP(a, s) munmap((a), (s)) 187#define CALL_MUNMAP(a, s) munmap((a), (s))
175 188