sylveos

Toy Operating System
Log | Files | Refs

commit 15f260c0eab9b264cd5567ee09abd70fb0c1663e
parent 5c5f944979e33e81bfc9a60d0b50f88a63820ebc
Author: Sylvia Ivory <git@sivory.net>
Date:   Wed,  4 Feb 2026 19:40:59 -0800

Fix barrier operation

Diffstat:
Mpi/mem.zig | 13++++++++++---
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(), } }