diff --git a/rpcs3/Emu/Cell/SPURecompiler.cpp b/rpcs3/Emu/Cell/SPURecompiler.cpp index 91a04f21e9..ba2373efcc 100644 --- a/rpcs3/Emu/Cell/SPURecompiler.cpp +++ b/rpcs3/Emu/Cell/SPURecompiler.cpp @@ -3710,6 +3710,15 @@ public: m_ir->CreateCondBr(cond, exec, fail); m_ir->SetInsertPoint(exec); + const auto mmio = llvm::BasicBlock::Create(m_context, "", m_function); + const auto copy = llvm::BasicBlock::Create(m_context, "", m_function); + m_ir->CreateCondBr(m_ir->CreateICmpUGE(eal.value, m_ir->getInt32(0xe0000000)), mmio, copy); + m_ir->SetInsertPoint(mmio); + m_ir->CreateStore(ci, spu_ptr(&spu_thread::ch_mfc_cmd, &spu_mfc_cmd::cmd)); + call(&exec_mfc_cmd, m_thread); + m_ir->CreateBr(next); + m_ir->SetInsertPoint(copy); + llvm::Type* vtype = get_type(); switch (csize)