summaryrefslogtreecommitdiff
path: root/vm/vm_map.c
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2012-12-09 05:48:32 +0100
committerRichard Braun <rbraun@sceen.net>2012-12-09 05:48:32 +0100
commit2ea00731678790ed5712b19ad2fb84988682aaf5 (patch)
treed1bc437f118664329c6547d1339777142ff065d3 /vm/vm_map.c
parent1610760c6629bb87418172bfb2f2c5308f803721 (diff)
x86/pmap: inter-processor TLB updates
Scheduling is temporarily disabled until the thread module is able to cope with multiple processors.
Diffstat (limited to 'vm/vm_map.c')
-rw-r--r--vm/vm_map.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/vm/vm_map.c b/vm/vm_map.c
index 58ff2cda..3ae930f0 100644
--- a/vm/vm_map.c
+++ b/vm/vm_map.c
@@ -198,6 +198,7 @@ vm_map_kentry_alloc(size_t slab_size)
pmap_kenter(va + i, vm_page_to_pa(page));
}
+ pmap_kupdate(va, va + slab_size);
return va;
}
@@ -222,6 +223,7 @@ vm_map_kentry_free(unsigned long va, size_t slab_size)
}
pmap_kremove(va, va + slab_size);
+ pmap_kupdate(va, va + slab_size);
vm_map_kentry_free_va(va, slab_size);
}
@@ -273,6 +275,8 @@ vm_map_kentry_setup(void)
pmap_kenter(table_va + (i * PAGE_SIZE), vm_page_to_pa(page));
}
+ pmap_kupdate(table_va, table_va + (nr_pages * PAGE_SIZE));
+
slabs = (struct vm_map_kentry_slab *)table_va;
vm_map_kentry_free_slabs = &slabs[nr_slabs - 1];
vm_map_kentry_free_slabs->next = NULL;