aboutsummaryrefslogtreecommitdiff
path: root/target/m68k
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2018-05-11 22:02:50 -0700
committerLaurent Vivier <laurent@vivier.eu>2018-06-11 12:43:42 +0200
commita56f36c1d2bccbc50a53fa8093b93d205607f1b8 (patch)
tree7c7a9b5109988a7f52cb4b3ecec1bfcee7bb82b3 /target/m68k
parent4c7a0f6f34869b3dfe7091d28ff27a8dfbdd8b70 (diff)
target/m68k: Merge disas_m68k_insn into m68k_tr_translate_insn
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20180512050250.12774-10-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Diffstat (limited to 'target/m68k')
-rw-r--r--target/m68k/translate.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/target/m68k/translate.c b/target/m68k/translate.c
index ff3493d8ab..ae3651b867 100644
--- a/target/m68k/translate.c
+++ b/target/m68k/translate.c
@@ -6049,16 +6049,6 @@ void register_m68k_insns (CPUM68KState *env)
#undef INSN
}
-/* ??? Some of this implementation is not exception safe. We should always
- write back the result to memory before setting the condition codes. */
-static void disas_m68k_insn(CPUM68KState * env, DisasContext *s)
-{
- uint16_t insn = read_im16(env, s);
- opcode_table[insn](env, s, insn);
- do_writebacks(s);
- do_release(s);
-}
-
static void m68k_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cpu)
{
DisasContext *dc = container_of(dcbase, DisasContext, base);
@@ -6101,8 +6091,13 @@ static bool m68k_tr_breakpoint_check(DisasContextBase *dcbase, CPUState *cpu,
static void m68k_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu)
{
DisasContext *dc = container_of(dcbase, DisasContext, base);
+ CPUM68KState *env = cpu->env_ptr;
+ uint16_t insn = read_im16(env, dc);
+
+ opcode_table[insn](env, dc, insn);
+ do_writebacks(dc);
+ do_release(dc);
- disas_m68k_insn(cpu->env_ptr, dc);
dc->base.pc_next = dc->pc;
if (dc->base.is_jmp == DISAS_NEXT) {