[Top][All Lists]
[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: |
Anthony Liguori |
Subject: |
Re: [Qemu-devel] [PATCH RFC v3 06/21] target-arm: Prepare model-specific class_init function |
Date: |
Mon, 06 Feb 2012 17:03:44 -0600 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.23) Gecko/20110922 Lightning/1.0b2 Thunderbird/3.1.15 |
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 },
Regards,
Anthony Liguori
static const ARMCPUInfo arm_cpus[] = {
@@ -230,6 +231,10 @@ static void arm_cpu_class_init(ObjectClass *klass, void
*data)
cpu_class->reset = arm_cpu_reset;
k->cp15.c0_cpuid = info->id;
+
+ if (info->class_init != NULL) {
+ (*info->class_init)(k, info);
+ }
}
static void cpu_register(const ARMCPUInfo *info)
- [Qemu-devel] [PATCH RFC v3 00/21] Introduce QOM CPU and use it for ARM, Andreas Färber, 2012/02/02
- [Qemu-devel] [PATCH RFC v3 09/21] target-arm: No longer abort on unhandled CPUIDs on reset, Andreas Färber, 2012/02/02
- [Qemu-devel] [PATCH RFC v3 06/21] target-arm: Prepare model-specific class_init function, Andreas Färber, 2012/02/02
- Re: [Qemu-devel] [PATCH RFC v3 06/21] target-arm: Prepare model-specific class_init function,
Anthony Liguori <=
- [Qemu-devel] [PATCH RFC v3 04/21] target-arm: Introduce QOM CPU and use it for CPUID lookup, Andreas Färber, 2012/02/02
- [Qemu-devel] [PATCH RFC v3 17/21] target-arm: Store CLIDR in ARMCPUClass, Andreas Färber, 2012/02/02
- [Qemu-devel] [PATCH RFC v3 03/21] qom: Introduce CPU class, Andreas Färber, 2012/02/02
[Qemu-devel] [PATCH RFC v3 07/21] target-arm: Overwrite reset handler for ti925t, Andreas Färber, 2012/02/02