mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-04 05:51:27 +12:00
Fix vm::check_addr calls in Thread.cpp
This commit is contained in:
parent
fefab50e06
commit
829a697c39
1 changed files with 5 additions and 5 deletions
|
@ -1353,7 +1353,7 @@ bool handle_access_violation(u32 addr, bool is_writing, x64_context* context) no
|
||||||
return true;
|
return true;
|
||||||
} while (0);
|
} while (0);
|
||||||
|
|
||||||
if (vm::check_addr(addr, std::max(1u, ::narrow<u32>(d_size)), is_writing ? vm::page_writable : vm::page_readable))
|
if (vm::check_addr(addr, is_writing ? vm::page_writable : vm::page_readable))
|
||||||
{
|
{
|
||||||
if (cpu && cpu->test_stopped())
|
if (cpu && cpu->test_stopped())
|
||||||
{
|
{
|
||||||
|
@ -1378,7 +1378,7 @@ bool handle_access_violation(u32 addr, bool is_writing, x64_context* context) no
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (area->flags & 0x100 || (is_writing && vm::check_addr(addr, std::max(1u, ::narrow<u32>(d_size)))))
|
if (area->flags & 0x100 || (is_writing && vm::check_addr(addr)))
|
||||||
{
|
{
|
||||||
// For 4kb pages or read only memory
|
// For 4kb pages or read only memory
|
||||||
utils::memory_protect(vm::base(addr & -0x1000), 0x1000, utils::protection::rw);
|
utils::memory_protect(vm::base(addr & -0x1000), 0x1000, utils::protection::rw);
|
||||||
|
@ -1386,7 +1386,7 @@ bool handle_access_violation(u32 addr, bool is_writing, x64_context* context) no
|
||||||
}
|
}
|
||||||
|
|
||||||
area->falloc(addr & -0x10000, 0x10000);
|
area->falloc(addr & -0x10000, 0x10000);
|
||||||
return vm::check_addr(addr, std::max(1u, ::narrow<u32>(d_size)), is_writing ? vm::page_writable : vm::page_readable);
|
return vm::check_addr(addr, is_writing ? vm::page_writable : vm::page_readable);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (cpu)
|
if (cpu)
|
||||||
|
@ -1436,12 +1436,12 @@ bool handle_access_violation(u32 addr, bool is_writing, x64_context* context) no
|
||||||
u64 data3;
|
u64 data3;
|
||||||
{
|
{
|
||||||
vm::reader_lock rlock;
|
vm::reader_lock rlock;
|
||||||
if (vm::check_addr(addr, std::max(1u, ::narrow<u32>(d_size)), is_writing ? vm::page_writable : vm::page_readable))
|
if (vm::check_addr(addr, is_writing ? vm::page_writable : vm::page_readable))
|
||||||
{
|
{
|
||||||
// Memory was allocated inbetween, retry
|
// Memory was allocated inbetween, retry
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (vm::check_addr(addr, std::max(1u, ::narrow<u32>(d_size))))
|
else if (vm::check_addr(addr))
|
||||||
{
|
{
|
||||||
data3 = SYS_MEMORY_PAGE_FAULT_CAUSE_READ_ONLY; // TODO
|
data3 = SYS_MEMORY_PAGE_FAULT_CAUSE_READ_ONLY; // TODO
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue