44 lines
1.3 KiB
Zig
44 lines
1.3 KiB
Zig
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");
|
|
}
|