aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plic.zig7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/plic.zig b/src/plic.zig
index 7ba6522..3529cb2 100644
--- a/src/plic.zig
+++ b/src/plic.zig
@@ -17,7 +17,6 @@ pub const Error = error{
};
pub const Context = packed struct {
- reserved: u32,
priority_threshold: u32,
claim: u32,
};
@@ -28,7 +27,7 @@ pub const Plic = struct {
const priority_offset = 0x4;
const enable_offset = 0x2000;
const context_offset_zero = 0x200000;
- const context_offset_nonzero = 0x200ffc;
+ const context_offset_nonzero = 0x201000;
pub const num_contexts = 15872;
@@ -98,7 +97,9 @@ pub const Plic = struct {
return @alignCast(@ptrCast(&mmio_slice[context_offset_zero]));
} else {
const context_offset: usize = context - 1;
- return @alignCast(@ptrCast(&mmio_slice[context_offset_nonzero + context_offset * @sizeOf(Context)]));
+ const ptr_offset = context_offset * (@sizeOf(u32) + @sizeOf(Context));
+ const context_ptr = &mmio_slice[context_offset_nonzero + ptr_offset];
+ return @alignCast(@ptrCast(context_ptr));
}
}
};