|
|
|
@ -154,12 +154,6 @@ typedef struct DisasContext { |
|
|
|
static void *gen_throws_exception; |
|
|
|
#define gen_last_qop NULL |
|
|
|
|
|
|
|
#define OS_BYTE 0 |
|
|
|
#define OS_WORD 1 |
|
|
|
#define OS_LONG 2 |
|
|
|
#define OS_SINGLE 4 |
|
|
|
#define OS_DOUBLE 5 |
|
|
|
|
|
|
|
typedef void (*disas_proc)(CPUM68KState *env, DisasContext *s, uint16_t insn); |
|
|
|
|
|
|
|
#ifdef DEBUG_DISPATCH |
|
|
|
@ -453,6 +447,19 @@ static inline int opsize_bytes(int opsize) |
|
|
|
case OS_LONG: return 4; |
|
|
|
case OS_SINGLE: return 4; |
|
|
|
case OS_DOUBLE: return 8; |
|
|
|
case OS_EXTENDED: return 12; |
|
|
|
case OS_PACKED: return 12; |
|
|
|
default: |
|
|
|
g_assert_not_reached(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
static inline int insn_opsize(int insn) |
|
|
|
{ |
|
|
|
switch ((insn >> 6) & 3) { |
|
|
|
case 0: return OS_BYTE; |
|
|
|
case 1: return OS_WORD; |
|
|
|
case 2: return OS_LONG; |
|
|
|
default: |
|
|
|
g_assert_not_reached(); |
|
|
|
} |
|
|
|
@ -1330,19 +1337,7 @@ DISAS_INSN(clr) |
|
|
|
{ |
|
|
|
int opsize; |
|
|
|
|
|
|
|
switch ((insn >> 6) & 3) { |
|
|
|
case 0: /* clr.b */ |
|
|
|
opsize = OS_BYTE; |
|
|
|
break; |
|
|
|
case 1: /* clr.w */ |
|
|
|
opsize = OS_WORD; |
|
|
|
break; |
|
|
|
case 2: /* clr.l */ |
|
|
|
opsize = OS_LONG; |
|
|
|
break; |
|
|
|
default: |
|
|
|
abort(); |
|
|
|
} |
|
|
|
opsize = insn_opsize(insn); |
|
|
|
DEST_EA(env, insn, opsize, tcg_const_i32(0), NULL); |
|
|
|
gen_logic_cc(s, tcg_const_i32(0)); |
|
|
|
} |
|
|
|
@ -1486,19 +1481,7 @@ DISAS_INSN(tst) |
|
|
|
int opsize; |
|
|
|
TCGv tmp; |
|
|
|
|
|
|
|
switch ((insn >> 6) & 3) { |
|
|
|
case 0: /* tst.b */ |
|
|
|
opsize = OS_BYTE; |
|
|
|
break; |
|
|
|
case 1: /* tst.w */ |
|
|
|
opsize = OS_WORD; |
|
|
|
break; |
|
|
|
case 2: /* tst.l */ |
|
|
|
opsize = OS_LONG; |
|
|
|
break; |
|
|
|
default: |
|
|
|
abort(); |
|
|
|
} |
|
|
|
opsize = insn_opsize(insn); |
|
|
|
SRC_EA(env, tmp, opsize, 1, NULL); |
|
|
|
gen_logic_cc(s, tmp); |
|
|
|
} |
|
|
|
|