diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/interrupts.zig | 29 |
1 files changed, 3 insertions, 26 deletions
diff --git a/src/lib/interrupts.zig b/src/lib/interrupts.zig index 1d98b06..3aec2ac 100644 --- a/src/lib/interrupts.zig +++ b/src/lib/interrupts.zig @@ -88,33 +88,11 @@ pub const SyncCause = enum(u63) { _, }; -pub const Sstatus = packed struct(usize) { - u_interrupts: u1, - s_interrupts: u1, - reserved0: u2, - u_interrupts_previous: u1, - s_interrupts_previous: u1, - reserved1: u2, - previous_privilege: u1, - reserved2: u4, - fs: u2, - xs: u2, - reserved3: u1, - sum: u1, - mxr: u1, - reserved4: u12, - u_xlen: u2, - reserved5: u29, - sd: u1, -}; - -export fn handleTrap(epc: usize, tval: usize, cause_bits: usize, status: Sstatus, frame: *trap.Frame) usize { - _ = &status; - _ = &frame; - +export fn handleTrap(epc: usize, tval: usize, cause_bits: usize, frame: *trap.Frame) usize { const console = Console.autoChoose().?; const w = console.writer(); + const status = instructions.sstatus.read(); const cause: Cause = @bitCast(cause_bits); if (cause.isAsync()) { @@ -247,8 +225,7 @@ export fn supervisorTrapVector() align(4) callconv(.Naked) noreturn { \\ csrr a0, sepc \\ csrr a1, stval \\ csrr a2, scause - \\ csrr a3, sstatus - \\ mv a4, t5 + \\ mv a3, t5 \\ la sp, _stvec_stack_end \\ call handleTrap \\ |