From 74cbf1877be0b3bc13a2172c8004c9a4553bd475 Mon Sep 17 00:00:00 2001 From: Andrew Church Date: Sun, 18 Jan 2015 07:03:16 +0900 Subject: [PATCH] Fix stwcx. and stdcx. not properly clearing the reservation address. --- rpcs3/Emu/Cell/PPUInterpreter.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/Cell/PPUInterpreter.h b/rpcs3/Emu/Cell/PPUInterpreter.h index d5be7293b9..9b946aaa78 100644 --- a/rpcs3/Emu/Cell/PPUInterpreter.h +++ b/rpcs3/Emu/Cell/PPUInterpreter.h @@ -2698,12 +2698,12 @@ private: if (CPU.R_ADDR == addr) { CPU.SetCR_EQ(0, InterlockedCompareExchange(vm::get_ptr(vm::cast(CPU.R_ADDR)), re32((u32)CPU.GPR[rs]), (u32)CPU.R_VALUE) == (u32)CPU.R_VALUE); - CPU.R_ADDR = 0; } else { CPU.SetCR_EQ(0, false); } + CPU.R_ADDR = 0; } void STWX(u32 rs, u32 ra, u32 rb) { @@ -2757,12 +2757,12 @@ private: if (CPU.R_ADDR == addr) { CPU.SetCR_EQ(0, InterlockedCompareExchange(vm::get_ptr(vm::cast(CPU.R_ADDR)), re64(CPU.GPR[rs]), CPU.R_VALUE) == CPU.R_VALUE); - CPU.R_ADDR = 0; } else { CPU.SetCR_EQ(0, false); } + CPU.R_ADDR = 0; } void STBX(u32 rs, u32 ra, u32 rb) {