Add Frame::start_address

This commit is contained in:
Philipp Oppermann
2015-12-04 13:35:40 +01:00
parent 51f83717d6
commit 799067f8b1

View File

@@ -1,4 +1,5 @@
use memory::Frame; use memory::Frame;
use memory::paging::PhysicalAddress;
pub struct Entry(u64); pub struct Entry(u64);
@@ -24,8 +25,8 @@ impl Entry {
} }
pub fn set(&mut self, frame: Frame, flags: EntryFlags) { pub fn set(&mut self, frame: Frame, flags: EntryFlags) {
let frame_addr = (frame.number << 12) & 0x000fffff_fffff000; assert!(frame.start_address() & !0x000fffff_fffff000 == 0);
self.0 = (frame_addr as u64) | flags.bits(); self.0 = (frame.start_address() as u64) | flags.bits();
} }
} }
@@ -43,3 +44,9 @@ bitflags! {
const NO_EXECUTE = 1 << 63, const NO_EXECUTE = 1 << 63,
} }
} }
impl Frame {
fn start_address(&self) -> PhysicalAddress {
self.number << 12
}
}