The kernel vm region is moved to the last 2GB of the 64-bit address
space. According to the -mcmodel=kernel, the code must be placed in
this range, but probably other addresses can be used for other data
structures, direct memory mapping and so on (as in Linux).
This is just the first step towards being able to use more memory, as
now also user-space has the same 3GB as on a 32-bit kernel, but the
memory structure has not changed much otherwise. The kernel map is not
immediatly following the user map anymore, so the main changes are on
the pmap module.
Luca Dariz (9):
prepare pmap helpers for full 64 bit memory map
fix x86_64 asm for higher kernel addresses
factor out xen-specific bootstrap
factor out PAE-specific bootstrap
use L4 page table directly on x86_64 instead of short-circuiting to
pdpbase
add more explicit names for user space virtual space limits
extend data types to hold a 64-bit address
separate initialization of kernel and user PTP tables
move kernel virtual address space to upper addresses
i386/i386/db_interface.c | 4 +-
i386/i386/ldt.c | 8 +-
i386/i386/pcb.c | 6 +-
i386/i386/trap.c | 12 +-
i386/i386/vm_param.h | 26 ++-
i386/i386at/biosmem.c | 2 -
i386/include/mach/i386/vm_param.h | 2 +-
i386/intel/pmap.c | 328 ++++++++++++++++++++----------
i386/intel/pmap.h | 27 ++-
kern/task.c | 4 +-
x86_64/Makefrag.am | 12 +-
x86_64/interrupt.S | 4 +-
x86_64/locore.S | 10 +-
13 files changed, 290 insertions(+), 155 deletions(-)
--
2.30.2