diff options
author | 2013-07-22 14:38:16 +0000 | |
---|---|---|
committer | 2013-07-22 14:38:16 +0000 | |
commit | 5a278d9382c51171029e130a4f17c6cdd67d40eb (patch) | |
tree | c3851435e40fc3dd8ac5adad8ed0a684f44b7dfc /src/emu/cpu/m68000 | |
parent | f2f1f74d6dd5e5572fccf6b4f8961eac38ac025e (diff) |
m68k : fixed handling of double fault, not sure if this is proper or some other trap should be generated (nw)
Diffstat (limited to 'src/emu/cpu/m68000')
-rw-r--r-- | src/emu/cpu/m68000/m68kcpu.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/emu/cpu/m68000/m68kcpu.c b/src/emu/cpu/m68000/m68kcpu.c index 3f4327d4a44..24f74cce3a4 100644 --- a/src/emu/cpu/m68000/m68kcpu.c +++ b/src/emu/cpu/m68000/m68kcpu.c @@ -34,7 +34,6 @@ static const char copyright_notice[] = #include "emu.h" #include "debugger.h" -#include <setjmp.h> #include "m68kcpu.h" #include "m68kops.h" @@ -773,7 +772,20 @@ inline void m68000_base_device::cpu_execute(void) if (m_address_error==1) { m_address_error = 0; - m68ki_exception_address_error(this); + try { + m68ki_exception_address_error(this); + } + catch(int error) + { + if (error==10) + { + m_address_error = 1; + REG_PPC(this) = REG_PC(this); + goto check_address_error; + } + else + throw; + } if(stopped) { if (remaining_cycles > 0) |