# HG changeset patch # User Mike Pavone # Date 1369811628 25200 # Node ID c708dea45f8ba03de69b8f6ee05c8a9865806e17 # Parent b7c3facee762c36e128af7f64df16479fe43d95b Fix push AF diff -r b7c3facee762 -r c708dea45f8b z80_to_x86.c --- a/z80_to_x86.c Mon May 27 22:19:11 2013 -0700 +++ b/z80_to_x86.c Wed May 29 00:13:48 2013 -0700 @@ -383,6 +383,8 @@ dst = zcycles(dst, (inst->reg == Z80_IX || inst->reg == Z80_IY) ? 9 : 5); dst = sub_ir(dst, 2, opts->regs[Z80_SP], SZ_W); if (inst->reg == Z80_AF) { + dst = mov_rr(dst, opts->regs[Z80_A], SCRATCH1, SZ_B); + dst = shl_ir(dst, 8, SCRATCH1, SZ_W); dst = mov_rdisp8r(dst, CONTEXT, zf_off(ZF_S), SCRATCH1, SZ_B); dst = shl_ir(dst, 1, SCRATCH1, SZ_B); dst = or_rdisp8r(dst, CONTEXT, zf_off(ZF_Z), SCRATCH1, SZ_B); @@ -394,8 +396,6 @@ dst = or_rdisp8r(dst, CONTEXT, zf_off(ZF_N), SCRATCH1, SZ_B); dst = shl_ir(dst, 1, SCRATCH1, SZ_B); dst = or_rdisp8r(dst, CONTEXT, zf_off(ZF_C), SCRATCH1, SZ_B); - dst = shl_ir(dst, 8, SCRATCH1, SZ_W); - dst = mov_rr(dst, opts->regs[Z80_A], SCRATCH1, SZ_B); } else { dst = translate_z80_reg(inst, &src_op, dst, opts); dst = mov_rr(dst, src_op.base, SCRATCH1, SZ_W);