Mercurial > repos > blastem
comparison m68k_core_x86.c @ 733:fbda8e865dae
Fix crash bug in 32-bit build for certain secnarios with bcd instructions
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 25 May 2015 15:01:38 -0700 |
parents | 61467483eb31 |
children | cf09b189a0ca |
comparison
equal
deleted
inserted
replaced
732:61467483eb31 | 733:fbda8e865dae |
---|---|
1449 *no_adjust = code->cur - (no_adjust+1); | 1449 *no_adjust = code->cur - (no_adjust+1); |
1450 flag_to_flag(opts, FLAG_C, FLAG_X); | 1450 flag_to_flag(opts, FLAG_C, FLAG_X); |
1451 | 1451 |
1452 cmp_ir(code, 0, opts->gen.scratch1, SZ_B); | 1452 cmp_ir(code, 0, opts->gen.scratch1, SZ_B); |
1453 set_flag_cond(opts, CC_S, FLAG_N); | 1453 set_flag_cond(opts, CC_S, FLAG_N); |
1454 jcc(code, CC_Z, code->cur + 4); | 1454 code_ptr no_setz = code->cur+1; |
1455 jcc(code, CC_Z, no_setz); | |
1455 set_flag(opts, 0, FLAG_Z); | 1456 set_flag(opts, 0, FLAG_Z); |
1457 *no_setz = code->cur - (no_setz + 1); | |
1456 if (dst_op->base != opts->gen.scratch1) { | 1458 if (dst_op->base != opts->gen.scratch1) { |
1457 if (dst_op->mode == MODE_REG_DIRECT) { | 1459 if (dst_op->mode == MODE_REG_DIRECT) { |
1458 mov_rr(code, opts->gen.scratch1, dst_op->base, SZ_B); | 1460 mov_rr(code, opts->gen.scratch1, dst_op->base, SZ_B); |
1459 } else { | 1461 } else { |
1460 mov_rrdisp(code, opts->gen.scratch1, dst_op->base, dst_op->disp, SZ_B); | 1462 mov_rrdisp(code, opts->gen.scratch1, dst_op->base, dst_op->disp, SZ_B); |