comparison m68k_to_x86.c @ 443:9ac3828ea560

Fix sign flag on swap
author Mike Pavone <pavone@retrodev.com>
date Wed, 17 Jul 2013 00:23:45 -0700
parents 1a48b31f5316
children 1e828ed04a7c
comparison
equal deleted inserted replaced
442:1a48b31f5316 443:9ac3828ea560
3838 break; 3838 break;
3839 case M68K_SWAP: 3839 case M68K_SWAP:
3840 dst = cycles(dst, BUS); 3840 dst = cycles(dst, BUS);
3841 if (src_op.mode == MODE_REG_DIRECT) { 3841 if (src_op.mode == MODE_REG_DIRECT) {
3842 dst = rol_ir(dst, 16, src_op.base, SZ_D); 3842 dst = rol_ir(dst, 16, src_op.base, SZ_D);
3843 dst = cmp_ir(dst, 0, src_op.base, SZ_D);
3843 } else{ 3844 } else{
3844 dst = rol_irdisp8(dst, 16, src_op.base, src_op.disp, SZ_D); 3845 dst = rol_irdisp8(dst, 16, src_op.base, src_op.disp, SZ_D);
3845 } 3846 dst = cmp_irdisp8(dst, 0, src_op.base, src_op.disp, SZ_D);
3847 }
3848
3846 dst = mov_ir(dst, 0, FLAG_C, SZ_B); 3849 dst = mov_ir(dst, 0, FLAG_C, SZ_B);
3847 dst = setcc_r(dst, CC_Z, FLAG_Z); 3850 dst = setcc_r(dst, CC_Z, FLAG_Z);
3848 dst = setcc_r(dst, CC_S, FLAG_N); 3851 dst = setcc_r(dst, CC_S, FLAG_N);
3849 dst = mov_ir(dst, 0, FLAG_V, SZ_B); 3852 dst = mov_ir(dst, 0, FLAG_V, SZ_B);
3850 break; 3853 break;