__attribute__((__aligned__(PGSIZE)))
pte_t entry_pgtable1[NPTENTRIES] = {};
__attribute__((__aligned__(PGSIZE)))
pte_t entry_pgtable2[NPTENTRIES] = {};
__attribute__((__aligned__(PGSIZE)))
pde_t entry_pgdir[NPDENTRIES] = {
[0] = ((uint)entry_pgtable1) + PTE_P + PTE_W,
[1] = ((uint)entry_pgtable2) + PTE_P + PTE_W,
};```
this is in a c file im converting to zig doing this:
```zig
var entry_pgtable1: [mmu.NPTENTRIES]mmu.pte_t align(mmu.PGSIZE) = std.mem.zeroes([mmu.NPDENTRIES]mmu.pde_t);
var entry_pgtable2: [mmu.NPTENTRIES]mmu.pte_t align(mmu.PGSIZE) = std.mem.zeroes([mmu.NPDENTRIES]mmu.pde_t);
var entry_pgdir: [mmu.NPDENTRIES]mmu.pde_t align(mmu.PGSIZE) = std.mem.zeroes([mmu.NPDENTRIES]mmu.pde_t);
comptime {
entry_pgdir[0] = @as(u32, @intFromPtr(&entry_pgtable1)) + mmu.PTE_P + mmu.PTE_W;
entry_pgdir[1] = @as(u32, @intFromPtr(&entry_pgtable2)) + mmu.PTE_P + mmu.PTE_W;
}
(this also fails to compile if they are = undefined instead of zeroes)
is c hiding the populations of the table somewhere? that seems unlikely