diff options
Diffstat (limited to 'docs/release/src/devices/cpu/m68000/m68kcpu.cpp')
-rw-r--r-- | docs/release/src/devices/cpu/m68000/m68kcpu.cpp | 12 |
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) |