aboutsummaryrefslogtreecommitdiff
path: root/kapi
diff options
context:
space:
mode:
Diffstat (limited to 'kapi')
-rw-r--r--kapi/include/kapi/cpu/exception.hpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/kapi/include/kapi/cpu/exception.hpp b/kapi/include/kapi/cpu/exception.hpp
index 9fc697a..00b02e7 100644
--- a/kapi/include/kapi/cpu/exception.hpp
+++ b/kapi/include/kapi/cpu/exception.hpp
@@ -5,6 +5,8 @@
#include "kapi/memory.hpp"
+#include <kstd/format>
+
#include <cstdint>
namespace kapi::cpu
@@ -82,4 +84,38 @@ namespace kapi::cpu
} // namespace kapi::cpu
+template<>
+struct kstd::formatter<enum kapi::cpu::exception::type>
+{
+ constexpr auto parse(kstd::format_parse_context & ctx) -> decltype(ctx.begin())
+ {
+ return ctx.begin();
+ }
+
+ constexpr auto format(enum kapi::cpu::exception::type type, kstd::format_context & ctx) const -> void
+ {
+ switch (type)
+ {
+ case kapi::cpu::exception::type::unknown:
+ return ctx.push("unknown");
+ case kapi::cpu::exception::type::page_fault:
+ return ctx.push("page fault");
+ case kapi::cpu::exception::type::alignment_fault:
+ return ctx.push("alignment fault");
+ case kapi::cpu::exception::type::memory_access_fault:
+ return ctx.push("memory access fault");
+ case kapi::cpu::exception::type::illegal_instruction:
+ return ctx.push("illegal instruction");
+ case kapi::cpu::exception::type::privilege_violation:
+ return ctx.push("privilege violation");
+ case kapi::cpu::exception::type::arithmetic_error:
+ return ctx.push("arithmetic error");
+ case kapi::cpu::exception::type::breakpoint:
+ return ctx.push("breakpoint");
+ case kapi::cpu::exception::type::single_step:
+ return ctx.push("single step");
+ }
+ }
+};
+
#endif \ No newline at end of file