diff options
Diffstat (limited to 'src/kernel.zig')
-rw-r--r-- | src/kernel.zig | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/kernel.zig b/src/kernel.zig index 47d1f05..de18ee1 100644 --- a/src/kernel.zig +++ b/src/kernel.zig @@ -44,6 +44,14 @@ pub fn panic(msg: []const u8, error_return_trace: ?*std.builtin.StackTrace, ret_ @setCold(true); + var sstatus = instructions.sstatus.read(); + sstatus.user_interrupt_enable = 0; + sstatus.supervisor_interrupt_enable = 0; + instructions.sstatus.write(sstatus); + + instructions.sie.write(interrupts.Enable.none); + instructions.sip.write(interrupts.Enable.none); + const console = Console.autoChoose() orelse while (true) asm volatile ("wfi"); const w = console.writer(); @@ -53,9 +61,7 @@ pub fn panic(msg: []const u8, error_return_trace: ?*std.builtin.StackTrace, ret_ w.print("{s}\r\n", .{msg}) catch while (true) asm volatile ("wfi"); w.print("= !! ========== !! =\r\n", .{}) catch while (true) asm volatile ("wfi"); - while (true) { - asm volatile ("wfi"); - } + while (true) asm volatile ("wfi"); } export fn _start() callconv(.Naked) noreturn { @@ -191,8 +197,4 @@ fn pagedRun() !noreturn { try w.print("Enter process demo\r\n", .{}); try process.demo(allocator); - - while (true) { - asm volatile ("wfi"); - } } |