From e071c2468067c77e8672755082cc4006e33d11ee Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 9 Dec 2015 00:10:50 +0100 Subject: [PATCH] Recursive map the P4 table --- src/arch/x86_64/boot.asm | 5 +++++ src/memory/paging/table.rs | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/arch/x86_64/boot.asm b/src/arch/x86_64/boot.asm index 2f5295d7..4abb2899 100644 --- a/src/arch/x86_64/boot.asm +++ b/src/arch/x86_64/boot.asm @@ -42,6 +42,11 @@ start: jmp gdt64.code:long_mode_start setup_page_tables: + ; recursive map P4 + mov eax, p4_table + or eax, 0b11 ; present + writable + mov [p4_table + 511 * 8], eax + ; map first P4 entry to P3 table mov eax, p3_table or eax, 0b11 ; present + writable diff --git a/src/memory/paging/table.rs b/src/memory/paging/table.rs index 0a1935e2..41d92742 100644 --- a/src/memory/paging/table.rs +++ b/src/memory/paging/table.rs @@ -2,6 +2,8 @@ use memory::paging::entry::*; use memory::paging::ENTRY_COUNT; use core::ops::{Index, IndexMut}; +pub const P4: *mut Table = 0xffffffff_fffff000 as *mut _; + pub struct Table { entries: [Entry; ENTRY_COUNT], }