diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plic.zig | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/plic.zig b/src/plic.zig index 3529cb2..7d2d032 100644 --- a/src/plic.zig +++ b/src/plic.zig @@ -38,14 +38,15 @@ pub const Plic = struct { if (interrupt == 0) return Error.InterruptOutOfRange; const mmio_slice = self.mmioSlice(); - const enable_ptr: *volatile [num_contexts]u32 = @alignCast(@ptrCast(&mmio_slice[enable_offset])); + const enable_ptr: *volatile [num_contexts][32]u32 = @alignCast(@ptrCast(&mmio_slice[enable_offset])); + const register = interrupt / 32; const bit = @as(u32, 1) << @intCast(interrupt & 0x1f); if (enable) { - enable_ptr[context] |= bit; + enable_ptr[context][register] |= bit; } else { - enable_ptr[context] &= ~bit; + enable_ptr[context][register] &= ~bit; } } |