aboutsummaryrefslogtreecommitdiff
path: root/src/kernel.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel.zig')
-rw-r--r--src/kernel.zig16
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");
- }
}