diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index 22e36fde16..ffc31b11ec 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -5023,7 +5023,7 @@ bool ppu_initialize(const ppu_module& info, bool check_only, u64 file_s if (source == func.addr) { - (*shared_map)[func.addr - reloc] = reinterpret_cast(far_jump); + (*shared_map)[func.addr] = reinterpret_cast(far_jump); } ppu_register_function_at(source, 4, far_jump); @@ -5408,6 +5408,11 @@ bool ppu_initialize(const ppu_module& info, bool check_only, u64 file_s while (jits.size() < utils::aligned_div(module_counter, c_moudles_per_jit) && is_being_used_in_emulation) { jits.emplace_back(std::make_shared(s_link_table, g_cfg.core.llvm_cpu, 0, symbols_cement)); + + for (const auto& [addr, func] : *shared_map) + { + jits.back()->update_global_mapping(fmt::format("__0x%x", addr - reloc), func); + } } if (jit_mod.symbol_resolvers.empty() && is_being_used_in_emulation)