diff options
author | Michael Pavone <pavone@retrodev.com> | 2017-05-19 20:27:35 -0700 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2017-05-19 20:27:35 -0700 |
commit | b3f9c8727f9890c1a3e3a9f64e86d58d5701f58c (patch) | |
tree | 3411d25ab9bdd532b4843208ed88087c60e3466d /m68k_core.c | |
parent | ec6165fd23f9994d2db087c6f0dc09afbebf5a73 (diff) |
Fix to M68K interrupt latency for most instructions. Still needs some work for RAW_IMPL instructions besides move
Diffstat (limited to 'm68k_core.c')
-rw-r--r-- | m68k_core.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/m68k_core.c b/m68k_core.c index 1faa3c0..3ed8185 100644 --- a/m68k_core.c +++ b/m68k_core.c @@ -969,11 +969,15 @@ static void translate_m68k(m68k_context *context, m68kinst * inst) } host_ea src_op, dst_op; + uint8_t needs_int_latch = 0; if (inst->src.addr_mode != MODE_UNUSED) { - translate_m68k_op(inst, &src_op, opts, 0); + needs_int_latch |= translate_m68k_op(inst, &src_op, opts, 0); } if (inst->dst.addr_mode != MODE_UNUSED) { - translate_m68k_op(inst, &dst_op, opts, 1); + needs_int_latch |= translate_m68k_op(inst, &dst_op, opts, 1); + } + if (needs_int_latch) { + m68k_check_cycles_int_latch(opts); } if (info->itype == OP_FUNC) { info->impl.op(opts, inst, &src_op, &dst_op); |