mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-12 13:13:43 +00:00
Fix MMIO on SPU
Thanks Digitaldude555 for reporting the bug and @elad335 for pinging me
This commit is contained in:
parent
402ca480cd
commit
0e74f2e340
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user