diff options
author | Richard Braun <rbraun@sceen.net> | 2012-12-09 05:48:32 +0100 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2012-12-09 05:48:32 +0100 |
commit | 2ea00731678790ed5712b19ad2fb84988682aaf5 (patch) | |
tree | d1bc437f118664329c6547d1339777142ff065d3 /vm/vm_map.c | |
parent | 1610760c6629bb87418172bfb2f2c5308f803721 (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.c | 4 |
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; |