Xenon/src/apic.zig

18 lines
423 B
Zig

const cpu = @import("cpu.zig");
const msr = @import("msr.zig");
const types = @import("types.zig");
fn baseAddress() [*]u32 {
const reg = cpu.rdmsr(msr.apic_base_address);
return @intToPtr([*]u32, reg >> 12 & 0xffffffffff);
}
pub fn bootstrapCpuCore() bool {
const reg = cpu.rdmsr(msr.apic_base_address);
return reg & 1 << 8 != 0;
}
pub fn cpuId() u8 {
return @intCast(u8, baseAddress()[5] >> 24);
}