From e88de41914aaf5743722c39e50721a6cf58473d7 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Fri, 4 Dec 2015 16:24:23 +0100 Subject: [PATCH] Calculate next_table_address through directly through addresses --- src/memory/paging/table.rs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/memory/paging/table.rs b/src/memory/paging/table.rs index d374bbd6..ecb4bc3f 100644 --- a/src/memory/paging/table.rs +++ b/src/memory/paging/table.rs @@ -47,16 +47,10 @@ impl Table where L: HierachicalLevel } fn next_table_address(&self, index: usize) -> Option { - use memory::paging::Page; - let entry_flags = self[index].flags(); if entry_flags.contains(PRESENT) && !entry_flags.contains(HUGE_PAGE) { - let table_page = Page::containing_address(self as *const _ as usize); - assert!(table_page.number >= 0o_777_000_000_000); - let next_table_page = Page { - number: ((table_page.number << 9) & 0o_777_777_777_777) | index, - }; - Some(next_table_page.start_address()) + let table_address = self as *const _ as usize; + Some((table_address << 9) | (index << 12)) } else { None }