add flag MAP_REMAP to remap already mapped paged with new attributes

This commit is contained in:
Stefan Lankes 2011-10-10 15:37:35 -07:00
parent e7fa5f90e5
commit 69d2114654
2 changed files with 2 additions and 2 deletions

View file

@ -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;

View file

@ -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);