diff options
author | Mike Pall <mike> | 2010-03-02 19:41:56 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2010-03-02 19:41:56 +0100 |
commit | 1cda54a3ab37d4389acc6267ca31071e72a38722 (patch) | |
tree | 756cfdff34ab422627f994934706fca928741923 /src | |
parent | eed5585c510718405dfe3c95f64436602879e803 (diff) | |
download | luajit-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.c | 21 |
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 | ||