aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-05-11 21:32:20 +0200
committerHimbeer <himbeer@disroot.org>2024-05-11 21:32:20 +0200
commit9c45810aaceaf52499886cbac028173cf0dd1c38 (patch)
treeafdf78280eb12bc318edea560f30c5196256cf95 /src
parentbc5211222c243fe37b7122fe294ba52649b4e601 (diff)
plic: Fix enable bit pointer calculation
Diffstat (limited to 'src')
-rw-r--r--src/plic.zig7
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;
}
}