birth/src/lib/arch.zig
David Gonzalez Martin 0709f980af first commit
2023-07-09 11:24:30 -06:00

35 lines
1014 B
Zig

comptime {
const os = @import("builtin").os.tag;
switch (os) {
.uefi, .freestanding => {},
else => @compileError("This file is not to be compiled with this OS"),
}
}
pub const current = switch (@import("builtin").cpu.arch) {
.x86 => x86,
.x86_64 => x86_64,
else => @compileError("Architecture not supported"),
};
pub const x86 = @import("arch/x86.zig");
pub const x86_64 = @import("arch/x86_64.zig");
pub const default_page_size = current.default_page_size;
pub const reasonable_page_size = current.reasonable_page_size;
pub const valid_page_sizes = current.valid_page_sizes;
pub const reverse_valid_page_sizes = current.reverse_valid_page_sizes;
pub fn page_shifter(comptime asked_page_size: comptime_int) comptime_int {
return @ctz(@as(u32, asked_page_size));
}
pub fn page_mask(comptime asked_page_size: comptime_int) comptime_int {
return asked_page_size - 1;
}
pub const Spinlock = current.Spinlock;
pub const stack_alignment = current.stack_alignment;