diff options
author | Michael Pavone <pavone@retrodev.com> | 2014-03-04 22:24:08 -0800 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2014-03-04 22:24:08 -0800 |
commit | f0bf6f786b0ce54f005c2749cb2c4d11e66b790d (patch) | |
tree | 209f4edfdff7b83b71ea9ffd8dec134307f452a0 /m68k_core_x86.c | |
parent | 3989f4f448a02d0b573f1124bccfa75205124325 (diff) |
Use translate_m68k_unary for SWAP in 68K core
Diffstat (limited to 'm68k_core_x86.c')
-rw-r--r-- | m68k_core_x86.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/m68k_core_x86.c b/m68k_core_x86.c index 5715171..288d97e 100644 --- a/m68k_core_x86.c +++ b/m68k_core_x86.c @@ -1453,6 +1453,7 @@ void op_r(code_info *code, m68kinst *inst, uint8_t dst, uint8_t size) 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 @@ void op_rdisp(code_info *code, m68kinst *inst, uint8_t dst, int32_t disp, uint8_ 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 @@ void translate_m68k(m68k_options * opts, m68kinst * inst) 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: |