From 45112dbce84702982c502f91c380c9cee107caf4 Mon Sep 17 00:00:00 2001 From: elad335 <18193363+elad335@users.noreply.github.com> Date: Tue, 6 May 2025 18:55:28 +0300 Subject: [PATCH] PPU Loader: Consume Executable Memory --- rpcs3/Emu/Cell/PPUModule.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rpcs3/Emu/Cell/PPUModule.cpp b/rpcs3/Emu/Cell/PPUModule.cpp index 799789af63..eca1177768 100644 --- a/rpcs3/Emu/Cell/PPUModule.cpp +++ b/rpcs3/Emu/Cell/PPUModule.cpp @@ -2155,6 +2155,8 @@ bool ppu_load_exec(const ppu_exec_object& elf, bool virtual_load, const std::str const auto old_process_info = g_ps3_process_info; + u32 segs_size = 0; + // Allocate memory at fixed positions for (const auto& prog : elf.progs) { @@ -2249,6 +2251,8 @@ bool ppu_load_exec(const ppu_exec_object& elf, bool virtual_load, const std::str { ppu_register_range(addr, size); } + + segs_size += utils::align(size + (addr % 0x10000), 0x10000); } } @@ -2773,7 +2777,7 @@ bool ppu_load_exec(const ppu_exec_object& elf, bool virtual_load, const std::str ppu->gpr[1] -= stack_alloc_size; - ensure(g_fxo->get().take(primary_stacksize)); + ensure(g_fxo->get().take(primary_stacksize + segs_size)); ppu->cmd_push({ppu_cmd::initialize, 0});