Mercurial > repos > blastem
comparison m68k_core_x86.c @ 732:61467483eb31
Fix div instruction when dest is d0 in 32-bit build
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 25 May 2015 13:21:24 -0700 |
parents | 59a98179d3ba |
children | fbda8e865dae |
comparison
equal
deleted
inserted
replaced
731:0835cd3dfc36 | 732:61467483eb31 |
---|---|
1696 shl_irdisp(code, 16, dst_op->base, dst_op->disp, SZ_D); | 1696 shl_irdisp(code, 16, dst_op->base, dst_op->disp, SZ_D); |
1697 mov_rrdisp(code, RAX, dst_op->base, dst_op->disp, SZ_W); | 1697 mov_rrdisp(code, RAX, dst_op->base, dst_op->disp, SZ_W); |
1698 } | 1698 } |
1699 cmp_ir(code, 0, RAX, SZ_W); | 1699 cmp_ir(code, 0, RAX, SZ_W); |
1700 pop_r(code, RAX); | 1700 pop_r(code, RAX); |
1701 pop_r(code, RDX); | 1701 if (dst_op->base == RDX) { |
1702 update_flags(opts, V0|Z|N); | 1702 update_flags(opts, V0|Z|N); |
1703 add_ir(code, sizeof(void *), RSP, SZ_D); | |
1704 } else { | |
1705 pop_r(code, RDX); | |
1706 update_flags(opts, V0|Z|N); | |
1707 } | |
1703 code_ptr end_off = code->cur + 1; | 1708 code_ptr end_off = code->cur + 1; |
1704 jmp(code, code->cur + 2); | 1709 jmp(code, code->cur + 2); |
1705 *norm_off = code->cur - (norm_off + 1); | 1710 *norm_off = code->cur - (norm_off + 1); |
1706 if (inst->op == M68K_DIVS) { | 1711 if (inst->op == M68K_DIVS) { |
1707 *skip_sec_check = code->cur - (skip_sec_check+1); | 1712 *skip_sec_check = code->cur - (skip_sec_check+1); |