From 8fdd326761273331e5f07f77d309041a496a6a37 Mon Sep 17 00:00:00 2001 From: Jordan Gordeev Date: Fri, 5 Jun 2009 21:43:14 +0300 Subject: [PATCH] amd64: Fix booting on machines with large ammounts of RAM. --- sys/platform/pc64/amd64/pmap.c | 13 ++----------- sys/vm/vm_page.c | 5 +++++ 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/sys/platform/pc64/amd64/pmap.c b/sys/platform/pc64/amd64/pmap.c index d139d1f1f0..6b3cdcc975 100644 --- a/sys/platform/pc64/amd64/pmap.c +++ b/sys/platform/pc64/amd64/pmap.c @@ -1132,18 +1132,9 @@ READY1 */ vm_offset_t pmap_map(vm_offset_t virt, vm_paddr_t start, vm_paddr_t end, int prot) -READY1 +READY3 { - /* - * JG Are callers prepared to get an address in the DMAP, - * instead of the passed-in virt? - */ - while (start < end) { - pmap_kenter(virt, start); - virt += PAGE_SIZE; - start += PAGE_SIZE; - } - return (virt); + return PHYS_TO_DMAP(start); } diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 345036292d..7f5d217966 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -262,6 +262,11 @@ vm_page_startup(vm_offset_t vaddr) new_end = trunc_page(end - page_range * sizeof(struct vm_page)); mapped = pmap_map(mapped, new_end, end, VM_PROT_READ | VM_PROT_WRITE); +#ifdef __amd64__ + /* pmap_map() returns an address in the DMAP region */ + vm_page_array = (vm_page_t) mapped; + mapped = vaddr; +#endif /* * Clear all of the page structures -- 2.41.0