Files
zing/src/mem/vmm.zig
T
2025-03-14 13:00:54 +02:00

27 lines
681 B
Zig

pub fn translationLevel(comptime shift: usize) type {
return struct {
pub const SHIFT: usize = shift;
pub const SIZE: usize = 1 << shift;
pub inline fn index(addr: usize) usize {
return (addr >> shift) & 511;
}
pub inline fn offset(addr: usize) usize {
return addr & (SIZE - 1);
}
pub inline fn address(idx: usize) usize {
return idx << shift;
}
pub inline fn align_down(addr: usize) usize {
return addr & ~(SIZE - 1);
}
pub inline fn align_up(addr: usize) usize {
return (addr + SIZE - 1) & ~(SIZE - 1);
}
};
}