On 11/27/24 11:28, Anton Johansson wrote:
> On 27/11/24, Philippe Mathieu-Daudé wrote:
>> 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(-)
>>
>> diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
>> index ab77740c954..b37995f7d0c 100644
>> --- a/accel/tcg/cpu-exec.c
>> +++ b/accel/tcg/cpu-exec.c
>> @@ -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);
>> --
>> 2.45.2
>>
>
> Only suggestion would be to assert that arch_id is set, might save some
> headache in the future.
Yep.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
r~