diff options
| author | hachem <im@hachem.wtf> | 2026-09-10 06:39:50 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-09-10 06:39:50 +0200 |
| commit | 0434097a393e790085911bad5229a6654876dae3 (patch) | |
| tree | 08c5083f98fd3cd508766cb8be5712690ab3575d /boot/boot.zig | |
| parent | d8b53a78fcb131235c1e83fe7d6600ab50560420 (diff) | |
feat: basic serial driver
Diffstat (limited to 'boot/boot.zig')
| -rw-r--r-- | boot/boot.zig | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/boot/boot.zig b/boot/boot.zig index 0f6c92c..a7822af 100644 --- a/boot/boot.zig +++ b/boot/boot.zig @@ -1,12 +1,17 @@ const std = @import("std"); const limine = @import("limine.zig"); +const serial = @import("serial.zig"); // We need a panic handler otherwise zig won't be happy, // std usually formats a message through std.Io.Writer which -// emits SSE instructions which I haven't enabled. For now -// we just halt. +// emits SSE instructions which I haven't enabled. Ours +// dumps the message to serial, then halts. pub const panic = std.debug.FullPanic(struct { - fn halt(_: []const u8, _: ?usize) noreturn { + fn halt(msg: []const u8, _: ?usize) noreturn { + serial.init(); + serial.write("\n!!! uhhhh engine kaput : "); + serial.write(msg); + serial.write("\n"); while (true) asm volatile ("hlt"); } }.halt); @@ -18,5 +23,7 @@ export var requests_end: limine.RequestsEndMarker linksection(".limine_requests_ // ENTRY(_start) export fn _start() callconv(.c) noreturn { + serial.init(); + serial.write("if you see this, it means revel didn't shit the bed"); while (true) asm volatile ("hlt"); } |
