From d1fd4d5000d72bac4b86f0a9c46ea70020d55d92 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Fri, 3 Aug 2018 15:34:22 +0300 Subject: [PATCH] PPU: don't use transactions (test) --- rpcs3/Emu/Cell/PPUThread.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index b7cbf0f64f..631511c693 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -1072,8 +1072,9 @@ extern bool ppu_stwcx(ppu_thread& ppu, u32 addr, u32 reg_value) if (LIKELY(g_use_rtm)) { - if (ppu_stwcx_tx(addr, ppu.rtime, ppu.rdata, reg_value)) + if (data.compare_and_swap_test(static_cast(ppu.rdata), reg_value)) { + vm::reservation_update(addr, sizeof(u32)); vm::reservation_notifier(addr, sizeof(u32)).notify_all(); ppu.raddr = 0; return true; @@ -1164,8 +1165,9 @@ extern bool ppu_stdcx(ppu_thread& ppu, u32 addr, u64 reg_value) if (LIKELY(g_use_rtm)) { - if (ppu_stdcx_tx(addr, ppu.rtime, ppu.rdata, reg_value)) + if (data.compare_and_swap_test(ppu.rdata, reg_value)) { + vm::reservation_update(addr, sizeof(u64)); vm::reservation_notifier(addr, sizeof(u64)).notify_all(); ppu.raddr = 0; return true;