qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC qom-cpu 02/15] target-arm: Update CPU to QOM reali


From: Eduardo Habkost
Subject: Re: [Qemu-devel] [RFC qom-cpu 02/15] target-arm: Update CPU to QOM realizefn
Date: Wed, 16 Jan 2013 13:52:48 -0200
User-agent: Mutt/1.5.21 (2010-09-15)

On Wed, Jan 16, 2013 at 06:32:47AM +0100, Andreas Färber wrote:
[...]
> diff --git a/target-arm/helper.c b/target-arm/helper.c
> index 37c34a1..f4553de 100644
> --- a/target-arm/helper.c
> +++ b/target-arm/helper.c
> @@ -1270,14 +1270,12 @@ ARMCPU *cpu_arm_init(const char *cpu_model)
>      cpu = ARM_CPU(object_new(cpu_model));
>      env = &cpu->env;
>      env->cpu_model_str = cpu_model;
> -    arm_cpu_realize(cpu);
>  
>      if (tcg_enabled() && !inited) {
>          inited = 1;
>          arm_translate_init();
>      }
>  
> -    cpu_reset(CPU(cpu));
>      if (arm_feature(env, ARM_FEATURE_NEON)) {
>          gdb_register_coprocessor(env, vfp_gdb_get_reg, vfp_gdb_set_reg,
>                                   51, "arm-neon.xml", 0);

Some arm_feature() checks here (e.g. ARM_FEATURE_VFP3) depend on
set_feature() calls done by arm_cpu_realize[fn]().

On the other hand, I won't be surprised if gdb_register_coprocessor()
needs to be called before qemu_init_vcpu(). I also don't know if it is
safe to call gdb_register_coprocessor() before cpu_reset().

Why not move all the code between the "arm_cpu_realize(cpu)" and "return
cpu" lines to the realize function as-is, instead of moving only part of
the code? If arm requires these steps to be run after creating a CPU, I
consider all of them part of the CPU realization process.


> @@ -1288,7 +1286,10 @@ ARMCPU *cpu_arm_init(const char *cpu_model)
>          gdb_register_coprocessor(env, vfp_gdb_get_reg, vfp_gdb_set_reg,
>                                   19, "arm-vfp.xml", 0);
>      }
> -    qemu_init_vcpu(env);
> +
> +    /* TODO this should be set centrally, once possible */
> +    object_property_set_bool(OBJECT(cpu), true, "realized", NULL);
> +
>      return cpu;
>  }
>  
> -- 
> 1.7.10.4
> 
> 

-- 
Eduardo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]