Skip to content

Commit

Permalink
Revert use of DEFINE_MACHINE() for registrations of multiple machines
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
afaerber committed Sep 19, 2015
1 parent e264d29 commit 8a661ae
Show file tree
Hide file tree
Showing 15 changed files with 484 additions and 88 deletions.
28 changes: 24 additions & 4 deletions hw/arm/exynos4_boards.c
Original file line number Diff line number Diff line change
Expand Up @@ -144,20 +144,40 @@ static void smdkc210_init(MachineState *machine)
arm_load_kernel(ARM_CPU(first_cpu), &exynos4_board_binfo);
}

static void exynos4_machine_nuri_machine_init(MachineClass *mc)
static void nuri_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);

mc->desc = "Samsung NURI board (Exynos4210)";
mc->init = nuri_init;
mc->max_cpus = EXYNOS4210_NCPUS;
}

DEFINE_MACHINE("nuri", exynos4_machine_nuri_machine_init)
static const TypeInfo nuri_type = {
.name = MACHINE_TYPE_NAME("nuri"),
.parent = TYPE_MACHINE,
.class_init = nuri_class_init,
};

static void exynos4_machine_smdkc210_machine_init(MachineClass *mc)
static void smdkc210_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);

mc->desc = "Samsung SMDKC210 board (Exynos4210)";
mc->init = smdkc210_init;
mc->max_cpus = EXYNOS4210_NCPUS;
}

DEFINE_MACHINE("smdkc210", exynos4_machine_smdkc210_machine_init)
static const TypeInfo smdkc210_type = {
.name = MACHINE_TYPE_NAME("smdkc210"),
.parent = TYPE_MACHINE,
.class_init = smdkc210_class_init,
};

static void exynos4_machines_init(void)
{
type_register_static(&nuri_type);
type_register_static(&smdkc210_type);
}

machine_init(exynos4_machines_init)
28 changes: 24 additions & 4 deletions hw/arm/gumstix.c
Original file line number Diff line number Diff line change
Expand Up @@ -121,18 +121,38 @@ static void verdex_init(MachineState *machine)
qdev_get_gpio_in(cpu->gpio, 99));
}

static void connex_machine_init(MachineClass *mc)
static void connex_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);

mc->desc = "Gumstix Connex (PXA255)";
mc->init = connex_init;
}

DEFINE_MACHINE("connex", connex_machine_init)
static const TypeInfo connex_type = {
.name = MACHINE_TYPE_NAME("connex"),
.parent = TYPE_MACHINE,
.class_init = connex_class_init,
};

static void verdex_machine_init(MachineClass *mc)
static void verdex_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);

mc->desc = "Gumstix Verdex (PXA270)";
mc->init = verdex_init;
}

DEFINE_MACHINE("verdex", verdex_machine_init)
static const TypeInfo verdex_type = {
.name = MACHINE_TYPE_NAME("verdex"),
.parent = TYPE_MACHINE,
.class_init = verdex_class_init,
};

static void gumstix_machine_init(void)
{
type_register_static(&connex_type);
type_register_static(&verdex_type);
}

machine_init(gumstix_machine_init)
28 changes: 24 additions & 4 deletions hw/arm/highbank.c
Original file line number Diff line number Diff line change
Expand Up @@ -391,22 +391,42 @@ static void midway_init(MachineState *machine)
calxeda_init(machine, CALXEDA_MIDWAY);
}

static void highbank_machine_init(MachineClass *mc)
static void highbank_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);

mc->desc = "Calxeda Highbank (ECX-1000)";
mc->init = highbank_init;
mc->block_default_type = IF_SCSI;
mc->max_cpus = 4;
}

DEFINE_MACHINE("highbank", highbank_machine_init)
static const TypeInfo highbank_type = {
.name = MACHINE_TYPE_NAME("highbank"),
.parent = TYPE_MACHINE,
.class_init = highbank_class_init,
};

static void midway_machine_init(MachineClass *mc)
static void midway_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);

mc->desc = "Calxeda Midway (ECX-2000)";
mc->init = midway_init;
mc->block_default_type = IF_SCSI;
mc->max_cpus = 4;
}

DEFINE_MACHINE("midway", midway_machine_init)
static const TypeInfo midway_type = {
.name = MACHINE_TYPE_NAME("midway"),
.parent = TYPE_MACHINE,
.class_init = midway_class_init,
};

static void calxeda_machines_init(void)
{
type_register_static(&highbank_type);
type_register_static(&midway_type);
}

machine_init(calxeda_machines_init)
28 changes: 24 additions & 4 deletions hw/arm/nseries.c
Original file line number Diff line number Diff line change
Expand Up @@ -1413,20 +1413,40 @@ static void n810_init(MachineState *machine)
n8x0_init(machine, &n810_binfo, 810);
}

static void n800_machine_init(MachineClass *mc)
static void n800_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);

mc->desc = "Nokia N800 tablet aka. RX-34 (OMAP2420)";
mc->init = n800_init;
mc->default_boot_order = "";
}

DEFINE_MACHINE("n800", n800_machine_init)
static const TypeInfo n800_type = {
.name = MACHINE_TYPE_NAME("n800"),
.parent = TYPE_MACHINE,
.class_init = n800_class_init,
};

static void n810_machine_init(MachineClass *mc)
static void n810_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);

mc->desc = "Nokia N810 tablet aka. RX-44 (OMAP2420)";
mc->init = n810_init;
mc->default_boot_order = "";
}

DEFINE_MACHINE("n810", n810_machine_init)
static const TypeInfo n810_type = {
.name = MACHINE_TYPE_NAME("n810"),
.parent = TYPE_MACHINE,
.class_init = n810_class_init,
};

static void nseries_machine_init(void)
{
type_register_static(&n800_type);
type_register_static(&n810_type);
}

machine_init(nseries_machine_init)
28 changes: 24 additions & 4 deletions hw/arm/omap_sx1.c
Original file line number Diff line number Diff line change
Expand Up @@ -217,18 +217,38 @@ static void sx1_init_v2(MachineState *machine)
sx1_init(machine, 2);
}

static void sx1_machine_v2_machine_init(MachineClass *mc)
static void sx1_machine_v2_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);

mc->desc = "Siemens SX1 (OMAP310) V2";
mc->init = sx1_init_v2;
}

DEFINE_MACHINE("sx1", sx1_machine_v2_machine_init)
static const TypeInfo sx1_machine_v2_type = {
.name = MACHINE_TYPE_NAME("sx1"),
.parent = TYPE_MACHINE,
.class_init = sx1_machine_v2_class_init,
};

static void sx1_machine_v1_machine_init(MachineClass *mc)
static void sx1_machine_v1_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);

mc->desc = "Siemens SX1 (OMAP310) V1";
mc->init = sx1_init_v1;
}

DEFINE_MACHINE("sx1-v1", sx1_machine_v1_machine_init)
static const TypeInfo sx1_machine_v1_type = {
.name = MACHINE_TYPE_NAME("sx1-v1"),
.parent = TYPE_MACHINE,
.class_init = sx1_machine_v1_class_init,
};

static void sx1_machine_init(void)
{
type_register_static(&sx1_machine_v1_type);
type_register_static(&sx1_machine_v2_type);
}

machine_init(sx1_machine_init)
50 changes: 42 additions & 8 deletions hw/arm/realview.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
50 changes: 42 additions & 8 deletions hw/arm/spitz.c
Original file line number Diff line number Diff line change
Expand Up @@ -972,37 +972,71 @@ static void terrier_init(MachineState *machine)
spitz_common_init(machine, terrier, 0x33f);
}

static void akitapda_machine_init(MachineClass *mc)
static void akitapda_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);

mc->desc = "Akita PDA (PXA270)";
mc->init = akita_init;
}

DEFINE_MACHINE("akita", akitapda_machine_init)
static const TypeInfo akitapda_type = {
.name = MACHINE_TYPE_NAME("akita"),
.parent = TYPE_MACHINE,
.class_init = akitapda_class_init,
};

static void spitzpda_machine_init(MachineClass *mc)
static void spitzpda_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);

mc->desc = "Spitz PDA (PXA270)";
mc->init = spitz_init;
}

DEFINE_MACHINE("spitz", spitzpda_machine_init)
static const TypeInfo spitzpda_type = {
.name = MACHINE_TYPE_NAME("spitz"),
.parent = TYPE_MACHINE,
.class_init = spitzpda_class_init,
};

static void borzoipda_machine_init(MachineClass *mc)
static void borzoipda_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);

mc->desc = "Borzoi PDA (PXA270)";
mc->init = borzoi_init;
}

DEFINE_MACHINE("borzoi", borzoipda_machine_init)
static const TypeInfo borzoipda_type = {
.name = MACHINE_TYPE_NAME("borzoi"),
.parent = TYPE_MACHINE,
.class_init = borzoipda_class_init,
};

static void terrierpda_machine_init(MachineClass *mc)
static void terrierpda_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);

mc->desc = "Terrier PDA (PXA270)";
mc->init = terrier_init;
}

DEFINE_MACHINE("terrier", terrierpda_machine_init)
static const TypeInfo terrierpda_type = {
.name = MACHINE_TYPE_NAME("terrier"),
.parent = TYPE_MACHINE,
.class_init = terrierpda_class_init,
};

static void spitz_machine_init(void)
{
type_register_static(&akitapda_type);
type_register_static(&spitzpda_type);
type_register_static(&borzoipda_type);
type_register_static(&terrierpda_type);
}

machine_init(spitz_machine_init)

static bool is_version_0(void *opaque, int version_id)
{
Expand Down
Loading

0 comments on commit 8a661ae

Please sign in to comment.