From 799067f8b1ec52525be9ef5ca3b011c9733f7eaa Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Fri, 4 Dec 2015 13:35:40 +0100 Subject: [PATCH] Add `Frame::start_address` --- src/memory/paging/entry.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/memory/paging/entry.rs b/src/memory/paging/entry.rs index b6cc8488..e08ba9a5 100644 --- a/src/memory/paging/entry.rs +++ b/src/memory/paging/entry.rs @@ -1,4 +1,5 @@ use memory::Frame; +use memory::paging::PhysicalAddress; pub struct Entry(u64); @@ -24,8 +25,8 @@ impl Entry { } pub fn set(&mut self, frame: Frame, flags: EntryFlags) { - let frame_addr = (frame.number << 12) & 0x000fffff_fffff000; - self.0 = (frame_addr as u64) | flags.bits(); + assert!(frame.start_address() & !0x000fffff_fffff000 == 0); + self.0 = (frame.start_address() as u64) | flags.bits(); } } @@ -43,3 +44,9 @@ bitflags! { const NO_EXECUTE = 1 << 63, } } + +impl Frame { + fn start_address(&self) -> PhysicalAddress { + self.number << 12 + } +}