Skip to content

Commit

Permalink
sh4: cleanup cpu type name composition
Browse files Browse the repository at this point in the history
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: Igor Mammedov <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
  • Loading branch information
Igor Mammedov authored and ehabkost committed Oct 27, 2017
1 parent b022478 commit 974e58d
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 41 deletions.
6 changes: 3 additions & 3 deletions target/sh4/cpu-qom.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@

#define TYPE_SUPERH_CPU "superh-cpu"

#define TYPE_SH7750R_CPU "sh7750r-" TYPE_SUPERH_CPU
#define TYPE_SH7751R_CPU "sh7751r-" TYPE_SUPERH_CPU
#define TYPE_SH7785_CPU "sh7785-" TYPE_SUPERH_CPU
#define TYPE_SH7750R_CPU SUPERH_CPU_TYPE_NAME("sh7750r")
#define TYPE_SH7751R_CPU SUPERH_CPU_TYPE_NAME("sh7751r")
#define TYPE_SH7785_CPU SUPERH_CPU_TYPE_NAME("sh7785")

#define SUPERH_CPU_CLASS(klass) \
OBJECT_CLASS_CHECK(SuperHCPUClass, (klass), TYPE_SUPERH_CPU)
Expand Down
63 changes: 25 additions & 38 deletions target/sh4/cpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -172,13 +172,6 @@ static void sh7750r_class_init(ObjectClass *oc, void *data)
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)
{
SuperHCPU *cpu = SUPERH_CPU(obj);
Expand All @@ -198,13 +191,6 @@ static void sh7751r_class_init(ObjectClass *oc, void *data)
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)
{
SuperHCPU *cpu = SUPERH_CPU(obj);
Expand All @@ -224,13 +210,6 @@ static void sh7785_class_init(ObjectClass *oc, void *data)
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)
{
CPUState *cs = CPU(dev);
Expand Down Expand Up @@ -300,22 +279,30 @@ static void superh_cpu_class_init(ObjectClass *oc, void *data)
dc->vmsd = &vmstate_sh_cpu;
}

static const TypeInfo superh_cpu_type_info = {
.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 DEFINE_SUPERH_CPU_TYPE(type_name, cinit, initfn) \
{ \
.name = type_name, \
.parent = TYPE_SUPERH_CPU, \
.class_init = cinit, \
.instance_init = initfn, \
}
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)
3 changes: 3 additions & 0 deletions target/sh4/cpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,9 @@ void cpu_load_tlb(CPUSH4State * env);

#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_list sh4_cpu_list

Expand Down

0 comments on commit 974e58d

Please sign in to comment.