diff --git a/Core/HLE/sceKernelModule.cpp b/Core/HLE/sceKernelModule.cpp index c654bd38ee..095a4a0c86 100644 --- a/Core/HLE/sceKernelModule.cpp +++ b/Core/HLE/sceKernelModule.cpp @@ -1655,7 +1655,18 @@ bool __KernelLoadGEDump(std::string *error_string) { Memory::WriteUnchecked_U32(runDumpCode[i], mipsr4k.pc + (int)i * sizeof(u32_le)); } - __KernelStartIdleThreads(0); + Module *module = new Module; + kernelObjects.Create(module); + loadedModules.insert(module->GetUID()); + memset(&module->nm, 0, sizeof(module->nm)); + module->isFake = true; + module->nm.entry_addr = mipsr4k.pc; + module->nm.gp_value = -1; + + SceUID threadID = __KernelSetupRootThread(module->GetUID(), 0, nullptr, 0x20, 0x1000, 0); + __KernelSetThreadRA(threadID, NID_MODULERETURN); + + __KernelStartIdleThreads(module->GetUID()); return true; }