hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/boot/idt.zig
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-09-12 04:08:33 +0200
committerhachem <im@hachem.wtf>2026-09-12 04:09:21 +0200
commit4f540af34d7a88547d60bed7bd28850e6d0e18ab (patch)
tree2b98bc0010a00822169459ef0d37f2ddda6f3b99 /boot/idt.zig
parentc34524767c9eac650f16dbe9059c24af2acd1397 (diff)
feat: BAREEE METTALLLLLL REVOOOOO
Diffstat (limited to 'boot/idt.zig')
-rw-r--r--boot/idt.zig7
1 files changed, 7 insertions, 0 deletions
diff --git a/boot/idt.zig b/boot/idt.zig
index adff4b3..127fd8e 100644
--- a/boot/idt.zig
+++ b/boot/idt.zig
@@ -140,6 +140,13 @@ export fn exceptionHandler(frame: *Frame) callconv(.c) noreturn {
serial.write(" cs="); writeHex(frame.cs);
serial.write("\r\n rflags="); writeHex(frame.rflags);
serial.write(" rsp="); writeHex(frame.rsp);
+ // page faults stash the offending address in CR2
+ if (frame.vector == 14) {
+ const cr2 = asm volatile ("mov %%cr2, %[out]"
+ : [out] "=r" (-> u64),
+ );
+ serial.write("\r\n cr2="); writeHex(cr2);
+ }
serial.write("\r\n");
while (true) asm volatile ("hlt");
}