diff options
Diffstat (limited to 'kernel/x86.c')
| -rw-r--r-- | kernel/x86.c | 14 |
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)); +} |
