mmapper_allocate_memory improvement

Added cases 0 for allocation granularity size,
alike sys_memory_allocate, the alignment of this case is 1mb.
This commit is contained in:
eladash 2018-11-20 16:58:41 +02:00 committed by Ani
parent be75a564ca
commit c0eb4965f2

View File

@ -77,6 +77,7 @@ error_code sys_mmapper_allocate_shared_memory(u64 unk, u32 size, u64 flags, vm::
// Check page granularity
switch (flags & SYS_MEMORY_PAGE_SIZE_MASK)
{
case 0:
case SYS_MEMORY_PAGE_SIZE_1M:
{
if (size % 0x100000)
@ -112,7 +113,7 @@ error_code sys_mmapper_allocate_shared_memory(u64 unk, u32 size, u64 flags, vm::
}
// Generate a new mem ID
*mem_id = idm::make<lv2_obj, lv2_memory>(size, flags & SYS_MEMORY_PAGE_SIZE_1M ? 0x100000 : 0x10000, flags, dct);
*mem_id = idm::make<lv2_obj, lv2_memory>(size, flags & SYS_MEMORY_PAGE_SIZE_64K ? 0x10000 : 0x100000, flags, dct);
return CELL_OK;
}
@ -124,6 +125,7 @@ error_code sys_mmapper_allocate_shared_memory_from_container(u64 unk, u32 size,
// Check page granularity.
switch (flags & SYS_MEMORY_PAGE_SIZE_MASK)
{
case 0:
case SYS_MEMORY_PAGE_SIZE_1M:
{
if (size % 0x100000)
@ -172,7 +174,7 @@ error_code sys_mmapper_allocate_shared_memory_from_container(u64 unk, u32 size,
}
// Generate a new mem ID
*mem_id = idm::make<lv2_obj, lv2_memory>(size, flags & SYS_MEMORY_PAGE_SIZE_1M ? 0x100000 : 0x10000, flags, ct.ptr);
*mem_id = idm::make<lv2_obj, lv2_memory>(size, flags & SYS_MEMORY_PAGE_SIZE_64K ? 0x10000 : 0x100000, flags, ct.ptr);
return CELL_OK;
}