diff --git a/Source/Core/Core/DSP/Interpreter/DSPInterpreter.cpp b/Source/Core/Core/DSP/Interpreter/DSPInterpreter.cpp index c5b58a8b77..078f64af12 100644 --- a/Source/Core/Core/DSP/Interpreter/DSPInterpreter.cpp +++ b/Source/Core/Core/DSP/Interpreter/DSPInterpreter.cpp @@ -224,7 +224,12 @@ void Interpreter::WriteControlRegister(u16 val) state.control_reg, val, state.pc); } - // The CR_EXTERNAL_INT bit is handled by DSPLLE::DSP_WriteControlRegister + if ((state.control_reg & CR_EXTERNAL_INT) != 0) + { + // The external interrupt can't be cleared by the CPU + // (and the CR_EXTERNAL_INT bit remains set until the external interrupt is sent to the DSP) + val |= CR_EXTERNAL_INT; + } // reset if ((val & CR_RESET) != 0)