@@ -1070,16 +1070,17 @@ int cpu_exec(CPUState *cpu)
bool tcg_exec_realizefn(CPUState *cpu, Error **errp)
{
+ static unsigned initialized_targets;
const TCGCPUOps *tcg_ops = cpu->cc->tcg_ops;
- if (!tcg_target_initialized) {
+ if (!(initialized_targets & tcg_ops->arch_id)) {
/* Check mandatory TCGCPUOps handlers */
#ifndef CONFIG_USER_ONLY
assert(tcg_ops->cpu_exec_halt);
assert(tcg_ops->cpu_exec_interrupt);
#endif /* !CONFIG_USER_ONLY */
tcg_ops->initialize_once();
- tcg_target_initialized = true;
+ initialized_targets |= tcg_ops->arch_id;
}
cpu->tb_jmp_cache = g_new0(CPUJumpCache, 1);
Rather than initializing the first random target architecture and ignore the following ones when a global boolean is set, use a bitmask allowing different frontend targets to be initialized. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- accel/tcg/cpu-exec.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)