use lazy_static::lazy_static;
use crate::{PageFormat, PageLevel};
lazy_static! {
pub static ref PAGE_FORMAT_4K: PageFormat<'static, u32> = PageFormat {
levels: &[
PageLevel {
shift_bits: 12,
va_bits: 8,
present_bit: (1 << 0 | 1 << 1, 1 << 0 | 1 << 1),
huge_page_bit: (0, 0),
page_table_mask: 0,
},
PageLevel {
shift_bits: 20,
va_bits: 12,
present_bit: (1 << 0, 1 << 0),
huge_page_bit: (1 << 1, 0),
page_table_mask: 0,
},
],
physical_mask: 0xffff_f000,
};
pub static ref PAGE_FORMAT_4K_PAE: PageFormat<'static, u64> = PageFormat {
levels: &[
PageLevel {
shift_bits: 12,
va_bits: 9,
present_bit: (1 << 0 | 1 << 1, 1 << 0 | 1 << 1),
huge_page_bit: (0, 0),
page_table_mask: 0,
},
PageLevel {
shift_bits: 21,
va_bits: 9,
present_bit: (1 << 0, 1 << 0),
huge_page_bit: (1 << 1, 0),
page_table_mask: 0,
},
PageLevel {
shift_bits: 30,
va_bits: 2,
present_bit: (1 << 0, 1 << 0),
huge_page_bit: (1 << 1, 0),
page_table_mask: 0,
},
],
physical_mask: 0x0000_00ff_ffff_f000,
};
pub static ref DEFAULT_PAGE_FORMAT: PageFormat<'static, u32> = PAGE_FORMAT_4K.clone();
}