diff options
| author | nakeee <nakeee@gmail.com> | 2009-06-30 10:10:30 +0000 |
|---|---|---|
| committer | nakeee <nakeee@gmail.com> | 2009-06-30 10:10:30 +0000 |
| commit | 292b3f675f16e7e2ca98f884787607928460cc47 (patch) | |
| tree | af135c0ed6725bbf7ad5674680352d4d363001e1 /Source/Core/DSPCore/Src/DSPCore.cpp | |
| parent | fc63424bcea91fabde47c7b626c2e5ee23a7fa57 (diff) | |
DSPLLE got rid of exception in progress hack.
I didn't get any change in behaviour though.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3621 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/DSPCore/Src/DSPCore.cpp')
| -rw-r--r-- | Source/Core/DSPCore/Src/DSPCore.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/Source/Core/DSPCore/Src/DSPCore.cpp b/Source/Core/DSPCore/Src/DSPCore.cpp index 565e2e6b1a..3217bf0fb8 100644 --- a/Source/Core/DSPCore/Src/DSPCore.cpp +++ b/Source/Core/DSPCore/Src/DSPCore.cpp @@ -157,11 +157,10 @@ void DSPCore_CheckExternalInterrupt() // check if there is an external interrupt
if (g_dsp.cr & CR_EXTERNAL_INT)
{
- if (dsp_SR_is_flag_set(FLAG_ENABLE_INTERUPT) && (g_dsp.exception_in_progress_hack == false))
+ if (dsp_SR_is_flag_set(SR_INT_ENABLE))
{
- // level 7 is the interrupt exception
- DSPCore_SetException(7);
-
+ // level 7 is the interrupt exception. is it?
+ // DSPCore_SetException(7);
g_dsp.cr &= ~CR_EXTERNAL_INT;
}
}
@@ -170,21 +169,20 @@ void DSPCore_CheckExternalInterrupt() void DSPCore_CheckExceptions()
{
// check exceptions
- if ((g_dsp.exceptions != 0) && (!g_dsp.exception_in_progress_hack))
+ if (g_dsp.exceptions != 0)
{
for (int i = 0; i < 8; i++)
{
- if (g_dsp.exceptions & (1 << i))
+ if (g_dsp.exceptions & (1 << i) && dsp_SR_is_flag_set(SR_INT_ENABLE))
{
- _assert_msg_(MASTER_LOG, !g_dsp.exception_in_progress_hack, "assert while exception");
-
+
dsp_reg_store_stack(DSP_STACK_C, g_dsp.pc);
dsp_reg_store_stack(DSP_STACK_D, g_dsp.r[DSP_REG_SR]);
+ g_dsp.r[DSP_REG_SR] &= ~ SR_INT_ENABLE;
g_dsp.pc = i * 2;
g_dsp.exceptions &= ~(1 << i);
- g_dsp.exception_in_progress_hack = true;
break;
}
}
|
