Mercurial > repos > blastem
changeset 578:ec1365fb2954
Use translate_m68k_unary for SWAP in 68K core
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 04 Mar 2014 22:24:08 -0800 |
parents | 0f367276a80c |
children | 0031cd308a31 |
files | m68k_core_x86.c |
diffstat | 1 files changed, 3 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- 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: