#include "kapi/cpu.hpp" #include "kapi/system.hpp" #include "arch/cpu/initialization.hpp" #include "arch/cpu/interrupts.hpp" #include namespace kapi::cpu { auto init() -> void { auto static constinit is_initialized = std::atomic_flag{}; if (is_initialized.test_and_set()) { system::panic("[x86_64] CPU has already been initialized."); } arch::cpu::initialize_descriptors(); arch::cpu::initialize_legacy_interrupts(); arch::cpu::enable_interrupts(); } auto halt() -> void { asm volatile("1: hlt\njmp 1b"); __builtin_unreachable(); } } // namespace kapi::cpu