diff --git a/rpcs3/Emu/CPU/CPUThread.cpp b/rpcs3/Emu/CPU/CPUThread.cpp index 96c80a8cdf..6c445c284e 100644 --- a/rpcs3/Emu/CPU/CPUThread.cpp +++ b/rpcs3/Emu/CPU/CPUThread.cpp @@ -783,9 +783,12 @@ bool cpu_thread::check_state() noexcept { if (cpu_flag::wait - state0) { - // Yield itself - escape = false; - state0 += cpu_flag::yield; + if (!escape || !retval) + { + // Yield itself + state0 += cpu_flag::yield; + escape = false; + } } if (const u128 bits = s_cpu_bits)