summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2013-07-22 14:38:16 +0000
committer Miodrag Milanovic <mmicko@gmail.com>2013-07-22 14:38:16 +0000
commit5a278d9382c51171029e130a4f17c6cdd67d40eb (patch)
treec3851435e40fc3dd8ac5adad8ed0a684f44b7dfc
parentf2f1f74d6dd5e5572fccf6b4f8961eac38ac025e (diff)
m68k : fixed handling of double fault, not sure if this is proper or some other trap should be generated (nw)
-rw-r--r--src/emu/cpu/m68000/m68kcpu.c16
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)