mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-08 16:01:42 +12:00
Various fixes (Trophy, Gcm corrections, stack alloc) (#2894)
* Fixed sys_get_random_number generating less bytes than needed, and ceiling the buffer size in 0x1000 instead of failing * Corrected alignment check in libgcm * Now calling callback of sceNpManagerRegisterCallback * Fixed trophies
This commit is contained in:
parent
d3f13ab8a3
commit
caab400258
7 changed files with 45 additions and 20 deletions
|
@ -280,15 +280,16 @@ void ppu_thread::on_init(const std::shared_ptr<void>& _this)
|
|||
if (!stack_addr)
|
||||
{
|
||||
// Allocate stack + gap between stacks
|
||||
const_cast<u32&>(stack_addr) = vm::alloc(stack_size + 4096, vm::stack) + 4096;
|
||||
|
||||
if (!stack_addr)
|
||||
auto new_stack_base = vm::alloc(stack_size + 4096, vm::stack);
|
||||
if (!new_stack_base)
|
||||
{
|
||||
fmt::throw_exception("Out of stack memory (size=0x%x)" HERE, stack_size);
|
||||
}
|
||||
|
||||
const_cast<u32&>(stack_addr) = new_stack_base + 4096;
|
||||
|
||||
// Make the gap inaccessible
|
||||
vm::page_protect(stack_addr - 4096, 4096, 0, 0, vm::page_readable + vm::page_writable);
|
||||
vm::page_protect(new_stack_base, 4096, 0, 0, vm::page_readable + vm::page_writable);
|
||||
|
||||
gpr[1] = ::align(stack_addr + stack_size, 0x200) - 0x200;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue