target-m68k: Use cpu_exec_enter/exit qom hooks
Signed-off-by: Richard Henderson <rth@twiddle.net> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Message-id: 1410626734-3804-5-git-send-email-rth@twiddle.net Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
374e0cd4db
commit
00f3fd63e1
13
cpu-exec.c
13
cpu-exec.c
@ -352,11 +352,7 @@ int cpu_exec(CPUArchState *env)
|
|||||||
cpu->exit_request = 1;
|
cpu->exit_request = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(TARGET_M68K)
|
#if defined(TARGET_PPC)
|
||||||
env->cc_op = CC_OP_FLAGS;
|
|
||||||
env->cc_dest = env->sr & 0xf;
|
|
||||||
env->cc_x = (env->sr >> 4) & 1;
|
|
||||||
#elif defined(TARGET_PPC)
|
|
||||||
env->reserve_addr = -1;
|
env->reserve_addr = -1;
|
||||||
#endif
|
#endif
|
||||||
cc->cpu_exec_enter(cpu);
|
cc->cpu_exec_enter(cpu);
|
||||||
@ -804,13 +800,6 @@ int cpu_exec(CPUArchState *env)
|
|||||||
}
|
}
|
||||||
} /* for(;;) */
|
} /* for(;;) */
|
||||||
|
|
||||||
|
|
||||||
#if defined(TARGET_M68K)
|
|
||||||
cpu_m68k_flush_flags(env, env->cc_op);
|
|
||||||
env->cc_op = CC_OP_FLAGS;
|
|
||||||
env->sr = (env->sr & 0xffe0)
|
|
||||||
| env->cc_dest | (env->cc_x << 4);
|
|
||||||
#endif
|
|
||||||
cc->cpu_exec_exit(cpu);
|
cc->cpu_exec_exit(cpu);
|
||||||
|
|
||||||
/* fail safe : never use current_cpu outside cpu_exec() */
|
/* fail safe : never use current_cpu outside cpu_exec() */
|
||||||
|
@ -77,4 +77,7 @@ hwaddr m68k_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
|
|||||||
int m68k_cpu_gdb_read_register(CPUState *cpu, uint8_t *buf, int reg);
|
int m68k_cpu_gdb_read_register(CPUState *cpu, uint8_t *buf, int reg);
|
||||||
int m68k_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
|
int m68k_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
|
||||||
|
|
||||||
|
void m68k_cpu_exec_enter(CPUState *cs);
|
||||||
|
void m68k_cpu_exec_exit(CPUState *cs);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -205,6 +205,9 @@ static void m68k_cpu_class_init(ObjectClass *c, void *data)
|
|||||||
#else
|
#else
|
||||||
cc->get_phys_page_debug = m68k_cpu_get_phys_page_debug;
|
cc->get_phys_page_debug = m68k_cpu_get_phys_page_debug;
|
||||||
#endif
|
#endif
|
||||||
|
cc->cpu_exec_enter = m68k_cpu_exec_enter;
|
||||||
|
cc->cpu_exec_exit = m68k_cpu_exec_exit;
|
||||||
|
|
||||||
dc->vmsd = &vmstate_m68k_cpu;
|
dc->vmsd = &vmstate_m68k_cpu;
|
||||||
cc->gdb_num_core_regs = 18;
|
cc->gdb_num_core_regs = 18;
|
||||||
cc->gdb_core_xml_file = "cf-core.xml";
|
cc->gdb_core_xml_file = "cf-core.xml";
|
||||||
|
@ -864,3 +864,23 @@ void HELPER(set_mac_extu)(CPUM68KState *env, uint32_t val, uint32_t acc)
|
|||||||
res |= (uint64_t)(val & 0xffff0000) << 16;
|
res |= (uint64_t)(val & 0xffff0000) << 16;
|
||||||
env->macc[acc + 1] = res;
|
env->macc[acc + 1] = res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void m68k_cpu_exec_enter(CPUState *cs)
|
||||||
|
{
|
||||||
|
M68kCPU *cpu = M68K_CPU(cs);
|
||||||
|
CPUM68KState *env = &cpu->env;
|
||||||
|
|
||||||
|
env->cc_op = CC_OP_FLAGS;
|
||||||
|
env->cc_dest = env->sr & 0xf;
|
||||||
|
env->cc_x = (env->sr >> 4) & 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void m68k_cpu_exec_exit(CPUState *cs)
|
||||||
|
{
|
||||||
|
M68kCPU *cpu = M68K_CPU(cs);
|
||||||
|
CPUM68KState *env = &cpu->env;
|
||||||
|
|
||||||
|
cpu_m68k_flush_flags(env, env->cc_op);
|
||||||
|
env->cc_op = CC_OP_FLAGS;
|
||||||
|
env->sr = (env->sr & 0xffe0) | env->cc_dest | (env->cc_x << 4);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user