Add tests to ensure correct constant calculation
This commit is contained in:
+4
-1
@@ -19,11 +19,14 @@ pub trait Arch {
|
||||
|
||||
const PAGE_SIZE: usize = 1 << Self::PAGE_SHIFT;
|
||||
const PAGE_OFFSET_MASK: usize = Self::PAGE_SIZE - 1;
|
||||
const PAGE_ADDRESS_MASK: usize = !Self::PAGE_OFFSET_MASK;
|
||||
const PAGE_ADDRESS_SHIFT: usize = Self::PAGE_LEVELS * Self::PAGE_ENTRY_SHIFT + Self::PAGE_SHIFT;
|
||||
const PAGE_ADDRESS_SIZE: usize = 1 << Self::PAGE_ADDRESS_SHIFT;
|
||||
const PAGE_ADDRESS_MASK: usize = Self::PAGE_ADDRESS_SIZE - 1 - Self::PAGE_OFFSET_MASK;
|
||||
const PAGE_ENTRY_SIZE: usize = 1 << (Self::PAGE_SHIFT - Self::PAGE_ENTRY_SHIFT);
|
||||
const PAGE_ENTRIES: usize = 1 << Self::PAGE_ENTRY_SHIFT;
|
||||
const PAGE_ENTRY_MASK: usize = Self::PAGE_ENTRIES - 1;
|
||||
|
||||
//TODO: allow this to differ from page address mask
|
||||
const ENTRY_ADDRESS_MASK: usize = Self::PAGE_ADDRESS_MASK;
|
||||
const ENTRY_FLAGS_MASK: usize = !Self::ENTRY_ADDRESS_MASK;
|
||||
|
||||
|
||||
@@ -45,3 +45,24 @@ impl Arch for X8664Arch {
|
||||
unimplemented!();
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::Arch;
|
||||
use super::X8664Arch;
|
||||
|
||||
#[test]
|
||||
fn constants() {
|
||||
assert_eq!(X8664Arch::PAGE_SIZE, 4096);
|
||||
assert_eq!(X8664Arch::PAGE_OFFSET_MASK, 0xFFF);
|
||||
assert_eq!(X8664Arch::PAGE_ADDRESS_SHIFT, 48);
|
||||
assert_eq!(X8664Arch::PAGE_ADDRESS_SIZE, 0x0001_0000_0000_0000);
|
||||
assert_eq!(X8664Arch::PAGE_ADDRESS_MASK, 0x0000_FFFF_FFFF_F000);
|
||||
assert_eq!(X8664Arch::PAGE_ENTRY_SIZE, 8);
|
||||
assert_eq!(X8664Arch::PAGE_ENTRIES, 512);
|
||||
assert_eq!(X8664Arch::PAGE_ENTRY_MASK, 0x1FF);
|
||||
|
||||
assert_eq!(X8664Arch::ENTRY_ADDRESS_MASK, 0x0000_FFFF_FFFF_F000);
|
||||
assert_eq!(X8664Arch::ENTRY_FLAGS_MASK, 0xFFFF_0000_0000_0FFF);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user