summaryrefslogtreecommitdiff
path: root/i386/i386/vm_param.h
diff options
context:
space:
mode:
Diffstat (limited to 'i386/i386/vm_param.h')
-rw-r--r--i386/i386/vm_param.h26
1 files changed, 23 insertions, 3 deletions
diff --git a/i386/i386/vm_param.h b/i386/i386/vm_param.h
index 7051b7af..edd9522c 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) */
@@ -109,11 +122,18 @@
#ifdef MACH_XEN
/* TODO Completely check Xen physical/virtual layout */
+#ifdef __LP64__
+#define VM_PAGE_MAX_SEGS 4
+#define VM_PAGE_DMA32_LIMIT DECL_CONST(0x100000000, UL)
+#define VM_PAGE_DIRECTMAP_LIMIT DECL_CONST(0x400000000000, UL)
+#define VM_PAGE_HIGHMEM_LIMIT DECL_CONST(0x10000000000000, ULL)
+#else
#define VM_PAGE_MAX_SEGS 3
#define VM_PAGE_DIRECTMAP_LIMIT (VM_MAX_KERNEL_ADDRESS \
- VM_MIN_KERNEL_ADDRESS \
- VM_KERNEL_MAP_SIZE)
#define VM_PAGE_HIGHMEM_LIMIT DECL_CONST(0x10000000000000, ULL)
+#endif
#else /* MACH_XEN */
#ifdef __LP64__
#define VM_PAGE_MAX_SEGS 4