summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2012-03-10 13:46:33 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2020-03-28 16:28:11 +0100
commit773c29c71a66a567a1cf125d2e1082afb7867b01 (patch)
treed3513040549d7d1abe4ad35e9e3e376bd126fd3f
parente3a25bd6b41397b88688b77d86953990251391b5 (diff)
vm_param: Add 64bit variant
* i386/i386/vm_param.h (VM_MIN_KERNEL_ADDRESS, HYP_VIRT_START, LINEAR_MIN_KERNEL_ADDRESS, LINEAR_MAX_KERNEL_ADDRESS): Add 64bit variants.
-rw-r--r--i386/i386/vm_param.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/i386/i386/vm_param.h b/i386/i386/vm_param.h
index 7051b7af..1ca6b22c 100644
--- a/i386/i386/vm_param.h
+++ b/i386/i386/vm_param.h
@@ -35,7 +35,11 @@
/* This can be changed freely to separate kernel addresses from user addresses
* for better trace support in kdb; the _START symbol has to be offset by the
* same amount. */
+#ifdef __x86_64__
+#define VM_MIN_KERNEL_ADDRESS 0x40000000UL
+#else
#define VM_MIN_KERNEL_ADDRESS 0xC0000000UL
+#endif
#ifdef MACH_XEN
/* PV kernels can be loaded directly to the target virtual address */
@@ -46,11 +50,15 @@
#endif /* MACH_XEN */
#ifdef MACH_PV_PAGETABLES
+#ifdef __i386__
#if PAE
#define HYP_VIRT_START HYPERVISOR_VIRT_START_PAE
#else /* PAE */
#define HYP_VIRT_START HYPERVISOR_VIRT_START_NONPAE
#endif /* PAE */
+#else
+#define HYP_VIRT_START HYPERVISOR_VIRT_START
+#endif
#define VM_MAX_KERNEL_ADDRESS (HYP_VIRT_START - LINEAR_MIN_KERNEL_ADDRESS + VM_MIN_KERNEL_ADDRESS)
#else /* MACH_PV_PAGETABLES */
#define VM_MAX_KERNEL_ADDRESS (LINEAR_MAX_KERNEL_ADDRESS - LINEAR_MIN_KERNEL_ADDRESS + VM_MIN_KERNEL_ADDRESS)
@@ -62,11 +70,16 @@
*/
#define VM_KERNEL_MAP_SIZE (152 * 1024 * 1024)
-/* The kernel virtual address space is actually located
- at high linear addresses.
- This is the kernel address range in linear addresses. */
+/* This is the kernel address range in linear addresses. */
+#ifdef __x86_64__
+#define LINEAR_MIN_KERNEL_ADDRESS VM_MIN_KERNEL_ADDRESS
+#define LINEAR_MAX_KERNEL_ADDRESS (0x00007fffffffffffUL)
+#else
+/* On x86, the kernel virtual address space is actually located
+ at high linear addresses. */
#define LINEAR_MIN_KERNEL_ADDRESS (VM_MAX_ADDRESS)
#define LINEAR_MAX_KERNEL_ADDRESS (0xffffffffUL)
+#endif
#ifdef MACH_PV_PAGETABLES
/* need room for mmu updates (2*8bytes) */