commit 15f260c0eab9b264cd5567ee09abd70fb0c1663e
parent 5c5f944979e33e81bfc9a60d0b50f88a63820ebc
Author: Sylvia Ivory <git@sivory.net>
Date: Wed, 4 Feb 2026 19:40:59 -0800
Fix barrier operation
Diffstat:
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/pi/mem.zig b/pi/mem.zig
@@ -17,6 +17,11 @@ inline fn dmb() void {
);
}
+// Prevents the compiler reordering statements
+inline fn compiler_barrier() void {
+ asm volatile ("" ::: .{ .memory = true });
+}
+
const BarrierKind = enum {
Strict,
Weak,
@@ -25,12 +30,14 @@ const BarrierKind = enum {
const Operation = enum {
Read,
Write,
+ Compiler,
};
-pub inline fn barrier(op: Operation) void {
+pub inline fn barrier(comptime op: Operation) void {
switch (op) {
- .Write => dmb(),
- .Read => dsb(),
+ .Write => dsb(),
+ .Read => dmb(),
+ .Compiler => compiler_barrier(),
}
}