diff --git a/Core/HLE/sceKernel.cpp b/Core/HLE/sceKernel.cpp index adcc652b84..d4a34dc894 100644 --- a/Core/HLE/sceKernel.cpp +++ b/Core/HLE/sceKernel.cpp @@ -77,6 +77,7 @@ void __KernelInit() __KernelMemoryInit(); __KernelThreadingInit(); + __KernelMutexInit(); __IoInit(); __AudioInit(); __SasInit(); @@ -115,6 +116,7 @@ void __KernelShutdown() __IoShutdown(); __InterruptsShutdown(); __KernelThreadingShutdown(); + __KernelMutexShutdown(); __KernelMemoryShutdown(); CoreTiming::ClearPendingEvents(); diff --git a/Core/HLE/sceKernelMutex.cpp b/Core/HLE/sceKernelMutex.cpp index 77d2a957c6..c4c4b6e1fc 100644 --- a/Core/HLE/sceKernelMutex.cpp +++ b/Core/HLE/sceKernelMutex.cpp @@ -123,6 +123,13 @@ void __KernelMutexInit() __KernelListenThreadEnd(&__KernelMutexThreadEnd); mutexInitComplete = true; + mutexWaitTimer = 0; + lwMutexWaitTimer = 0; +} + +void __KernelMutexShutdown() +{ + mutexHeldLocks.clear(); } void __KernelMutexAcquireLock(Mutex *mutex, int count, SceUID thread) @@ -856,4 +863,4 @@ int sceKernelUnlockLwMutex(u32 workareaPtr, int count) Memory::WriteStruct(workareaPtr, &workarea); return 0; -} \ No newline at end of file +} diff --git a/Core/HLE/sceKernelMutex.h b/Core/HLE/sceKernelMutex.h index 8d7c09e9f2..de54371948 100644 --- a/Core/HLE/sceKernelMutex.h +++ b/Core/HLE/sceKernelMutex.h @@ -34,4 +34,7 @@ int sceKernelUnlockLwMutex(u32 workareaPtr, int count); void __KernelMutexTimeout(u64 userdata, int cyclesLate); void __KernelLwMutexTimeout(u64 userdata, int cyclesLate); -void __KernelMutexThreadEnd(SceUID thread); \ No newline at end of file +void __KernelMutexThreadEnd(SceUID thread); + +void __KernelMutexInit(); +void __KernelMutexShutdown();