[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH for-2.5 20/30] m68k: add exg
From: |
Laurent Vivier |
Subject: |
[Qemu-devel] [PATCH for-2.5 20/30] m68k: add exg |
Date: |
Sun, 9 Aug 2015 22:13:39 +0200 |
Signed-off-by: Laurent Vivier <address@hidden>
---
target-m68k/translate.c | 34 +++++++++++++++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/target-m68k/translate.c b/target-m68k/translate.c
index adf4521..b7d15e9 100644
--- a/target-m68k/translate.c
+++ b/target-m68k/translate.c
@@ -2035,10 +2035,42 @@ DISAS_INSN(and)
TCGv dest;
TCGv addr;
int opsize;
+ int exg_mode;
+ dest = tcg_temp_new();
+
+ /* exg */
+
+ exg_mode = insn & 0x1f8;
+ if (exg_mode == 0x140) {
+ /* exchange Dx and Dy */
+ src = DREG(insn, 9);
+ reg = DREG(insn, 0);
+ tcg_gen_mov_i32(dest, src);
+ tcg_gen_mov_i32(src, reg);
+ tcg_gen_mov_i32(reg, dest);
+ return;
+ } else if (exg_mode == 0x148) {
+ /* exchange Ax and Ay */
+ src = AREG(insn, 9);
+ reg = AREG(insn, 0);
+ tcg_gen_mov_i32(dest, src);
+ tcg_gen_mov_i32(src, reg);
+ tcg_gen_mov_i32(reg, dest);
+ return;
+ } else if (exg_mode == 0x188) {
+ /* exchange Dx and Ay */
+ src = DREG(insn, 9);
+ reg = AREG(insn, 0);
+ tcg_gen_mov_i32(dest, src);
+ tcg_gen_mov_i32(src, reg);
+ tcg_gen_mov_i32(reg, dest);
+ return;
+ }
+ /* and */
opsize = insn_opsize(insn, 6);
reg = DREG(insn, 9);
- dest = tcg_temp_new();
+
if (insn & 0x100) {
SRC_EA(env, src, opsize, -1, &addr);
tcg_gen_and_i32(dest, src, reg);
--
2.4.3
[Qemu-devel] [PATCH for-2.5 17/30] m68k: ori/andi/subi/addi/eori/cmpi can modify SR/CCR, Laurent Vivier, 2015/08/09
[Qemu-devel] [PATCH for-2.5 18/30] m68k: addq/subq can work with all the data sizes., Laurent Vivier, 2015/08/09
[Qemu-devel] [PATCH for-2.5 16/30] m68k: Add all access modes and data sizes to some 680x0 instructions, Laurent Vivier, 2015/08/09
[Qemu-devel] [PATCH for-2.5 20/30] m68k: add exg,
Laurent Vivier <=
[Qemu-devel] [PATCH for-2.5 21/30] m68k: add bkpt, Laurent Vivier, 2015/08/09
[Qemu-devel] [PATCH for-2.5 19/30] m68k: add cmpm, Laurent Vivier, 2015/08/09
[Qemu-devel] [PATCH for-2.5 25/30] m68k: add abcd, sbcd, nbcd instructions, Laurent Vivier, 2015/08/09