From f76857783001f197067e6a8728e76046da8b9e6f Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Mon, 25 May 2015 13:21:24 -0700 Subject: Fix div instruction when dest is d0 in 32-bit build --- m68k_core_x86.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'm68k_core_x86.c') diff --git a/m68k_core_x86.c b/m68k_core_x86.c index 5c459b0..ed0265b 100644 --- a/m68k_core_x86.c +++ b/m68k_core_x86.c @@ -1698,8 +1698,13 @@ void translate_m68k_div(m68k_options *opts, m68kinst *inst, host_ea *src_op, hos } cmp_ir(code, 0, RAX, SZ_W); pop_r(code, RAX); - pop_r(code, RDX); - update_flags(opts, V0|Z|N); + if (dst_op->base == RDX) { + update_flags(opts, V0|Z|N); + add_ir(code, sizeof(void *), RSP, SZ_D); + } else { + pop_r(code, RDX); + update_flags(opts, V0|Z|N); + } code_ptr end_off = code->cur + 1; jmp(code, code->cur + 2); *norm_off = code->cur - (norm_off + 1); -- cgit v1.2.3