diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_alloc.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lj_alloc.c b/src/lj_alloc.c index f856a7a0..facccee5 100644 --- a/src/lj_alloc.c +++ b/src/lj_alloc.c | |||
| @@ -179,11 +179,17 @@ static LJ_AINLINE int CALL_MUNMAP(void *ptr, size_t size) | |||
| 179 | 179 | ||
| 180 | #if defined(MAP_32BIT) | 180 | #if defined(MAP_32BIT) |
| 181 | 181 | ||
| 182 | #if defined(__sun__) | ||
| 183 | #define MMAP_REGION_START ((uintptr_t)0x1000) | ||
| 184 | #else | ||
| 182 | /* Actually this only gives us max. 1GB in current Linux kernels. */ | 185 | /* Actually this only gives us max. 1GB in current Linux kernels. */ |
| 186 | #define MMAP_REGION_START ((uintptr_t)0) | ||
| 187 | #endif | ||
| 188 | |||
| 183 | static LJ_AINLINE void *CALL_MMAP(size_t size) | 189 | static LJ_AINLINE void *CALL_MMAP(size_t size) |
| 184 | { | 190 | { |
| 185 | int olderr = errno; | 191 | int olderr = errno; |
| 186 | void *ptr = mmap(NULL, size, MMAP_PROT, MAP_32BIT|MMAP_FLAGS, -1, 0); | 192 | void *ptr = mmap((void *)MMAP_REGION_START, size, MMAP_PROT, MAP_32BIT|MMAP_FLAGS, -1, 0); |
| 187 | errno = olderr; | 193 | errno = olderr; |
| 188 | return ptr; | 194 | return ptr; |
| 189 | } | 195 | } |
