summary refs log tree commit diff stats
path: root/hw/arm/realview.c
diff options
context:
space:
mode:
authorAndreas Färber <afaerber@suse.de>2015-09-19 10:49:44 +0200
committerAndreas Färber <afaerber@suse.de>2015-09-19 16:40:27 +0200
commit8a661aea0e7f6e776c6ebc9abe339a85b34fea1d (patch)
treebdb4040a63f38d86d8c84157b60d71a84927ebb7 /hw/arm/realview.c
parente264d29de28c5b0be3d063307ce9fb613b427cc3 (diff)
downloadfocaccia-qemu-8a661aea0e7f6e776c6ebc9abe339a85b34fea1d.tar.gz
focaccia-qemu-8a661aea0e7f6e776c6ebc9abe339a85b34fea1d.zip
Revert use of DEFINE_MACHINE() for registrations of multiple machines
The script used for converting from QEMUMachine had used one
DEFINE_MACHINE() per machine registered. In cases where multiple
machines are registered from one source file, avoid the excessive
generation of module init functions by reverting this unrolling.

Signed-off-by: Andreas Färber <afaerber@suse.de>
Diffstat (limited to 'hw/arm/realview.c')
-rw-r--r--hw/arm/realview.c50
1 files changed, 42 insertions, 8 deletions
diff --git a/hw/arm/realview.c b/hw/arm/realview.c
index 6c838178f7..e14828db0d 100644
--- a/hw/arm/realview.c
+++ b/hw/arm/realview.c
@@ -399,39 +399,73 @@ static void realview_pbx_a9_init(MachineState *machine)
     realview_init(machine, BOARD_PBX_A9);
 }
 
-static void realview_eb_machine_init(MachineClass *mc)
+static void realview_eb_class_init(ObjectClass *oc, void *data)
 {
+    MachineClass *mc = MACHINE_CLASS(oc);
+
     mc->desc = "ARM RealView Emulation Baseboard (ARM926EJ-S)";
     mc->init = realview_eb_init;
     mc->block_default_type = IF_SCSI;
 }
 
-DEFINE_MACHINE("realview-eb", realview_eb_machine_init)
+static const TypeInfo realview_eb_type = {
+    .name = MACHINE_TYPE_NAME("realview-eb"),
+    .parent = TYPE_MACHINE,
+    .class_init = realview_eb_class_init,
+};
 
-static void realview_eb_mpcore_machine_init(MachineClass *mc)
+static void realview_eb_mpcore_class_init(ObjectClass *oc, void *data)
 {
+    MachineClass *mc = MACHINE_CLASS(oc);
+
     mc->desc = "ARM RealView Emulation Baseboard (ARM11MPCore)";
     mc->init = realview_eb_mpcore_init;
     mc->block_default_type = IF_SCSI;
     mc->max_cpus = 4;
 }
 
-DEFINE_MACHINE("realview-eb-mpcore", realview_eb_mpcore_machine_init)
+static const TypeInfo realview_eb_mpcore_type = {
+    .name = MACHINE_TYPE_NAME("realview-eb-mpcore"),
+    .parent = TYPE_MACHINE,
+    .class_init = realview_eb_mpcore_class_init,
+};
 
-static void realview_pb_a8_machine_init(MachineClass *mc)
+static void realview_pb_a8_class_init(ObjectClass *oc, void *data)
 {
+    MachineClass *mc = MACHINE_CLASS(oc);
+
     mc->desc = "ARM RealView Platform Baseboard for Cortex-A8";
     mc->init = realview_pb_a8_init;
 }
 
-DEFINE_MACHINE("realview-pb-a8", realview_pb_a8_machine_init)
+static const TypeInfo realview_pb_a8_type = {
+    .name = MACHINE_TYPE_NAME("realview-pb-a8"),
+    .parent = TYPE_MACHINE,
+    .class_init = realview_pb_a8_class_init,
+};
 
-static void realview_pbx_a9_machine_init(MachineClass *mc)
+static void realview_pbx_a9_class_init(ObjectClass *oc, void *data)
 {
+    MachineClass *mc = MACHINE_CLASS(oc);
+
     mc->desc = "ARM RealView Platform Baseboard Explore for Cortex-A9";
     mc->init = realview_pbx_a9_init;
     mc->block_default_type = IF_SCSI;
     mc->max_cpus = 4;
 }
 
-DEFINE_MACHINE("realview-pbx-a9", realview_pbx_a9_machine_init)
+static const TypeInfo realview_pbx_a9_type = {
+    .name = MACHINE_TYPE_NAME("realview-pbx-a9"),
+    .parent = TYPE_MACHINE,
+    .class_init = realview_pbx_a9_class_init,
+};
+
+static void realview_machine_init(void)
+{
+    type_register_static(&realview_eb_type);
+    type_register_static(&realview_eb_mpcore_type);
+    type_register_static(&realview_pb_a8_type);
+    type_register_static(&realview_pbx_a9_type);
+}
+
+machine_init(realview_machine_init)