mirror of
https://github.com/xemu-project/xemu.git
synced 2025-01-19 18:35:15 +00:00
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>
This commit is contained in:
parent
6dd0f8342d
commit
bbd77c180d
3
exec.c
3
exec.c
@ -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));
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user