From 54b42c0226e282c64e2cd78028075eb0908c6470 Mon Sep 17 00:00:00 2001 From: josh Date: Sat, 4 Jul 2009 00:22:18 +0000 Subject: [PATCH] added set_cr3() macro and called it to set the PDBR git-svn-id: svn://anubis/hos/trunk@40 5b3e749e-e535-0410-8002-a9bb6afbdfca --- kernel/mm/mm.cc | 3 +++ kernel/mm/mm.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/kernel/mm/mm.cc b/kernel/mm/mm.cc index d0d8ad8..ba15fec 100644 --- a/kernel/mm/mm.cc +++ b/kernel/mm/mm.cc @@ -134,6 +134,9 @@ void mm_bootstrap() mm_map(page_base, page_base - KERNEL_OFFSET, 0, 1); } + /* set the page directory base register */ + set_cr3(&page_directory); + mm_use_virtual_offset = false; } diff --git a/kernel/mm/mm.h b/kernel/mm/mm.h index 626111e..a7ef217 100644 --- a/kernel/mm/mm.h +++ b/kernel/mm/mm.h @@ -29,5 +29,8 @@ int mm_map(u32_t virtual_address, u32_t physical_address, u32_t mm_page_alloc(); +#define set_cr3(address) \ + __asm__ __volatile__ ("movl %0, %%cr3" : : "r" (address)); + #endif