43 lines
1.2 KiB
Zig
43 lines
1.2 KiB
Zig
pub const PAGE_SHIFT: usize = 12;
|
|
pub const PAGE_SIZE: usize = 1 << PAGE_SHIFT;
|
|
|
|
pub const PTE_SHIFT: u32 = 12;
|
|
pub const PMD_SHIFT: u32 = 21;
|
|
pub const PUD_SHIFT: u32 = 30;
|
|
pub const PGD_SHIFT: u32 = 39;
|
|
|
|
pub const PTE_SIZE: usize = 1 << PTE_SHIFT;
|
|
pub const PMD_SIZE: usize = 1 << PMD_SHIFT;
|
|
pub const PUD_SIZE: usize = 1 << PUD_SHIFT;
|
|
pub const PGD_SIZE: usize = 1 << PGD_SHIFT;
|
|
|
|
pub const PTE_MASK: usize = 1 << PTE_SHIFT - 1;
|
|
pub const PMD_MASK: usize = 1 << PMD_SHIFT - 1;
|
|
pub const PUD_MASK: usize = 1 << PUD_SHIFT - 1;
|
|
pub const PGD_MASK: usize = 1 << PGD_SHIFT - 1;
|
|
|
|
pub const ENTRIES_PER_TABLE: usize = PAGE_SIZE / 64;
|
|
|
|
pub const PFType = struct{
|
|
pub const PROT: usize = 0;
|
|
pub const WRITE: usize = 1<<1;
|
|
pub const USER: usize = 1<<2;
|
|
pub const RSVD: usize = 1<<3;
|
|
pub const INSTR: usize = 1<<4;
|
|
pub const PK: usize = 1<<5;
|
|
pub const SHSTK: usize = 1<<6;
|
|
};
|
|
|
|
pub const PGDEntry = packed struct {
|
|
present: u1,
|
|
write: u1,
|
|
supervisor: u1,
|
|
write_through: u1,
|
|
cache_disable: u1,
|
|
accessed: u1,
|
|
_padding_1: u6,
|
|
addr: u40,
|
|
pub fn getIndex(self: usize) usize {
|
|
return (self >> PGD_SHIFT) & 0x1FF;
|
|
}
|
|
}; |