Mercurial > repos > blastem
comparison 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 |
comparison
equal
deleted
inserted
replaced
1362:83bdd358f3a7 | 1363:df6af7187b36 |
---|---|
967 info->impl.raw(opts, inst); | 967 info->impl.raw(opts, inst); |
968 return; | 968 return; |
969 } | 969 } |
970 | 970 |
971 host_ea src_op, dst_op; | 971 host_ea src_op, dst_op; |
972 uint8_t needs_int_latch = 0; | |
972 if (inst->src.addr_mode != MODE_UNUSED) { | 973 if (inst->src.addr_mode != MODE_UNUSED) { |
973 translate_m68k_op(inst, &src_op, opts, 0); | 974 needs_int_latch |= translate_m68k_op(inst, &src_op, opts, 0); |
974 } | 975 } |
975 if (inst->dst.addr_mode != MODE_UNUSED) { | 976 if (inst->dst.addr_mode != MODE_UNUSED) { |
976 translate_m68k_op(inst, &dst_op, opts, 1); | 977 needs_int_latch |= translate_m68k_op(inst, &dst_op, opts, 1); |
978 } | |
979 if (needs_int_latch) { | |
980 m68k_check_cycles_int_latch(opts); | |
977 } | 981 } |
978 if (info->itype == OP_FUNC) { | 982 if (info->itype == OP_FUNC) { |
979 info->impl.op(opts, inst, &src_op, &dst_op); | 983 info->impl.op(opts, inst, &src_op, &dst_op); |
980 } else if (info->itype == BINARY_ARITH) { | 984 } else if (info->itype == BINARY_ARITH) { |
981 translate_m68k_arith(opts, inst, info->impl.flag_mask, &src_op, &dst_op); | 985 translate_m68k_arith(opts, inst, info->impl.flag_mask, &src_op, &dst_op); |