summaryrefslogtreecommitdiff
path: root/m68k_core.c
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2017-05-19 20:27:35 -0700
committerMichael Pavone <pavone@retrodev.com>2017-05-19 20:27:35 -0700
commitb3f9c8727f9890c1a3e3a9f64e86d58d5701f58c (patch)
tree3411d25ab9bdd532b4843208ed88087c60e3466d /m68k_core.c
parentec6165fd23f9994d2db087c6f0dc09afbebf5a73 (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.c8
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);