#include "kapi/cpu.hpp" #include "kapi/system.hpp" #include namespace kapi::cpu { namespace { auto handle_page_fault(kapi::cpu::exception const & context) -> bool { kstd::println(kstd::print_sink::stderr, "\tFault address: {:#018x}", context.access_address); kstd::println(kstd::print_sink::stderr, "\tPresent: {}", context.is_present); kstd::println(kstd::print_sink::stderr, "\tWrite: {}", context.is_write_access); kstd::println(kstd::print_sink::stderr, "\tUser: {}", context.is_user_mode); kapi::system::panic("Halting the system due to an unrecoverable page fault."); } } // namespace auto dispatch(exception const & context) -> bool { kstd::println(kstd::print_sink::stderr, "[OS:CPU] {} @ {:#018x}", context.type, context.instruction_pointer); switch (context.type) { case kapi::cpu::exception::type::page_fault: return handle_page_fault(context); default: return false; } } } // namespace kapi::cpu