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 }