feat(loader, kernel): impl part of loader and initialize kernel structure

This commit is contained in:
2026-04-11 09:42:09 +08:00
parent 1233ae9e9b
commit 34ccf69569
53 changed files with 1743 additions and 777 deletions

43
arch/x86_64/mem.zig Normal file
View File

@@ -0,0 +1,43 @@
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;
}
};