diff options
author | Himbeer <himbeer@disroot.org> | 2024-05-11 21:32:20 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-05-11 21:32:20 +0200 |
commit | 9c45810aaceaf52499886cbac028173cf0dd1c38 (patch) | |
tree | afdf78280eb12bc318edea560f30c5196256cf95 /src | |
parent | bc5211222c243fe37b7122fe294ba52649b4e601 (diff) |
plic: Fix enable bit pointer calculation
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; } } |