diff options
author | Peter Crosthwaite <crosthwaitepeter@gmail.com> | 2015-06-23 19:31:15 -0700 |
---|---|---|
committer | Andreas Färber <afaerber@suse.de> | 2015-07-09 15:20:40 +0200 |
commit | bbd77c180d7ff1b04a7661bb878939b2e1d23798 (patch) | |
tree | 8d7d0be38bf6a50002dec632d521efa81b6e0e87 | |
parent | 6dd0f8342ddfbd8db3e3de1a17686cedbc14e9f1 (diff) |
translate-all: Change tb_flush() env argument to cpu
All of the core-code usages of this API have the cpu pointer handy so
pass it in. There are only 3 architecture specific usages (2 of which
are commented out) which can just use ENV_GET_CPU() locally to get the
cpu pointer. The reduces core code usage of the CPU env, which brings
us closer to common-obj'ing these core files.
Cc: Riku Voipio <riku.voipio@iki.fi>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Acked-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
-rw-r--r-- | exec.c | 3 | ||||
-rw-r--r-- | gdbstub.c | 6 | ||||
-rw-r--r-- | include/exec/exec-all.h | 2 | ||||
-rw-r--r-- | linux-user/signal.c | 2 | ||||
-rw-r--r-- | target-alpha/sys_helper.c | 2 | ||||
-rw-r--r-- | target-i386/translate.c | 2 | ||||
-rw-r--r-- | translate-all.c | 6 |
7 files changed, 9 insertions, 14 deletions
@@ -816,8 +816,7 @@ void cpu_single_step(CPUState *cpu, int enabled) } else { /* must flush all the translated code to avoid inconsistencies */ /* XXX: only flush what is necessary */ - CPUArchState *env = cpu->env_ptr; - tb_flush(env); + tb_flush(cpu); } } } @@ -1226,7 +1226,6 @@ void gdb_set_stop_cpu(CPUState *cpu) static void gdb_vm_state_change(void *opaque, int running, RunState state) { GDBState *s = gdbserver_state; - CPUArchState *env = s->c_cpu->env_ptr; CPUState *cpu = s->c_cpu; char buf[256]; const char *type; @@ -1261,7 +1260,7 @@ static void gdb_vm_state_change(void *opaque, int running, RunState state) cpu->watchpoint_hit = NULL; goto send_packet; } - tb_flush(env); + tb_flush(cpu); ret = GDB_SIGNAL_TRAP; break; case RUN_STATE_PAUSED: @@ -1490,7 +1489,6 @@ gdb_queuesig (void) int gdb_handlesig(CPUState *cpu, int sig) { - CPUArchState *env = cpu->env_ptr; GDBState *s; char buf[256]; int n; @@ -1502,7 +1500,7 @@ gdb_handlesig(CPUState *cpu, int sig) /* disable single step if it was enabled */ cpu_single_step(cpu, 0); - tb_flush(env); + tb_flush(cpu); if (sig != 0) { snprintf(buf, sizeof(buf), "S%02x", target_signal_to_gdb(sig)); diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h index 44b89551c9..9f74abd98c 100644 --- a/include/exec/exec-all.h +++ b/include/exec/exec-all.h @@ -196,7 +196,7 @@ struct TBContext { }; void tb_free(TranslationBlock *tb); -void tb_flush(CPUArchState *env); +void tb_flush(CPUState *cpu); void tb_phys_invalidate(TranslationBlock *tb, tb_page_addr_t page_addr); #if defined(USE_DIRECT_JUMP) diff --git a/linux-user/signal.c b/linux-user/signal.c index 1166f2fdb2..9d4cef409e 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -2348,7 +2348,7 @@ static void setup_frame(int sig, struct target_sigaction *ka, /* Flush instruction space. */ //flush_sig_insns(current->mm, (unsigned long) &(sf->insns[0])); - // tb_flush(env); + // tb_flush(CPU(sparc_env_get_cpu(env))); } unlock_user(sf, sf_addr, sizeof(struct target_signal_frame)); return; diff --git a/target-alpha/sys_helper.c b/target-alpha/sys_helper.c index ae2e174f32..1c59e108b9 100644 --- a/target-alpha/sys_helper.c +++ b/target-alpha/sys_helper.c @@ -74,7 +74,7 @@ void helper_tbis(CPUAlphaState *env, uint64_t p) void helper_tb_flush(CPUAlphaState *env) { - tb_flush(env); + tb_flush(CPU(alpha_env_get_cpu(env))); } void helper_halt(uint64_t restart) diff --git a/target-i386/translate.c b/target-i386/translate.c index 7a1bdee271..82e2245bfd 100644 --- a/target-i386/translate.c +++ b/target-i386/translate.c @@ -6925,7 +6925,7 @@ static target_ulong disas_insn(CPUX86State *env, DisasContext *s, gen_debug(s, pc_start - s->cs_base); #else /* start debug */ - tb_flush(env); + tb_flush(CPU(x86_env_get_cpu(env))); qemu_set_log(CPU_LOG_INT | CPU_LOG_TB_IN_ASM); #endif break; diff --git a/translate-all.c b/translate-all.c index 50d53fdac0..60a3d8b2bd 100644 --- a/translate-all.c +++ b/translate-all.c @@ -772,10 +772,8 @@ static void page_flush_tb(void) /* flush all the translation blocks */ /* XXX: tb_flush is currently not thread safe */ -void tb_flush(CPUArchState *env1) +void tb_flush(CPUState *cpu) { - CPUState *cpu = ENV_GET_CPU(env1); - #if defined(DEBUG_FLUSH) printf("qemu: flush code_size=%ld nb_tbs=%d avg_tb_size=%ld\n", (unsigned long)(tcg_ctx.code_gen_ptr - tcg_ctx.code_gen_buffer), @@ -1014,7 +1012,7 @@ TranslationBlock *tb_gen_code(CPUState *cpu, tb = tb_alloc(pc); if (!tb) { /* flush must be done */ - tb_flush(env); + tb_flush(cpu); /* cannot fail at this point */ tb = tb_alloc(pc); /* Don't forget to invalidate previous TB info. */ |