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) #if defined(MAP_32BIT) +#if defined(__sun__) +#define MMAP_REGION_START ((uintptr_t)0x1000) +#else /* Actually this only gives us max. 1GB in current Linux kernels. */ +#define MMAP_REGION_START ((uintptr_t)0) +#endif + static LJ_AINLINE void *CALL_MMAP(size_t size) { int olderr = errno; - void *ptr = mmap(NULL, size, MMAP_PROT, MAP_32BIT|MMAP_FLAGS, -1, 0); + void *ptr = mmap((void *)MMAP_REGION_START, size, MMAP_PROT, MAP_32BIT|MMAP_FLAGS, -1, 0); errno = olderr; return ptr; }