mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-02 19:13:36 +00:00
Fixes (sys_memory, sys_mmapper)
DeS
This commit is contained in:
parent
1f17109203
commit
ce35554a55
@ -158,7 +158,20 @@ error_code sys_memory_get_page_attribute(u32 addr, vm::ptr<sys_page_attr_t> attr
|
||||
|
||||
attr->attribute = 0x40000ull; // SYS_MEMORY_PROT_READ_WRITE (TODO)
|
||||
attr->access_right = 0xFull; // SYS_MEMORY_ACCESS_RIGHT_ANY (TODO)
|
||||
attr->page_size = 4096;
|
||||
|
||||
if (vm::check_addr(addr, 1, vm::page_1m_size))
|
||||
{
|
||||
attr->page_size = 0x100000;
|
||||
}
|
||||
else if (vm::check_addr(addr, 1, vm::page_64k_size))
|
||||
{
|
||||
attr->page_size = 0x10000;
|
||||
}
|
||||
else
|
||||
{
|
||||
attr->page_size = 4096;
|
||||
}
|
||||
|
||||
return CELL_OK;
|
||||
}
|
||||
|
||||
|
@ -202,7 +202,7 @@ error_code sys_mmapper_free_shared_memory(u32 mem_id)
|
||||
// Conditionally remove memory ID
|
||||
const auto mem = idm::withdraw<lv2_obj, lv2_memory>(mem_id, [&](lv2_memory& mem) -> CellError
|
||||
{
|
||||
if (mem.addr.compare_and_swap_test(0, -1))
|
||||
if (!mem.addr.compare_and_swap_test(0, -1))
|
||||
{
|
||||
return CELL_EBUSY;
|
||||
}
|
||||
@ -271,7 +271,7 @@ error_code sys_mmapper_search_and_map(u32 start_addr, u32 mem_id, u64 flags, vm:
|
||||
|
||||
const auto area = vm::get(vm::any, start_addr);
|
||||
|
||||
if (!area || start_addr != area->addr || start_addr < 0x30000000 || start_addr >= 0xC0000000)
|
||||
if (!area || start_addr < 0x30000000 || start_addr >= 0xC0000000)
|
||||
{
|
||||
return CELL_EINVAL;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user