Skip to content

Commit

Permalink
translate-all: Change tb_flush() env argument to cpu
Browse files Browse the repository at this point in the history
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 <[email protected]>
Cc: Paolo Bonzini <[email protected]>
Reviewed-by: Eduardo Habkost <[email protected]>
Acked-by: Eduardo Habkost <[email protected]>
Signed-off-by: Peter Crosthwaite <[email protected]>
Signed-off-by: Andreas Färber <[email protected]>
  • Loading branch information
pcrost authored and afaerber committed Jul 9, 2015
1 parent 6dd0f83 commit bbd77c1
Show file tree
Hide file tree
Showing 7 changed files with 9 additions and 14 deletions.
3 changes: 1 addition & 2 deletions exec.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
}
Expand Down
6 changes: 2 additions & 4 deletions gdbstub.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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;
Expand All @@ -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));
Expand Down
2 changes: 1 addition & 1 deletion include/exec/exec-all.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion linux-user/signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion target-alpha/sys_helper.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion target-i386/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 2 additions & 4 deletions translate-all.c
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down Expand Up @@ -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. */
Expand Down

0 comments on commit bbd77c1

Please sign in to comment.