summaryrefslogtreecommitdiffstats
path: root/docs/release/src/devices/cpu/m68000/m68kcpu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'docs/release/src/devices/cpu/m68000/m68kcpu.cpp')
-rw-r--r--docs/release/src/devices/cpu/m68000/m68kcpu.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/docs/release/src/devices/cpu/m68000/m68kcpu.cpp b/docs/release/src/devices/cpu/m68000/m68kcpu.cpp
index 1c9240035db..1cb8b5f666d 100644
--- a/docs/release/src/devices/cpu/m68000/m68kcpu.cpp
+++ b/docs/release/src/devices/cpu/m68000/m68kcpu.cpp
@@ -669,11 +669,16 @@ void m68000_base_device::postload()
void m68000_base_device::m68k_cause_bus_error()
{
- uint32_t sr;
+ // Halt the cpu on berr when writing the stack frame.
+ if (m_run_mode == RUN_MODE_BERR_AERR_RESET_WSF)
+ {
+ m_stopped = STOP_LEVEL_HALT;
+ return;
+ }
- sr = m68ki_init_exception();
+ uint32_t sr = m68ki_init_exception();
- m_run_mode = RUN_MODE_BERR_AERR_RESET;
+ m_run_mode = RUN_MODE_BERR_AERR_RESET_WSF;
if (!CPU_TYPE_IS_010_PLUS())
{
@@ -695,6 +700,7 @@ void m68000_base_device::m68k_cause_bus_error()
}
m68ki_jump_vector(EXCEPTION_BUS_ERROR);
+ m_run_mode = RUN_MODE_BERR_AERR_RESET;
}
bool m68000_base_device::memory_translate(int space, int intention, offs_t &address)