const builtin = @import("builtin"); const std = @import("std"); const assert = std.debug.assert; const bootboot = @import("bootboot.zig"); const cpio = @import("formats/cpio.zig"); const cpu = @import("cpu.zig"); const global = @import("global.zig"); const logger = @import("logger.zig"); const log = logger.log; const microcode = @import("microcode.zig"); const types = @import("types.zig"); pub fn main() noreturn { log(.Info, "Entering Xenon ({} {} {})", .{ builtin.arch, builtin.mode, builtin.code_model }); { // CPU information log(.Info, "CPU vendor {}", .{cpu.CpuId.vendor()}); const sign = cpu.CpuId.signature(); log(.Info, "CPU {}", .{sign}); log(.Info, "CPU microcode patchlevel {x}", .{microcode.patchlevel()}); } var initrd = cpio.Cpio.init(global.initrd.?); if (microcode.update_cpio(initrd)) { log(.Info, "Updated microcode to patchlevel {x}", .{microcode.patchlevel()}); // Update capabilities after microcode update global.cpu_capabilities.initialize(); } log(.Info, "CPU capabilities: {}", .{global.cpu_capabilities}); @panic("Kernel is about to return"); } pub fn main_ap() noreturn { while (true) { cpu.hlt(); } @panic("AP is about to return"); }