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 | |
| 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.
| -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 | ||
