From 2367c1773556ce9ab1ca72462131b57bb69475bc Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sat, 6 Apr 2013 12:34:32 -0700 Subject: [PATCH] Don't suspend/resume dispatch while interrupts off. --- Core/HLE/sceKernelThread.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Core/HLE/sceKernelThread.cpp b/Core/HLE/sceKernelThread.cpp index 4648390e04..186b561241 100644 --- a/Core/HLE/sceKernelThread.cpp +++ b/Core/HLE/sceKernelThread.cpp @@ -1751,6 +1751,9 @@ void sceKernelExitDeleteThread() u32 sceKernelSuspendDispatchThread() { + if (!__InterruptsEnabled()) + return SCE_KERNEL_ERROR_CPUDI; + u32 oldDispatchEnabled = dispatchEnabled; dispatchEnabled = false; DEBUG_LOG(HLE, "%i=sceKernelSuspendDispatchThread()", oldDispatchEnabled); @@ -1759,6 +1762,9 @@ u32 sceKernelSuspendDispatchThread() u32 sceKernelResumeDispatchThread(u32 enabled) { + if (!__InterruptsEnabled()) + return SCE_KERNEL_ERROR_CPUDI; + u32 oldDispatchEnabled = dispatchEnabled; dispatchEnabled = enabled != 0; DEBUG_LOG(HLE, "sceKernelResumeDispatchThread(%i) - from %i", enabled, oldDispatchEnabled);