From 190676c982ad3da1c0c3a185f5b0bcb68083d79d Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Wed, 18 Nov 2020 09:17:15 +0300 Subject: [PATCH] CPU: Fix g_suspend_counter waiting logic --- rpcs3/Emu/CPU/CPUThread.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/rpcs3/Emu/CPU/CPUThread.cpp b/rpcs3/Emu/CPU/CPUThread.cpp index 5559b7231f..3f35947dfc 100644 --- a/rpcs3/Emu/CPU/CPUThread.cpp +++ b/rpcs3/Emu/CPU/CPUThread.cpp @@ -738,13 +738,16 @@ bool cpu_thread::check_state() noexcept { u64 ctr = g_suspend_counter; - if (i < 20 || ctr & 1) + if (ctr >> 2 == s_tls_sctr >> 2) { - busy_wait(300); - } - else if (ctr >> 2 == s_tls_sctr >> 2) - { - g_suspend_counter.wait(ctr, -4); + if (i < 20 || ctr & 1) + { + busy_wait(300); + } + else + { + g_suspend_counter.wait(ctr, -4); + } } else {