diff --git a/src/Cafe/HW/Espresso/Recompiler/BackendX64/BackendX64.cpp b/src/Cafe/HW/Espresso/Recompiler/BackendX64/BackendX64.cpp index e32d1ea8..853bd0cf 100644 --- a/src/Cafe/HW/Espresso/Recompiler/BackendX64/BackendX64.cpp +++ b/src/Cafe/HW/Espresso/Recompiler/BackendX64/BackendX64.cpp @@ -130,7 +130,7 @@ void* ATTR_MS_ABI PPCRecompiler_virtualHLE(PPCInterpreter_t* hCPU, uint32 hleFun hCPU->remainingCycles -= 500; // let subtract about 500 cycles for each HLE call hCPU->gpr[3] = 0; PPCInterpreter_nextInstruction(hCPU); - return ppcInterpreterCurrentInstance; + return PPCInterpreter_getCurrentInstance(); } else { @@ -139,7 +139,7 @@ void* ATTR_MS_ABI PPCRecompiler_virtualHLE(PPCInterpreter_t* hCPU, uint32 hleFun hleCall(hCPU); } hCPU->rspTemp = prevRSPTemp; - return ppcInterpreterCurrentInstance; + return PPCInterpreter_getCurrentInstance(); } void ATTR_MS_ABI PPCRecompiler_getTBL(PPCInterpreter_t* hCPU, uint32 gprIndex) diff --git a/src/util/Fiber/FiberBoost.cpp b/src/util/Fiber/FiberBoost.cpp index 12dcdf4e..512e79a9 100644 --- a/src/util/Fiber/FiberBoost.cpp +++ b/src/util/Fiber/FiberBoost.cpp @@ -68,7 +68,9 @@ void Fiber::Switch(Fiber& targetFiber) FiberImpl* _targetFiber = static_cast(targetFiber.m_implData); _targetFiber->previousFiber = _currentFiber; sCurrentFiber = &targetFiber; + std::atomic_thread_fence(std::memory_order_seq_cst); auto transfer = boost::context::detail::jump_fcontext(_targetFiber->context, _targetFiber); + std::atomic_thread_fence(std::memory_order_seq_cst); if (_currentFiber->previousFiber == nullptr) { return;