mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
tcg: remove addr argument from lookup_tb_ptr
It is unlikely that we will ever want to call this helper passing an argument other than the current PC. So just remove the argument, and use the pc we already get from cpu_get_tb_cpu_state. This change paves the way to having a common "tb_lookup" function. Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Emilio G. Cota <cota@braap.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
d453ec7825
commit
7f11636dbe
12 changed files with 32 additions and 42 deletions
|
@ -144,33 +144,33 @@ uint64_t HELPER(ctpop_i64)(uint64_t arg)
|
|||
return ctpop64(arg);
|
||||
}
|
||||
|
||||
void *HELPER(lookup_tb_ptr)(CPUArchState *env, target_ulong addr)
|
||||
void *HELPER(lookup_tb_ptr)(CPUArchState *env)
|
||||
{
|
||||
CPUState *cpu = ENV_GET_CPU(env);
|
||||
TranslationBlock *tb;
|
||||
target_ulong cs_base, pc;
|
||||
uint32_t flags, addr_hash;
|
||||
uint32_t flags, hash;
|
||||
|
||||
addr_hash = tb_jmp_cache_hash_func(addr);
|
||||
tb = atomic_rcu_read(&cpu->tb_jmp_cache[addr_hash]);
|
||||
cpu_get_tb_cpu_state(env, &pc, &cs_base, &flags);
|
||||
hash = tb_jmp_cache_hash_func(pc);
|
||||
tb = atomic_rcu_read(&cpu->tb_jmp_cache[hash]);
|
||||
|
||||
if (unlikely(!(tb
|
||||
&& tb->pc == addr
|
||||
&& tb->pc == pc
|
||||
&& tb->cs_base == cs_base
|
||||
&& tb->flags == flags
|
||||
&& tb->trace_vcpu_dstate == *cpu->trace_dstate))) {
|
||||
tb = tb_htable_lookup(cpu, addr, cs_base, flags);
|
||||
tb = tb_htable_lookup(cpu, pc, cs_base, flags);
|
||||
if (!tb) {
|
||||
return tcg_ctx.code_gen_epilogue;
|
||||
}
|
||||
atomic_set(&cpu->tb_jmp_cache[addr_hash], tb);
|
||||
atomic_set(&cpu->tb_jmp_cache[hash], tb);
|
||||
}
|
||||
|
||||
qemu_log_mask_and_addr(CPU_LOG_EXEC, addr,
|
||||
qemu_log_mask_and_addr(CPU_LOG_EXEC, pc,
|
||||
"Chain %p [%d: " TARGET_FMT_lx "] %s\n",
|
||||
tb->tc_ptr, cpu->cpu_index, addr,
|
||||
lookup_symbol(addr));
|
||||
tb->tc_ptr, cpu->cpu_index, pc,
|
||||
lookup_symbol(pc));
|
||||
return tb->tc_ptr;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ DEF_HELPER_FLAGS_1(clrsb_i64, TCG_CALL_NO_RWG_SE, i64, i64)
|
|||
DEF_HELPER_FLAGS_1(ctpop_i32, TCG_CALL_NO_RWG_SE, i32, i32)
|
||||
DEF_HELPER_FLAGS_1(ctpop_i64, TCG_CALL_NO_RWG_SE, i64, i64)
|
||||
|
||||
DEF_HELPER_FLAGS_2(lookup_tb_ptr, TCG_CALL_NO_WG_SE, ptr, env, tl)
|
||||
DEF_HELPER_FLAGS_1(lookup_tb_ptr, TCG_CALL_NO_WG_SE, ptr, env)
|
||||
|
||||
DEF_HELPER_FLAGS_1(exit_atomic, TCG_CALL_NO_WG, noreturn, env)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue