[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 12/23] target-m68k: remove m68k_cpu_exec_enter() and
From: |
Laurent Vivier |
Subject: |
[Qemu-devel] [PULL 12/23] target-m68k: remove m68k_cpu_exec_enter() and m68k_cpu_exec_exit() |
Date: |
Tue, 25 Oct 2016 21:03:08 +0200 |
Update cc_op directly from tcg_gen_insn_start() and
restore_state_to_opc()
Copied from target-i386
Signed-off-by: Laurent Vivier <address@hidden>
---
cpu-exec.c | 6 ------
target-m68k/cpu.c | 2 --
target-m68k/cpu.h | 4 +---
target-m68k/helper.c | 20 --------------------
target-m68k/translate.c | 6 +++++-
5 files changed, 6 insertions(+), 32 deletions(-)
diff --git a/cpu-exec.c b/cpu-exec.c
index e114fcd..e1bc368 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -151,12 +151,6 @@ static inline tcg_target_ulong cpu_tb_exec(CPUState *cpu,
TranslationBlock *itb)
&& qemu_log_in_addr_range(itb->pc)) {
#if defined(TARGET_I386)
log_cpu_state(cpu, CPU_DUMP_CCOP);
-#elif defined(TARGET_M68K)
- /* ??? Should not modify env state for dumping. */
- 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);
- log_cpu_state(cpu, 0);
#else
log_cpu_state(cpu, 0);
#endif
diff --git a/target-m68k/cpu.c b/target-m68k/cpu.c
index f925e26..ef02d9f 100644
--- a/target-m68k/cpu.c
+++ b/target-m68k/cpu.c
@@ -281,8 +281,6 @@ static void m68k_cpu_class_init(ObjectClass *c, void *data)
#else
cc->get_phys_page_debug = m68k_cpu_get_phys_page_debug;
#endif
- cc->cpu_exec_enter = m68k_cpu_exec_enter;
- cc->cpu_exec_exit = m68k_cpu_exec_exit;
cc->disas_set_info = m68k_cpu_disas_set_info;
cc->gdb_num_core_regs = 18;
diff --git a/target-m68k/cpu.h b/target-m68k/cpu.h
index 18b6930..f055ef6 100644
--- a/target-m68k/cpu.h
+++ b/target-m68k/cpu.h
@@ -61,6 +61,7 @@
#define EXCP_HALT_INSN 0x101
#define NB_MMU_MODES 2
+#define TARGET_INSN_START_EXTRA_WORDS 1
typedef struct CPUM68KState {
uint32_t dregs[8];
@@ -149,9 +150,6 @@ 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_write_register(CPUState *cpu, uint8_t *buf, int reg);
-void m68k_cpu_exec_enter(CPUState *cs);
-void m68k_cpu_exec_exit(CPUState *cs);
-
void m68k_tcg_init(void);
void m68k_cpu_init_gdb(M68kCPU *cpu);
M68kCPU *cpu_m68k_init(const char *cpu_model);
diff --git a/target-m68k/helper.c b/target-m68k/helper.c
index dc55a7a..92d1ded 100644
--- a/target-m68k/helper.c
+++ b/target-m68k/helper.c
@@ -922,23 +922,3 @@ void HELPER(set_mac_extu)(CPUM68KState *env, uint32_t val,
uint32_t acc)
res |= (uint64_t)(val & 0xffff0000) << 16;
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);
-}
diff --git a/target-m68k/translate.c b/target-m68k/translate.c
index 650c141..681f3a8 100644
--- a/target-m68k/translate.c
+++ b/target-m68k/translate.c
@@ -3025,7 +3025,7 @@ void gen_intermediate_code(CPUM68KState *env,
TranslationBlock *tb)
do {
pc_offset = dc->pc - pc_start;
gen_throws_exception = NULL;
- tcg_gen_insn_start(dc->pc);
+ tcg_gen_insn_start(dc->pc, dc->cc_op);
num_insns++;
if (unlikely(cpu_breakpoint_test(cs, dc->pc, BP_ANY))) {
@@ -3119,5 +3119,9 @@ void m68k_cpu_dump_state(CPUState *cs, FILE *f,
fprintf_function cpu_fprintf,
void restore_state_to_opc(CPUM68KState *env, TranslationBlock *tb,
target_ulong *data)
{
+ int cc_op = data[1];
env->pc = data[0];
+ if (cc_op != CC_OP_DYNAMIC) {
+ env->cc_op = cc_op;
+ }
}
--
2.7.4
- [Qemu-devel] [PULL 09/23] target-m68k: REG() macro cleanup, (continued)
- [Qemu-devel] [PULL 09/23] target-m68k: REG() macro cleanup, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 04/23] target-m68k: manage scaled index, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 01/23] target-m68k: fix DEBUG_DISPATCH, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 02/23] target-m68k: Build the opcode table only once to avoid multithreading issues, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 03/23] target-m68k: define m680x0 CPUs and features, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 15/23] target-m68k: update CPU flags management, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 13/23] target-m68k: update move to/from ccr/sr, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 21/23] target-m68k: Use setcond for scc, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 08/23] target-m68k: set PAGE_BITS to 12 for m68k, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 07/23] target-m68k: define operand sizes, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 12/23] target-m68k: remove m68k_cpu_exec_enter() and m68k_cpu_exec_exit(),
Laurent Vivier <=
- [Qemu-devel] [PULL 05/23] target-m68k: introduce read_imXX() functions, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 11/23] target-m68k: Replace helper_xflag_lt with setcond, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 10/23] target-m68k: allow to update flags with operation on words and bytes, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 23/23] target-m68k: Optimize gen_flush_flags, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 20/23] target-m68k: Introduce DisasCompare, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 16/23] target-m68k: Print flags properly, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 18/23] target-m68k: Remove incorrect clearing of cc_x, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 17/23] target-m68k: Some fixes to SR and flags management, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 14/23] target-m68k: don't update cc_dest in helpers, Laurent Vivier, 2016/10/25
- [Qemu-devel] [PULL 22/23] target-m68k: Optimize some comparisons, Laurent Vivier, 2016/10/25