From 3e1e1a683c9d74c5fd1f2f9987e9646fdf7cb337 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Fri, 17 Dec 2021 21:48:01 +0300 Subject: [PATCH] TSX/PPU: fix conditional store regression --- rpcs3/Emu/Cell/PPUThread.cpp | 3 +-- rpcs3/Emu/Cell/SPUThread.cpp | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index 75dad5648d..8973aa88dc 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -2339,7 +2339,7 @@ static bool ppu_store_reservation(ppu_thread& ppu, u32 addr, u64 reg_value) // Aligned 8-byte reservations will be used here addr &= -8; - const u64 lock_bits = g_cfg.core.spu_accurate_dma ? vm::rsrv_unique_lock : 1; + const u64 lock_bits = vm::rsrv_unique_lock; auto [_oldd, _ok] = res.fetch_op([&](u64& r) { @@ -2348,7 +2348,6 @@ static bool ppu_store_reservation(ppu_thread& ppu, u32 addr, u64 reg_value) return false; } - // Despite using shared lock, doesn't allow other shared locks (TODO) r += lock_bits; return true; }); diff --git a/rpcs3/Emu/Cell/SPUThread.cpp b/rpcs3/Emu/Cell/SPUThread.cpp index e67464493a..f8369d4de0 100644 --- a/rpcs3/Emu/Cell/SPUThread.cpp +++ b/rpcs3/Emu/Cell/SPUThread.cpp @@ -1705,7 +1705,7 @@ void spu_thread::cpu_work() gen_interrupt = check_mfc_interrupts(pc); work_left |= interrupts_enabled; } - + in_cpu_work = false; if (!work_left) @@ -4575,7 +4575,7 @@ bool spu_thread::stop_and_signal(u32 code) spu_function_logger logger(*this, "sys_spu_thread_receive_event"); std::shared_ptr queue; - + while (true) { // Check group status, wait if necessary