mirror of https://github.com/xemu-project/xemu.git
accel/tcg: Move helper_lookup_tb_ptr to cpu-exec.c
This will allow additional code sharing. No functional change. Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
50b208b848
commit
4288eb26a0
|
@ -38,6 +38,7 @@
|
||||||
#include "exec/cpu-all.h"
|
#include "exec/cpu-all.h"
|
||||||
#include "sysemu/cpu-timers.h"
|
#include "sysemu/cpu-timers.h"
|
||||||
#include "sysemu/replay.h"
|
#include "sysemu/replay.h"
|
||||||
|
#include "exec/helper-proto.h"
|
||||||
#include "tb-hash.h"
|
#include "tb-hash.h"
|
||||||
#include "tb-lookup.h"
|
#include "tb-lookup.h"
|
||||||
#include "tb-context.h"
|
#include "tb-context.h"
|
||||||
|
@ -145,6 +146,35 @@ static void init_delay_params(SyncClocks *sc, const CPUState *cpu)
|
||||||
}
|
}
|
||||||
#endif /* CONFIG USER ONLY */
|
#endif /* CONFIG USER ONLY */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* helper_lookup_tb_ptr: quick check for next tb
|
||||||
|
* @env: current cpu state
|
||||||
|
*
|
||||||
|
* Look for an existing TB matching the current cpu state.
|
||||||
|
* If found, return the code pointer. If not found, return
|
||||||
|
* the tcg epilogue so that we return into cpu_tb_exec.
|
||||||
|
*/
|
||||||
|
const void *HELPER(lookup_tb_ptr)(CPUArchState *env)
|
||||||
|
{
|
||||||
|
CPUState *cpu = env_cpu(env);
|
||||||
|
TranslationBlock *tb;
|
||||||
|
target_ulong cs_base, pc;
|
||||||
|
uint32_t flags;
|
||||||
|
|
||||||
|
cpu_get_tb_cpu_state(env, &pc, &cs_base, &flags);
|
||||||
|
|
||||||
|
tb = tb_lookup(cpu, pc, cs_base, flags, curr_cflags(cpu));
|
||||||
|
if (tb == NULL) {
|
||||||
|
return tcg_code_gen_epilogue;
|
||||||
|
}
|
||||||
|
qemu_log_mask_and_addr(CPU_LOG_EXEC, pc,
|
||||||
|
"Chain %d: %p ["
|
||||||
|
TARGET_FMT_lx "/" TARGET_FMT_lx "/%#x] %s\n",
|
||||||
|
cpu->cpu_index, tb->tc.ptr, cs_base, pc, flags,
|
||||||
|
lookup_symbol(pc));
|
||||||
|
return tb->tc.ptr;
|
||||||
|
}
|
||||||
|
|
||||||
/* Execute a TB, and fix up the CPU state afterwards if necessary */
|
/* Execute a TB, and fix up the CPU state afterwards if necessary */
|
||||||
/*
|
/*
|
||||||
* Disable CFI checks.
|
* Disable CFI checks.
|
||||||
|
|
|
@ -30,7 +30,6 @@
|
||||||
#include "disas/disas.h"
|
#include "disas/disas.h"
|
||||||
#include "exec/log.h"
|
#include "exec/log.h"
|
||||||
#include "tcg/tcg.h"
|
#include "tcg/tcg.h"
|
||||||
#include "tb-lookup.h"
|
|
||||||
|
|
||||||
/* 32-bit helpers */
|
/* 32-bit helpers */
|
||||||
|
|
||||||
|
@ -145,27 +144,6 @@ uint64_t HELPER(ctpop_i64)(uint64_t arg)
|
||||||
return ctpop64(arg);
|
return ctpop64(arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
const void *HELPER(lookup_tb_ptr)(CPUArchState *env)
|
|
||||||
{
|
|
||||||
CPUState *cpu = env_cpu(env);
|
|
||||||
TranslationBlock *tb;
|
|
||||||
target_ulong cs_base, pc;
|
|
||||||
uint32_t flags;
|
|
||||||
|
|
||||||
cpu_get_tb_cpu_state(env, &pc, &cs_base, &flags);
|
|
||||||
|
|
||||||
tb = tb_lookup(cpu, pc, cs_base, flags, curr_cflags(cpu));
|
|
||||||
if (tb == NULL) {
|
|
||||||
return tcg_code_gen_epilogue;
|
|
||||||
}
|
|
||||||
qemu_log_mask_and_addr(CPU_LOG_EXEC, pc,
|
|
||||||
"Chain %d: %p ["
|
|
||||||
TARGET_FMT_lx "/" TARGET_FMT_lx "/%#x] %s\n",
|
|
||||||
cpu->cpu_index, tb->tc.ptr, cs_base, pc, flags,
|
|
||||||
lookup_symbol(pc));
|
|
||||||
return tb->tc.ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void HELPER(exit_atomic)(CPUArchState *env)
|
void HELPER(exit_atomic)(CPUArchState *env)
|
||||||
{
|
{
|
||||||
cpu_loop_exit_atomic(env_cpu(env), GETPC());
|
cpu_loop_exit_atomic(env_cpu(env), GETPC());
|
||||||
|
|
Loading…
Reference in New Issue