Part of it is the way the kernel set's up the processes VM space. mmaps
that don't ask for a specific address get mapped starting at 0x40000000,
and the stack bottom is at 0xC0000000 - 1 page, and 0xC0000000-0xFFFFFFFF
is reserved for kernel pointers. This only leaves 2 GB (- mapped in
shared libraries, - stack space) for your mmapping. Both lowering the
0x40000000, and raising the 0xC000000 are fairly easy to do though.
(I would suggest 0x1000000, and 0xE0000000. Note that ELF executables
get mapped in around 0x08000000, and that shrinking the kernel address
space too much will make it unhappy.)
In include/asm-i386/page.h, change __PAGE_OFFSET, which also changes
PAGE_OFFSET, and TASK_SIZE
In include/asm-i386/processor.h
TASK_UNMAPPED_BASE
In arch/i386/vmlinux.lds, the def'n of _start (or . in recent kernels) should
be changed to __PAGE_OFFSET + 0x100000.
Part of it is undoubtedly the Java implementation. I haven't run across
one that will let me use more than 2 GB, even with the above kernel
tweaks, (or on solaris / UltraSparc).
-- Aaron Denney -><- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/