summaryrefslogtreecommitdiff
path: root/Source/Core/DSPCore/Src/DSPCore.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/DSPCore/Src/DSPCore.cpp')
-rw-r--r--Source/Core/DSPCore/Src/DSPCore.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/Source/Core/DSPCore/Src/DSPCore.cpp b/Source/Core/DSPCore/Src/DSPCore.cpp
index ede578de32..92e48da47e 100644
--- a/Source/Core/DSPCore/Src/DSPCore.cpp
+++ b/Source/Core/DSPCore/Src/DSPCore.cpp
@@ -174,10 +174,6 @@ void DSPCore_SetException(u8 level)
// Comming from the CPU
void DSPCore_CheckExternalInterrupt()
{
- // check if there is an external interrupt
- if (! (g_dsp.cr & CR_EXTERNAL_INT))
- return;
-
if (! dsp_SR_is_flag_set(SR_EXT_INT_ENABLE))
return;
@@ -291,6 +287,23 @@ void DSPCore_Step()
void CompileCurrent()
{
jit->Compile(g_dsp.pc);
+
+ bool retry = true;
+
+ while (retry)
+ {
+ retry = false;
+ for(u16 i = 0x0000; i < 0xffff; ++i)
+ {
+ if (!jit->unresolvedJumps[i].empty())
+ {
+ u16 addrToCompile = jit->unresolvedJumps[i].front();
+ jit->Compile(addrToCompile);
+ if (!jit->unresolvedJumps[i].empty())
+ retry = true;
+ }
+ }
+ }
}
u16 DSPCore_ReadRegister(int reg) {