diff --git a/Core/HLE/sceKernel.cpp b/Core/HLE/sceKernel.cpp index 3335c9fa26..3ca3553052 100644 --- a/Core/HLE/sceKernel.cpp +++ b/Core/HLE/sceKernel.cpp @@ -86,7 +86,6 @@ static bool kernelRunning = false; KernelObjectPool kernelObjects; KernelStats kernelStats; -// TODO: Savestate this? u32 registeredExitCbId; void __KernelInit() @@ -185,12 +184,15 @@ void __KernelShutdown() void __KernelDoState(PointerWrap &p) { { - auto s = p.Section("Kernel", 1); + auto s = p.Section("Kernel", 1, 2); if (!s) return; p.Do(kernelRunning); kernelObjects.DoState(p); + + if (s >= 2) + p.Do(registeredExitCbId); } { @@ -278,11 +280,6 @@ void sceKernelExitGameWithStatus() Core_Stop(); } -int LoadExecForUser_362A956B() -{ - return hleLoadExecForUser_362A956B(); -} - u32 sceKernelRegisterExitCallback(u32 cbId) { DEBUG_LOG(SCEKERNEL,"sceKernelRegisterExitCallback(%i)", cbId); diff --git a/Core/HLE/sceKernelThread.cpp b/Core/HLE/sceKernelThread.cpp index 429c2c848a..3165aba859 100644 --- a/Core/HLE/sceKernelThread.cpp +++ b/Core/HLE/sceKernelThread.cpp @@ -3662,8 +3662,9 @@ void __KernelChangeThreadState(SceUID threadId, ThreadStatus newStatus) __KernelChangeThreadState(t, newStatus); } -int hleLoadExecForUser_362A956B() +int LoadExecForUser_362A956B() { + WARN_LOG_REPORT(SCEKERNEL, "LoadExecForUser_362A956B()"); u32 error; Callback *cb = kernelObjects.Get(registeredExitCbId, error); if (!cb) { diff --git a/Core/HLE/sceKernelThread.h b/Core/HLE/sceKernelThread.h index e409dc9cab..245f792225 100644 --- a/Core/HLE/sceKernelThread.h +++ b/Core/HLE/sceKernelThread.h @@ -304,4 +304,4 @@ struct DebugThreadInfo std::vector GetThreadsInfo(); void __KernelChangeThreadState(SceUID threadId, ThreadStatus newStatus); -int hleLoadExecForUser_362A956B(); +int LoadExecForUser_362A956B();