Files
YukiOS/arch/x86_64/mem.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;
}
};