From 0e74f2e34048445f4a24dbec5a9ae000e1c59d6a Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Sun, 1 Apr 2018 22:37:35 +0300 Subject: [PATCH] Fix MMIO on SPU Thanks Digitaldude555 for reporting the bug and @elad335 for pinging me --- rpcs3/Emu/Cell/SPUThread.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/Cell/SPUThread.cpp b/rpcs3/Emu/Cell/SPUThread.cpp index 6d2bc52b56..5fbdd7b613 100644 --- a/rpcs3/Emu/Cell/SPUThread.cpp +++ b/rpcs3/Emu/Cell/SPUThread.cpp @@ -777,7 +777,7 @@ bool SPUThread::do_list_transfer(spu_mfc_cmd& args) if (size) { - if (!vm::check_addr(addr, size, vm::page_readable | (args.cmd & MFC_PUT_CMD ? vm::page_writable : 0))) + if (!vm::check_addr(addr, size, vm::page_allocated | vm::page_readable | (args.cmd & MFC_PUT_CMD ? vm::page_writable : 0)) && args.eal < RAW_SPU_BASE_ADDR) { Emu.Pause(); state += cpu_flag::stop; @@ -922,7 +922,7 @@ void SPUThread::do_mfc() { vm::reader_lock lock; - if (!vm::check_addr(args.eal, args.size, vm::page_readable | (args.cmd & MFC_PUT_CMD ? vm::page_writable : 0))) + if (!vm::check_addr(args.eal, args.size, vm::page_allocated | vm::page_readable | (args.cmd & MFC_PUT_CMD ? vm::page_writable : 0)) && args.eal < RAW_SPU_BASE_ADDR) { Emu.Pause(); state += cpu_flag::stop; @@ -1207,7 +1207,7 @@ bool SPUThread::process_mfc_cmd(spu_mfc_cmd args) { vm::reader_lock lock; - if (!vm::check_addr(args.eal, args.size, vm::page_readable | (args.cmd & MFC_PUT_CMD ? vm::page_writable : 0))) + if (!vm::check_addr(args.eal, args.size, vm::page_allocated | vm::page_readable | (args.cmd & MFC_PUT_CMD ? vm::page_writable : 0)) && args.eal < RAW_SPU_BASE_ADDR) { Emu.Pause(); state += cpu_flag::stop;