diff m68k_core.c @ 1363:df6af7187b36

Fix to M68K interrupt latency for most instructions. Still needs some work for RAW_IMPL instructions besides move
author Michael Pavone <pavone@retrodev.com>
date Fri, 19 May 2017 20:27:35 -0700
parents f1607874dbee
children 4e5797b3935a
line wrap: on
line diff
--- a/m68k_core.c	Sun May 14 12:07:39 2017 -0700
+++ b/m68k_core.c	Fri May 19 20:27:35 2017 -0700
@@ -969,11 +969,15 @@
 	}
 
 	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);