[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH 08/40] target/arm: Pass ARMCPUClass to ARMCPUInfo.class_init
From: |
Richard Henderson |
Subject: |
[RFC PATCH 08/40] target/arm: Pass ARMCPUClass to ARMCPUInfo.class_init |
Date: |
Tue, 3 Jan 2023 10:16:14 -0800 |
Streamline new instances of this hook, so that we always go
through arm_cpu_leaf_class_init first, performing common tasks,
and have resolved the ARMCPUClass.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/arm/cpu-qom.h | 2 +-
target/arm/cpu.c | 10 +++++++---
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/target/arm/cpu-qom.h b/target/arm/cpu-qom.h
index ae31289582..057978b9db 100644
--- a/target/arm/cpu-qom.h
+++ b/target/arm/cpu-qom.h
@@ -36,7 +36,7 @@ OBJECT_DECLARE_CPU_TYPE(ARMCPU, ARMCPUClass, ARM_CPU)
typedef struct ARMCPUInfo {
const char *name;
void (*initfn)(Object *obj);
- void (*class_init)(ObjectClass *oc, void *data);
+ void (*class_init)(ARMCPUClass *acc);
} ARMCPUInfo;
void arm_cpu_register_parent(const ARMCPUInfo *info, const char *parent);
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index a2f59ac378..b16d9bbe47 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -2253,11 +2253,15 @@ static void arm_cpu_instance_init(Object *obj)
arm_cpu_post_init(obj);
}
-static void cpu_register_class_init(ObjectClass *oc, void *data)
+static void arm_cpu_leaf_class_init(ObjectClass *oc, void *data)
{
ARMCPUClass *acc = ARM_CPU_CLASS(oc);
+ const ARMCPUInfo *info = data;
- acc->info = data;
+ acc->info = info;
+ if (info->class_init) {
+ info->class_init(acc);
+ }
}
void arm_cpu_register_parent(const ARMCPUInfo *info, const char *parent)
@@ -2268,7 +2272,7 @@ void arm_cpu_register_parent(const ARMCPUInfo *info,
const char *parent)
.instance_align = __alignof__(ARMCPU),
.instance_init = arm_cpu_instance_init,
.class_size = sizeof(ARMCPUClass),
- .class_init = info->class_init ?: cpu_register_class_init,
+ .class_init = arm_cpu_leaf_class_init,
.class_data = (void *)info,
};
--
2.34.1
- Re: [RFC PATCH 16/40] target/arm: Represent the entire MPIDR_EL1, (continued)
[RFC PATCH 18/40] target/arm: Create cpreg definition functions with GHashTable arg, Richard Henderson, 2023/01/03
[RFC PATCH 05/40] target/arm: Create arm_cpu_register_parent, Richard Henderson, 2023/01/03
[RFC PATCH 07/40] target/arm: Create TYPE_ARM_V7M_CPU, Richard Henderson, 2023/01/03
[RFC PATCH 02/40] qom: Introduce class_late_init, Richard Henderson, 2023/01/03
[RFC PATCH 08/40] target/arm: Pass ARMCPUClass to ARMCPUInfo.class_init,
Richard Henderson <=
[RFC PATCH 14/40] target/arm: Rename arm_cpu_mp_affinity, Richard Henderson, 2023/01/03
[RFC PATCH 10/40] target/arm: Copy dtb_compatible from ARMCPUClass, Richard Henderson, 2023/01/03
[RFC PATCH 13/40] hw/arm/bcm2836: Set mp-affinity property in realize, Richard Henderson, 2023/01/03
[RFC PATCH 15/40] target/arm: Create arm_cpu_mp_affinity, Richard Henderson, 2023/01/03
[RFC PATCH 26/40] target/arm: Rename 'cpu' to 'acc' in class init functions, Richard Henderson, 2023/01/03