aboutsummaryrefslogtreecommitdiff
path: root/vm/vm_user.c
diff options
context:
space:
mode:
Diffstat (limited to 'vm/vm_user.c')
-rw-r--r--vm/vm_user.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/vm/vm_user.c b/vm/vm_user.c
index 18f79eda..f42c84bf 100644
--- a/vm/vm_user.c
+++ b/vm/vm_user.c
@@ -608,19 +608,23 @@ kern_return_t vm_allocate_contiguous(
if (pmax > VM_PAGE_DMA_LIMIT)
#ifdef VM_PAGE_DMA32_LIMIT
#if VM_PAGE_DMA32_LIMIT < VM_PAGE_DIRECTMAP_LIMIT
- selector = VM_PAGE_SEL_DMA32;
+ if (pmax <= VM_PAGE_DMA32_LIMIT)
+ selector = VM_PAGE_SEL_DMA32;
if (pmax > VM_PAGE_DMA32_LIMIT)
#endif
#endif
- selector = VM_PAGE_SEL_DIRECTMAP;
+ if (pmax <= VM_PAGE_DIRECTMAP_LIMIT)
+ selector = VM_PAGE_SEL_DIRECTMAP;
if (pmax > VM_PAGE_DIRECTMAP_LIMIT)
#ifdef VM_PAGE_DMA32_LIMIT
#if VM_PAGE_DMA32_LIMIT > VM_PAGE_DIRECTMAP_LIMIT
- selector = VM_PAGE_SEL_DMA32;
+ if (pmax <= VM_PAGE_DMA32_LIMIT)
+ selector = VM_PAGE_SEL_DMA32;
if (pmax > VM_PAGE_DMA32_LIMIT)
#endif
#endif
- selector = VM_PAGE_SEL_HIGHMEM;
+ if (pmax <= VM_PAGE_HIGHMEM_LIMIT)
+ selector = VM_PAGE_SEL_HIGHMEM;
size = vm_page_round(size);