提交 974e58d2 编写于 作者: I Igor Mammedov 提交者: Eduardo Habkost

sh4: cleanup cpu type name composition

introduce SUPERH_CPU_TYPE_NAME macro and use it to construct
cpu type names. While at it move cpu type_infos into one
array and register it directly with type_init_from_array()
instead of custom superh_cpu_register_types()
Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <1507211474-188400-22-git-send-email-imammedo@redhat.com>
Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
上级 b0224788
...@@ -24,9 +24,9 @@ ...@@ -24,9 +24,9 @@
#define TYPE_SUPERH_CPU "superh-cpu" #define TYPE_SUPERH_CPU "superh-cpu"
#define TYPE_SH7750R_CPU "sh7750r-" TYPE_SUPERH_CPU #define TYPE_SH7750R_CPU SUPERH_CPU_TYPE_NAME("sh7750r")
#define TYPE_SH7751R_CPU "sh7751r-" TYPE_SUPERH_CPU #define TYPE_SH7751R_CPU SUPERH_CPU_TYPE_NAME("sh7751r")
#define TYPE_SH7785_CPU "sh7785-" TYPE_SUPERH_CPU #define TYPE_SH7785_CPU SUPERH_CPU_TYPE_NAME("sh7785")
#define SUPERH_CPU_CLASS(klass) \ #define SUPERH_CPU_CLASS(klass) \
OBJECT_CLASS_CHECK(SuperHCPUClass, (klass), TYPE_SUPERH_CPU) OBJECT_CLASS_CHECK(SuperHCPUClass, (klass), TYPE_SUPERH_CPU)
......
...@@ -172,13 +172,6 @@ static void sh7750r_class_init(ObjectClass *oc, void *data) ...@@ -172,13 +172,6 @@ static void sh7750r_class_init(ObjectClass *oc, void *data)
scc->cvr = 0x00110000; scc->cvr = 0x00110000;
} }
static const TypeInfo sh7750r_type_info = {
.name = TYPE_SH7750R_CPU,
.parent = TYPE_SUPERH_CPU,
.class_init = sh7750r_class_init,
.instance_init = sh7750r_cpu_initfn,
};
static void sh7751r_cpu_initfn(Object *obj) static void sh7751r_cpu_initfn(Object *obj)
{ {
SuperHCPU *cpu = SUPERH_CPU(obj); SuperHCPU *cpu = SUPERH_CPU(obj);
...@@ -198,13 +191,6 @@ static void sh7751r_class_init(ObjectClass *oc, void *data) ...@@ -198,13 +191,6 @@ static void sh7751r_class_init(ObjectClass *oc, void *data)
scc->cvr = 0x00110000; /* Neutered caches, should be 0x20480000 */ scc->cvr = 0x00110000; /* Neutered caches, should be 0x20480000 */
} }
static const TypeInfo sh7751r_type_info = {
.name = TYPE_SH7751R_CPU,
.parent = TYPE_SUPERH_CPU,
.class_init = sh7751r_class_init,
.instance_init = sh7751r_cpu_initfn,
};
static void sh7785_cpu_initfn(Object *obj) static void sh7785_cpu_initfn(Object *obj)
{ {
SuperHCPU *cpu = SUPERH_CPU(obj); SuperHCPU *cpu = SUPERH_CPU(obj);
...@@ -224,13 +210,6 @@ static void sh7785_class_init(ObjectClass *oc, void *data) ...@@ -224,13 +210,6 @@ static void sh7785_class_init(ObjectClass *oc, void *data)
scc->cvr = 0x71440211; scc->cvr = 0x71440211;
} }
static const TypeInfo sh7785_type_info = {
.name = TYPE_SH7785_CPU,
.parent = TYPE_SUPERH_CPU,
.class_init = sh7785_class_init,
.instance_init = sh7785_cpu_initfn,
};
static void superh_cpu_realizefn(DeviceState *dev, Error **errp) static void superh_cpu_realizefn(DeviceState *dev, Error **errp)
{ {
CPUState *cs = CPU(dev); CPUState *cs = CPU(dev);
...@@ -300,22 +279,30 @@ static void superh_cpu_class_init(ObjectClass *oc, void *data) ...@@ -300,22 +279,30 @@ static void superh_cpu_class_init(ObjectClass *oc, void *data)
dc->vmsd = &vmstate_sh_cpu; dc->vmsd = &vmstate_sh_cpu;
} }
static const TypeInfo superh_cpu_type_info = { #define DEFINE_SUPERH_CPU_TYPE(type_name, cinit, initfn) \
.name = TYPE_SUPERH_CPU, { \
.parent = TYPE_CPU, .name = type_name, \
.instance_size = sizeof(SuperHCPU), .parent = TYPE_SUPERH_CPU, \
.instance_init = superh_cpu_initfn, .class_init = cinit, \
.abstract = true, .instance_init = initfn, \
.class_size = sizeof(SuperHCPUClass), }
.class_init = superh_cpu_class_init, static const TypeInfo superh_cpu_type_infos[] = {
}; {
.name = TYPE_SUPERH_CPU,
.parent = TYPE_CPU,
.instance_size = sizeof(SuperHCPU),
.instance_init = superh_cpu_initfn,
.abstract = true,
.class_size = sizeof(SuperHCPUClass),
.class_init = superh_cpu_class_init,
},
DEFINE_SUPERH_CPU_TYPE(TYPE_SH7750R_CPU, sh7750r_class_init,
sh7750r_cpu_initfn),
DEFINE_SUPERH_CPU_TYPE(TYPE_SH7751R_CPU, sh7751r_class_init,
sh7751r_cpu_initfn),
DEFINE_SUPERH_CPU_TYPE(TYPE_SH7785_CPU, sh7785_class_init,
sh7785_cpu_initfn),
static void superh_cpu_register_types(void) };
{
type_register_static(&superh_cpu_type_info);
type_register_static(&sh7750r_type_info);
type_register_static(&sh7751r_type_info);
type_register_static(&sh7785_type_info);
}
type_init(superh_cpu_register_types) DEFINE_TYPES(superh_cpu_type_infos)
...@@ -274,6 +274,9 @@ void cpu_load_tlb(CPUSH4State * env); ...@@ -274,6 +274,9 @@ void cpu_load_tlb(CPUSH4State * env);
#define cpu_init(cpu_model) cpu_generic_init(TYPE_SUPERH_CPU, cpu_model) #define cpu_init(cpu_model) cpu_generic_init(TYPE_SUPERH_CPU, cpu_model)
#define SUPERH_CPU_TYPE_SUFFIX "-" TYPE_SUPERH_CPU
#define SUPERH_CPU_TYPE_NAME(model) model SUPERH_CPU_TYPE_SUFFIX
#define cpu_signal_handler cpu_sh4_signal_handler #define cpu_signal_handler cpu_sh4_signal_handler
#define cpu_list sh4_cpu_list #define cpu_list sh4_cpu_list
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册