comparison 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
comparison
equal deleted inserted replaced
1460:4929325c3ce0 1461:aa945f1bdd71
92 } 92 }
93 93
94 void m68k_save_result(m68kinst * inst, m68k_options * opts) 94 void m68k_save_result(m68kinst * inst, m68k_options * opts)
95 { 95 {
96 if (inst->dst.addr_mode != MODE_REG && inst->dst.addr_mode != MODE_AREG && inst->dst.addr_mode != MODE_UNUSED) { 96 if (inst->dst.addr_mode != MODE_REG && inst->dst.addr_mode != MODE_AREG && inst->dst.addr_mode != MODE_UNUSED) {
97 if (inst->dst.addr_mode == MODE_AREG_PREDEC && inst->src.addr_mode == MODE_AREG_PREDEC && inst->op != M68K_MOVE) { 97 if (inst->dst.addr_mode == MODE_AREG_PREDEC &&
98 ((inst->src.addr_mode == MODE_AREG_PREDEC && inst->op != M68K_MOVE) || (inst->op == M68K_NBCD))
99 ) {
98 areg_to_native(opts, inst->dst.params.regs.pri, opts->gen.scratch2); 100 areg_to_native(opts, inst->dst.params.regs.pri, opts->gen.scratch2);
99 } 101 }
100 m68k_write_size(opts, inst->extra.size, 1); 102 m68k_write_size(opts, inst->extra.size, 1);
101 } 103 }
102 } 104 }