diff options
author | arbee <rb6502@users.noreply.github.com> | 2014-12-30 22:46:14 -0500 |
---|---|---|
committer | arbee <rb6502@users.noreply.github.com> | 2014-12-30 22:46:14 -0500 |
commit | bfd87ef73a6850f475e2020c2c2935993f932c56 (patch) | |
tree | d1ea76be541e974a11bddb8a2fdcb9dc78601d9c | |
parent | 32a25550fe711d3491c426a63661c1a8ccf821f7 (diff) |
m68k: generate the correct kind of stack frame for 68010 bus errors. [R. Belmont]
-rw-r--r-- | src/emu/cpu/m68000/m68kcpu.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/emu/cpu/m68000/m68kcpu.c b/src/emu/cpu/m68000/m68kcpu.c index 3f5fcd7baa3..0746edc0b1a 100644 --- a/src/emu/cpu/m68000/m68kcpu.c +++ b/src/emu/cpu/m68000/m68kcpu.c @@ -690,11 +690,16 @@ static void m68k_cause_bus_error(m68000_base_device *m68k) m68k->run_mode = RUN_MODE_BERR_AERR_RESET; - if (!CPU_TYPE_IS_020_PLUS(m68k->cpu_type)) + if (!CPU_TYPE_IS_010_PLUS(m68k->cpu_type)) { /* Note: This is implemented for 68000 only! */ m68ki_stack_frame_buserr(m68k, sr); } + else if (CPU_TYPE_IS_010(m68k->cpu_type)) + { + /* only the 68010 throws this unique type-1000 frame */ + m68ki_stack_frame_1000(m68k, REG_PPC(m68k), sr, EXCEPTION_BUS_ERROR); + } else if (m68k->mmu_tmp_buserror_address == REG_PPC(m68k)) { m68ki_stack_frame_1010(m68k, sr, EXCEPTION_BUS_ERROR, REG_PPC(m68k), m68k->mmu_tmp_buserror_address); |