From 1267c1152be3d0459dd93d20c6b4fc1c64fb148e Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Thu, 9 Mar 2017 21:31:31 -0800 Subject: Forgot to update flags in the "good" case of the new divu code --- m68k_core_x86.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'm68k_core_x86.c') diff --git a/m68k_core_x86.c b/m68k_core_x86.c index ff783ad..84d70cb 100644 --- a/m68k_core_x86.c +++ b/m68k_core_x86.c @@ -1783,15 +1783,17 @@ void translate_m68k_divu(m68k_options *opts, m68kinst *inst, host_ea *src_op, ho //TODO: inline the functionality of divu so we don't need to dump context to memory call_args(code, (code_ptr)divu, 3, opts->gen.scratch2, opts->gen.context_reg, opts->gen.scratch1); pop_r(code, opts->gen.context_reg); - if (dst_op->mode == MODE_REG_DIRECT) { - mov_rr(code, RAX, opts->gen.scratch1, SZ_D); - } else { - mov_rrdisp(code, RAX, dst_op->base, dst_op->disp, SZ_D); - } + mov_rr(code, RAX, opts->gen.scratch1, SZ_D); + call(code, opts->gen.load_context); + cmp_ir(code, 0, opts->gen.scratch1, SZ_W); + update_flags(opts, V0|Z|N); + if (dst_op->mode == MODE_REG_DIRECT) { mov_rr(code, opts->gen.scratch1, dst_op->base, SZ_D); + } else { + mov_rrdisp(code, RAX, dst_op->base, dst_op->disp, SZ_D); } *end = code->cur - (end + 1); -- cgit v1.2.3