mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-26 04:32:35 +01:00
ppu: Stack size allocation improvements
This commit is contained in:
parent
3ce18fd960
commit
cbcd06d1dc
@ -1544,7 +1544,7 @@ void ppu_load_exec(const ppu_exec_object& elf)
|
|||||||
case 0x70: primary_stacksize = 1024 * 1024; break; // SYS_PROCESS_PRIMARY_STACK_SIZE_1M
|
case 0x70: primary_stacksize = 1024 * 1024; break; // SYS_PROCESS_PRIMARY_STACK_SIZE_1M
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
primary_stacksize = sz >= 4096 ? ::align(std::min<u32>(sz, 0x100000), 4096) : 0x4000;
|
primary_stacksize = ::align<u32>(std::clamp<u32>(sz, 0x10000, 0x100000), 4096);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -307,7 +307,7 @@ error_code _sys_ppu_thread_create(vm::ptr<u64> thread_id, vm::ptr<ppu_thread_par
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Compute actual stack size and allocate
|
// Compute actual stack size and allocate
|
||||||
const u32 stack_size = _stacksz >= 4096 ? ::align(std::min<u32>(_stacksz, 0x100000), 4096) : 0x4000;
|
const u32 stack_size = ::align<u32>(std::max<u32>(_stacksz, 4096), 4096);
|
||||||
|
|
||||||
const vm::addr_t stack_base{vm::alloc(stack_size, vm::stack, 4096)};
|
const vm::addr_t stack_base{vm::alloc(stack_size, vm::stack, 4096)};
|
||||||
|
|
||||||
|
@ -709,7 +709,7 @@ namespace vm
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Return if size is invalid
|
// Return if size is invalid
|
||||||
if (!orig_size || !size || size > this->size)
|
if (!orig_size || !size || orig_size > size || size > this->size)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -764,7 +764,7 @@ namespace vm
|
|||||||
const u32 size = ::align(orig_size, min_page_size);
|
const u32 size = ::align(orig_size, min_page_size);
|
||||||
|
|
||||||
// return if addr or size is invalid
|
// return if addr or size is invalid
|
||||||
if (!size || addr < this->addr || addr + u64{size} > this->addr + u64{this->size} || flags & 0x10)
|
if (!size || addr < this->addr || orig_size > size || addr + u64{size} > this->addr + u64{this->size} || flags & 0x10)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user