diff m68k_core.c @ 1461:aa945f1bdd71

Properly clear trace mode on interrupt or other exception. Fix NBCD with memory destination
author Michael Pavone <pavone@retrodev.com>
date Wed, 06 Sep 2017 23:10:11 -0700
parents 4e5797b3935a
children ffe45c5b8390
line wrap: on
line diff
--- a/m68k_core.c	Wed Sep 06 22:16:02 2017 -0700
+++ b/m68k_core.c	Wed Sep 06 23:10:11 2017 -0700
@@ -94,7 +94,9 @@
 void m68k_save_result(m68kinst * inst, m68k_options * opts)
 {
 	if (inst->dst.addr_mode != MODE_REG && inst->dst.addr_mode != MODE_AREG && inst->dst.addr_mode != MODE_UNUSED) {
-		if (inst->dst.addr_mode == MODE_AREG_PREDEC && inst->src.addr_mode == MODE_AREG_PREDEC && inst->op != M68K_MOVE) {
+		if (inst->dst.addr_mode == MODE_AREG_PREDEC && 
+			((inst->src.addr_mode == MODE_AREG_PREDEC && inst->op != M68K_MOVE) || (inst->op == M68K_NBCD))
+		) {
 			areg_to_native(opts, inst->dst.params.regs.pri, opts->gen.scratch2);
 		}
 		m68k_write_size(opts, inst->extra.size, 1);