summaryrefslogtreecommitdiff
path: root/kernel/x86.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/x86.c')
-rw-r--r--kernel/x86.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/kernel/x86.c b/kernel/x86.c
index ee38599..cc7c303 100644
--- a/kernel/x86.c
+++ b/kernel/x86.c
@@ -36,3 +36,17 @@ uint32_t x86_inl(int port)
return data;
}
+
+void x86_set_pdbr(uint32_t addr)
+{
+ asm volatile("mov %0, %%cr3":: "b"(addr));
+
+}
+
+void x86_paging_enable()
+{
+ unsigned int cr0;
+ asm volatile("mov %%cr0, %0": "=b"(cr0));
+ cr0 |= 0x80000000;
+ asm volatile("mov %0, %%cr0":: "b"(cr0));
+}