diff --git a/rpcs3/Emu/Cell/SPUThread.cpp b/rpcs3/Emu/Cell/SPUThread.cpp index f795073ae6..8408e38596 100644 --- a/rpcs3/Emu/Cell/SPUThread.cpp +++ b/rpcs3/Emu/Cell/SPUThread.cpp @@ -1655,8 +1655,9 @@ void spu_thread::do_putlluc(const spu_mfc_cmd& args) { // Full lock (heavyweight) // TODO: vm::check_addr + auto& super_data = *vm::get_super_ptr(addr); vm::writer_lock lock(addr); - mov_rdata(data, to_write); + mov_rdata(super_data, to_write); res.release(res.load() + 127); } else @@ -1865,13 +1866,14 @@ bool spu_thread::process_mfc_cmd() if (g_cfg.core.spu_accurate_getllar) { *reinterpret_cast*>(&data) += 0; + const auto& super_data = *vm::get_super_ptr(addr); // Full lock (heavyweight) // TODO: vm::check_addr vm::writer_lock lock(addr); ntime = old_time; - mov_rdata(dst, data); + mov_rdata(dst, super_data); res.release(old_time); } else @@ -1965,13 +1967,15 @@ bool spu_thread::process_mfc_cmd() { *reinterpret_cast*>(&data) += 0; + auto& super_data = *vm::get_super_ptr(addr); + // Full lock (heavyweight) // TODO: vm::check_addr vm::writer_lock lock(addr); - if (cmp_rdata(rdata, data)) + if (cmp_rdata(rdata, super_data)) { - mov_rdata(data, to_write); + mov_rdata(super_data, to_write); res.release(old_time + 128); result = 1; }