# HG changeset patch # User Michael Pavone # Date 1394000648 28800 # Node ID ec1365fb2954ab7c770682273914a669d3016b51 # Parent 0f367276a80ca64e2dd2789b65e06f2c5f2cfcef Use translate_m68k_unary for SWAP in 68K core diff -r 0f367276a80c -r ec1365fb2954 m68k_core_x86.c --- a/m68k_core_x86.c Tue Mar 04 22:12:43 2014 -0800 +++ b/m68k_core_x86.c Tue Mar 04 22:24:08 2014 -0800 @@ -1453,6 +1453,7 @@ case M68K_ROR: ror_clr(code, dst, size); break; case M68K_ROXL: rcl_clr(code, dst, size); break; case M68K_ROXR: rcr_clr(code, dst, size); break; + case M68K_SWAP: rol_ir(code, 16, dst, SZ_D); cmp_ir(code, 0, dst, SZ_D); break; case M68K_TST: cmp_ir(code, 0, dst, size); break; } } @@ -1467,6 +1468,7 @@ case M68K_ROR: ror_clrdisp(code, dst, disp, size); break; case M68K_ROXL: rcl_clrdisp(code, dst, disp, size); break; case M68K_ROXR: rcr_clrdisp(code, dst, disp, size); break; + case M68K_SWAP: rol_irdisp(code, 16, dst, disp, SZ_D); cmp_irdisp(code, 0, dst, disp, SZ_D); break; case M68K_TST: cmp_irdisp(code, 0, dst, disp, size); break; } } @@ -2323,24 +2325,13 @@ jcc(code, CC_C, loop_top); break; } - case M68K_SWAP: - cycles(&opts->gen, BUS); - if (src_op.mode == MODE_REG_DIRECT) { - rol_ir(code, 16, src_op.base, SZ_D); - cmp_ir(code, 0, src_op.base, SZ_D); - } else{ - rol_irdisp(code, 16, src_op.base, src_op.disp, SZ_D); - cmp_irdisp(code, 0, src_op.base, src_op.disp, SZ_D); - } - - update_flags(opts, N|Z|V0|C0); - break; //case M68K_TAS: case M68K_TRAP: translate_m68k_trap(opts, inst); break; //case M68K_TRAPV: case M68K_TST: + case M68K_SWAP: translate_m68k_unary(opts, inst, N|Z|V0|C0, &src_op); break; default: