diff --git a/src/cpu/arm/single_data_swap.zig b/src/cpu/arm/single_data_swap.zig index c7b531a..f8e76cc 100644 --- a/src/cpu/arm/single_data_swap.zig +++ b/src/cpu/arm/single_data_swap.zig @@ -20,8 +20,8 @@ pub fn singleDataSwap(comptime B: bool) InstrFn { cpu.r[rd] = value; } else { // SWP - const value = std.math.rotr(u32, bus.read32(address), 8 * (address & 0x3)); - bus.write32(address, cpu.r[rm]); + const value = std.math.rotr(u32, bus.read32(address & 0xFFFF_FFFC), 8 * (address & 0x3)); + bus.write32(address & 0xFFFF_FFFC, cpu.r[rm]); cpu.r[rd] = value; } }