From 69d2114654a652329f49925874b83d2d1fcdb21d Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Mon, 10 Oct 2011 15:37:35 -0700 Subject: [PATCH] add flag MAP_REMAP to remap already mapped paged with new attributes --- arch/x86/mm/page.c | 2 +- include/metalsvm/stdlib.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/page.c b/arch/x86/mm/page.c index b2cfaad4..1e86cb53 100644 --- a/arch/x86/mm/page.c +++ b/arch/x86/mm/page.c @@ -338,7 +338,7 @@ size_t map_region(size_t viraddr, size_t phyaddr, uint32_t npages, uint32_t flag pgt = (page_table_t*) ((KERNEL_SPACE - 1024*PAGE_SIZE + index*PAGE_SIZE) & 0xFFFFF000); index = (viraddr >> 12) & 0x3FF; - if (BUILTIN_EXPECT(pgt->entries[index], 0)) { + if (pgt->entries[index] && !(flags & MAP_REMAP)) { spinlock_unlock(pgd_lock); kprintf("0x%x is already maped\n", viraddr); return 0; diff --git a/include/metalsvm/stdlib.h b/include/metalsvm/stdlib.h index 0a568204..4d9e2dc2 100644 --- a/include/metalsvm/stdlib.h +++ b/include/metalsvm/stdlib.h @@ -42,7 +42,6 @@ extern "C" { #define MAP_PAGE_TABLE (1 << 2) #define MAP_NO_CACHE (1 << 3) #define MAP_WT (1 << 5) -//#define MAP_HEAP (1 << 5) #define MAP_CODE (1 << 6) #define MAP_READONLY (1 << 7) #ifdef CONFIG_ROCKCREEK @@ -51,6 +50,7 @@ extern "C" { #define MAP_SVM_STRONG (1 << 9) #define MAP_SVM_LAZYRELEASE (1 << 10) #define MAP_NO_ACCESS (1 << 11) +#define MAP_REMAP (1 << 12) void NORETURN abort(void);