diff --git a/src/page/entry.rs b/src/page/entry.rs index 6732da4970..0f593a26a4 100644 --- a/src/page/entry.rs +++ b/src/page/entry.rs @@ -2,6 +2,7 @@ use core::marker::PhantomData; use crate::{ Arch, + PageFlags, PhysicalAddress, }; @@ -28,8 +29,13 @@ impl PageEntry { } #[inline(always)] - pub fn flags(&self) -> usize { - self.data & A::ENTRY_FLAGS_MASK + pub fn flags(&self) -> PageFlags { + unsafe { PageFlags::from_data(self.data & A::ENTRY_FLAGS_MASK) } + } + #[inline(always)] + pub fn set_flags(&mut self, flags: PageFlags) { + self.data &= !A::ENTRY_FLAGS_MASK; + self.data |= flags.data(); } #[inline(always)]