qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH RFC v3 06/21] target-arm: Prepare model-specific


From: Andreas Färber
Subject: Re: [Qemu-devel] [PATCH RFC v3 06/21] target-arm: Prepare model-specific class_init function
Date: Tue, 07 Feb 2012 00:08:03 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:9.0) Gecko/20111220 Thunderbird/9.0

Am 07.02.2012 00:03, schrieb Anthony Liguori:
> On 02/02/2012 08:59 PM, Andreas Färber wrote:
>> This allows to share initialization between CPU models.
>>
>> Signed-off-by: Andreas Färber<address@hidden>
>> ---
>>   target-arm/cpu.c |    5 +++++
>>   1 files changed, 5 insertions(+), 0 deletions(-)
>>
>> diff --git a/target-arm/cpu.c b/target-arm/cpu.c
>> index 43231c9..b794ec1 100644
>> --- a/target-arm/cpu.c
>> +++ b/target-arm/cpu.c
>> @@ -96,6 +96,7 @@ static void arm_cpu_reset(CPU *c)
>>   typedef struct ARMCPUInfo {
>>       const char *name;
>>       uint32_t id;
>> +    void (*class_init)(ARMCPUClass *klass, const struct ARMCPUInfo
>> *info);
>>   } ARMCPUInfo;
> 
> So could you do:
> 
> TypeInfo arm_cpus[] = {
>    {
>     .name = "arm-cpu-model",
>         .parent = TYPE_ARM_CPU,
>         .class_data = (void *)(intptr_t)0x2342342,
>         .class_init = arm_generic_init,
>    }
> 
> It's roughly the same code but then there isn't redirection.  You can do
> this in general by having something like:
> 
> .class_data = (SpecialInfo[]){ .id = 0x23423423 },

Have you reviewed the users of this? More fields are being added, and
the specific users of this facility initialize fields not shared by many
CPUs so I wanted to keep ARMCPUInfo small. The shared fields are already
being initialized by arm_cpu_class_init() via .class_data.

Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg



reply via email to

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