mirror of
https://github.com/qemu/qemu.git
synced 2024-12-02 16:23:35 +08:00
QOM infrastructure fixes and device conversions
* QOM API error handling fixes * Performance improvements for device GPIO property creation * Remaining conversion of QEMUMachine to QOM -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABAgAGBQJV/XPsAAoJEPou0S0+fgE/fo4P/0nH0RDYGW7tYPFH9m2pkada gXvEg/ADdwmlHZyE5jUO1AP6Im1KTdNqyGfObUQgeSDb8W0Q8FmsNiOKiZeiWaYx gLn6/YnbhTaTqKgyGEFcqNZuty8xFKBv9OmT80ZrKYqVq7cdnlKJKcvW+nR2sbhh 3zastSIo6kpBgstiHnJf05z6Z1lahe8i9O7+uP2luDmtT5ORID/YeJk8P2yH/XvV YaYjKCM3NO307cZBE3Cv60BMaaoD1oeXzHr0+mfOwAJdtPHV5JErdeWd8kb6551/ OO7Bm2gs3aZdt2sEvjPpj003O6QhVsZuFhUq/JgUw/OeaEmhibzMYKC+84xISxCu CUof26AM8fPC8q1st2ykcKMm7eE7GoSPfFP4y5Bu8iSeoQIfQ3yFkL9smEibIlk6 0mfD2Ixy4QAsD1NQXU/G6r6qrreeEKK1IIR0Qj028AxKOjbUHpzSuwTh4Pjo/Zm6 se6lnzrXpkn7P7MKGfwFSXit40XMbLiT5+fSYTzkl2q/JCOFo7BK5uVG7vi4EWcT 0eUt0ILhD62f4RG05oCa2plG36+1CYhY+ISlUlozLXialrTN16/Ng1n1wScaeRkL bB9Iyi/cok7+jcq4tHN6l3AqaL/IRpCsfBbT5NcnJ+abM6CWtEviCwXJQiQaEPvL MrzeOarW5RuKaURiYa86 =z33c -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/afaerber/tags/qom-devices-for-peter' into staging QOM infrastructure fixes and device conversions * QOM API error handling fixes * Performance improvements for device GPIO property creation * Remaining conversion of QEMUMachine to QOM # gpg: Signature made Sat 19 Sep 2015 15:40:44 BST using RSA key ID 3E7E013F # gpg: Good signature from "Andreas Färber <afaerber@suse.de>" # gpg: aka "Andreas Färber <afaerber@suse.com>" * remotes/afaerber/tags/qom-devices-for-peter: (21 commits) machine: Eliminate QEMUMachine and qemu_register_machine() Revert use of DEFINE_MACHINE() for registrations of multiple machines Use DEFINE_MACHINE() to register all machines mac_world: Break long line machine: DEFINE_MACHINE() macro exynos4: Declare each QEMUMachine as a separate variable exynos4: Use MachineClass instead of exynos4_machines array exynos4: Use EXYNOS4210_NCPUS instead of max_cpus on error message machine: Set MachineClass::name automatically machine: Ensure all TYPE_MACHINE subclasses have the right suffix mac99: Use MACHINE_TYPE_NAME to encode class name s390: Rename s390-ccw-virtio-2.4 class name to use MACHINE_TYPE_NAME s390-virtio: Rename machine class name to use MACHINE_TYPE_NAME pseries: Rename machine class names to use MACHINE_TYPE_NAME arm: Rename virt machine class to use MACHINE_TYPE_NAME vexpress: Rename machine classes to use MACHINE_TYPE_NAME vexpress: Don't set name on abstract class machine: MACHINE_TYPE_NAME macro qdev: Do not use slow [*] expansion for GPIO creation qom: Fix invalid error check in property_get_str() ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
18640989a9
@ -168,17 +168,12 @@ static void clipper_init(MachineState *machine)
|
||||
}
|
||||
}
|
||||
|
||||
static QEMUMachine clipper_machine = {
|
||||
.name = "clipper",
|
||||
.desc = "Alpha DP264/CLIPPER",
|
||||
.init = clipper_init,
|
||||
.max_cpus = 4,
|
||||
.is_default = 1,
|
||||
};
|
||||
|
||||
static void clipper_machine_init(void)
|
||||
static void clipper_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&clipper_machine);
|
||||
mc->desc = "Alpha DP264/CLIPPER";
|
||||
mc->init = clipper_init;
|
||||
mc->max_cpus = 4;
|
||||
mc->is_default = 1;
|
||||
}
|
||||
|
||||
machine_init(clipper_machine_init);
|
||||
DEFINE_MACHINE("clipper", clipper_machine_init)
|
||||
|
@ -58,15 +58,10 @@ static void collie_init(MachineState *machine)
|
||||
arm_load_kernel(s->cpu, &collie_binfo);
|
||||
}
|
||||
|
||||
static QEMUMachine collie_machine = {
|
||||
.name = "collie",
|
||||
.desc = "Collie PDA (SA-1110)",
|
||||
.init = collie_init,
|
||||
};
|
||||
|
||||
static void collie_machine_init(void)
|
||||
static void collie_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&collie_machine);
|
||||
mc->desc = "Collie PDA (SA-1110)";
|
||||
mc->init = collie_init;
|
||||
}
|
||||
|
||||
machine_init(collie_machine_init)
|
||||
DEFINE_MACHINE("collie", collie_machine_init)
|
||||
|
@ -74,16 +74,10 @@ static void cubieboard_init(MachineState *machine)
|
||||
arm_load_kernel(&s->a10->cpu, &cubieboard_binfo);
|
||||
}
|
||||
|
||||
static QEMUMachine cubieboard_machine = {
|
||||
.name = "cubieboard",
|
||||
.desc = "cubietech cubieboard",
|
||||
.init = cubieboard_init,
|
||||
};
|
||||
|
||||
|
||||
static void cubieboard_machine_init(void)
|
||||
static void cubieboard_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&cubieboard_machine);
|
||||
mc->desc = "cubietech cubieboard";
|
||||
mc->init = cubieboard_init;
|
||||
}
|
||||
|
||||
machine_init(cubieboard_machine_init)
|
||||
DEFINE_MACHINE("cubieboard", cubieboard_machine_init)
|
||||
|
@ -148,15 +148,10 @@ static void canon_a1100_init(MachineState *machine)
|
||||
digic4_board_init(&digic4_board_canon_a1100);
|
||||
}
|
||||
|
||||
static QEMUMachine canon_a1100 = {
|
||||
.name = "canon-a1100",
|
||||
.desc = "Canon PowerShot A1100 IS",
|
||||
.init = &canon_a1100_init,
|
||||
};
|
||||
|
||||
static void digic_register_machines(void)
|
||||
static void canon_a1100_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&canon_a1100);
|
||||
mc->desc = "Canon PowerShot A1100 IS";
|
||||
mc->init = &canon_a1100_init;
|
||||
}
|
||||
|
||||
machine_init(digic_register_machines)
|
||||
DEFINE_MACHINE("canon-a1100", canon_a1100_machine_init)
|
||||
|
@ -74,8 +74,6 @@ static struct arm_boot_info exynos4_board_binfo = {
|
||||
.write_secondary_boot = exynos4210_write_secondary,
|
||||
};
|
||||
|
||||
static QEMUMachine exynos4_machines[EXYNOS4_NUM_OF_BOARDS];
|
||||
|
||||
static void lan9215_init(uint32_t base, qemu_irq irq)
|
||||
{
|
||||
DeviceState *dev;
|
||||
@ -97,11 +95,12 @@ static void lan9215_init(uint32_t base, qemu_irq irq)
|
||||
static Exynos4210State *exynos4_boards_init_common(MachineState *machine,
|
||||
Exynos4BoardType board_type)
|
||||
{
|
||||
MachineClass *mc = MACHINE_GET_CLASS(machine);
|
||||
|
||||
if (smp_cpus != EXYNOS4210_NCPUS && !qtest_enabled()) {
|
||||
fprintf(stderr, "%s board supports only %d CPU cores. Ignoring smp_cpus"
|
||||
" value.\n",
|
||||
exynos4_machines[board_type].name,
|
||||
exynos4_machines[board_type].max_cpus);
|
||||
mc->name, EXYNOS4210_NCPUS);
|
||||
}
|
||||
|
||||
exynos4_board_binfo.ram_size = exynos4_board_ram_size[board_type];
|
||||
@ -145,25 +144,40 @@ static void smdkc210_init(MachineState *machine)
|
||||
arm_load_kernel(ARM_CPU(first_cpu), &exynos4_board_binfo);
|
||||
}
|
||||
|
||||
static QEMUMachine exynos4_machines[EXYNOS4_NUM_OF_BOARDS] = {
|
||||
[EXYNOS4_BOARD_NURI] = {
|
||||
.name = "nuri",
|
||||
.desc = "Samsung NURI board (Exynos4210)",
|
||||
.init = nuri_init,
|
||||
.max_cpus = EXYNOS4210_NCPUS,
|
||||
},
|
||||
[EXYNOS4_BOARD_SMDKC210] = {
|
||||
.name = "smdkc210",
|
||||
.desc = "Samsung SMDKC210 board (Exynos4210)",
|
||||
.init = smdkc210_init,
|
||||
.max_cpus = EXYNOS4210_NCPUS,
|
||||
},
|
||||
};
|
||||
|
||||
static void exynos4_machine_init(void)
|
||||
static void nuri_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
qemu_register_machine(&exynos4_machines[EXYNOS4_BOARD_NURI]);
|
||||
qemu_register_machine(&exynos4_machines[EXYNOS4_BOARD_SMDKC210]);
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Samsung NURI board (Exynos4210)";
|
||||
mc->init = nuri_init;
|
||||
mc->max_cpus = EXYNOS4210_NCPUS;
|
||||
}
|
||||
|
||||
machine_init(exynos4_machine_init);
|
||||
static const TypeInfo nuri_type = {
|
||||
.name = MACHINE_TYPE_NAME("nuri"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = nuri_class_init,
|
||||
};
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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)
|
||||
|
@ -121,22 +121,38 @@ static void verdex_init(MachineState *machine)
|
||||
qdev_get_gpio_in(cpu->gpio, 99));
|
||||
}
|
||||
|
||||
static QEMUMachine connex_machine = {
|
||||
.name = "connex",
|
||||
.desc = "Gumstix Connex (PXA255)",
|
||||
.init = connex_init,
|
||||
static void connex_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Gumstix Connex (PXA255)";
|
||||
mc->init = connex_init;
|
||||
}
|
||||
|
||||
static const TypeInfo connex_type = {
|
||||
.name = MACHINE_TYPE_NAME("connex"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = connex_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine verdex_machine = {
|
||||
.name = "verdex",
|
||||
.desc = "Gumstix Verdex (PXA270)",
|
||||
.init = verdex_init,
|
||||
static void verdex_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Gumstix Verdex (PXA270)";
|
||||
mc->init = verdex_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)
|
||||
{
|
||||
qemu_register_machine(&connex_machine);
|
||||
qemu_register_machine(&verdex_machine);
|
||||
type_register_static(&connex_type);
|
||||
type_register_static(&verdex_type);
|
||||
}
|
||||
|
||||
machine_init(gumstix_machine_init);
|
||||
machine_init(gumstix_machine_init)
|
||||
|
@ -391,26 +391,42 @@ static void midway_init(MachineState *machine)
|
||||
calxeda_init(machine, CALXEDA_MIDWAY);
|
||||
}
|
||||
|
||||
static QEMUMachine highbank_machine = {
|
||||
.name = "highbank",
|
||||
.desc = "Calxeda Highbank (ECX-1000)",
|
||||
.init = highbank_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
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;
|
||||
}
|
||||
|
||||
static const TypeInfo highbank_type = {
|
||||
.name = MACHINE_TYPE_NAME("highbank"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = highbank_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine midway_machine = {
|
||||
.name = "midway",
|
||||
.desc = "Calxeda Midway (ECX-2000)",
|
||||
.init = midway_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
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;
|
||||
}
|
||||
|
||||
static const TypeInfo midway_type = {
|
||||
.name = MACHINE_TYPE_NAME("midway"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = midway_class_init,
|
||||
};
|
||||
|
||||
static void calxeda_machines_init(void)
|
||||
{
|
||||
qemu_register_machine(&highbank_machine);
|
||||
qemu_register_machine(&midway_machine);
|
||||
type_register_static(&highbank_type);
|
||||
type_register_static(&midway_type);
|
||||
}
|
||||
|
||||
machine_init(calxeda_machines_init);
|
||||
machine_init(calxeda_machines_init)
|
||||
|
@ -145,15 +145,10 @@ static void imx25_pdk_init(MachineState *machine)
|
||||
}
|
||||
}
|
||||
|
||||
static QEMUMachine imx25_pdk_machine = {
|
||||
.name = "imx25_pdk",
|
||||
.desc = "ARM i.MX25 PDK board (ARM926)",
|
||||
.init = imx25_pdk_init,
|
||||
};
|
||||
|
||||
static void imx25_pdk_machine_init(void)
|
||||
static void imx25_pdk_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&imx25_pdk_machine);
|
||||
mc->desc = "ARM i.MX25 PDK board (ARM926)";
|
||||
mc->init = imx25_pdk_init;
|
||||
}
|
||||
|
||||
machine_init(imx25_pdk_machine_init)
|
||||
DEFINE_MACHINE("imx25_pdk", imx25_pdk_machine_init)
|
||||
|
@ -619,18 +619,13 @@ static void integratorcp_init(MachineState *machine)
|
||||
arm_load_kernel(cpu, &integrator_binfo);
|
||||
}
|
||||
|
||||
static QEMUMachine integratorcp_machine = {
|
||||
.name = "integratorcp",
|
||||
.desc = "ARM Integrator/CP (ARM926EJ-S)",
|
||||
.init = integratorcp_init,
|
||||
};
|
||||
|
||||
static void integratorcp_machine_init(void)
|
||||
static void integratorcp_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&integratorcp_machine);
|
||||
mc->desc = "ARM Integrator/CP (ARM926EJ-S)";
|
||||
mc->init = integratorcp_init;
|
||||
}
|
||||
|
||||
machine_init(integratorcp_machine_init);
|
||||
DEFINE_MACHINE("integratorcp", integratorcp_machine_init)
|
||||
|
||||
static Property core_properties[] = {
|
||||
DEFINE_PROP_UINT32("memsz", IntegratorCMState, memsz, 0),
|
||||
|
13
hw/arm/kzm.c
13
hw/arm/kzm.c
@ -139,15 +139,10 @@ static void kzm_init(MachineState *machine)
|
||||
}
|
||||
}
|
||||
|
||||
static QEMUMachine kzm_machine = {
|
||||
.name = "kzm",
|
||||
.desc = "ARM KZM Emulation Baseboard (ARM1136)",
|
||||
.init = kzm_init,
|
||||
};
|
||||
|
||||
static void kzm_machine_init(void)
|
||||
static void kzm_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&kzm_machine);
|
||||
mc->desc = "ARM KZM Emulation Baseboard (ARM1136)";
|
||||
mc->init = kzm_init;
|
||||
}
|
||||
|
||||
machine_init(kzm_machine_init)
|
||||
DEFINE_MACHINE("kzm", kzm_machine_init)
|
||||
|
@ -188,15 +188,10 @@ static void mainstone_init(MachineState *machine)
|
||||
mainstone_common_init(get_system_memory(), machine, mainstone, 0x196);
|
||||
}
|
||||
|
||||
static QEMUMachine mainstone2_machine = {
|
||||
.name = "mainstone",
|
||||
.desc = "Mainstone II (PXA27x)",
|
||||
.init = mainstone_init,
|
||||
};
|
||||
|
||||
static void mainstone_machine_init(void)
|
||||
static void mainstone2_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&mainstone2_machine);
|
||||
mc->desc = "Mainstone II (PXA27x)";
|
||||
mc->init = mainstone_init;
|
||||
}
|
||||
|
||||
machine_init(mainstone_machine_init);
|
||||
DEFINE_MACHINE("mainstone", mainstone2_machine_init)
|
||||
|
@ -1709,18 +1709,13 @@ static void musicpal_init(MachineState *machine)
|
||||
arm_load_kernel(cpu, &musicpal_binfo);
|
||||
}
|
||||
|
||||
static QEMUMachine musicpal_machine = {
|
||||
.name = "musicpal",
|
||||
.desc = "Marvell 88w8618 / MusicPal (ARM926EJ-S)",
|
||||
.init = musicpal_init,
|
||||
};
|
||||
|
||||
static void musicpal_machine_init(void)
|
||||
static void musicpal_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&musicpal_machine);
|
||||
mc->desc = "Marvell 88w8618 / MusicPal (ARM926EJ-S)";
|
||||
mc->init = musicpal_init;
|
||||
}
|
||||
|
||||
machine_init(musicpal_machine_init);
|
||||
DEFINE_MACHINE("musicpal", musicpal_machine_init)
|
||||
|
||||
static void mv88w8618_wlan_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
|
@ -43,15 +43,10 @@ static void netduino2_init(MachineState *machine)
|
||||
}
|
||||
}
|
||||
|
||||
static QEMUMachine netduino2_machine = {
|
||||
.name = "netduino2",
|
||||
.desc = "Netduino 2 Machine",
|
||||
.init = netduino2_init,
|
||||
};
|
||||
|
||||
static void netduino2_machine_init(void)
|
||||
static void netduino2_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&netduino2_machine);
|
||||
mc->desc = "Netduino 2 Machine";
|
||||
mc->init = netduino2_init;
|
||||
}
|
||||
|
||||
machine_init(netduino2_machine_init);
|
||||
DEFINE_MACHINE("netduino2", netduino2_machine_init)
|
||||
|
@ -1413,24 +1413,40 @@ static void n810_init(MachineState *machine)
|
||||
n8x0_init(machine, &n810_binfo, 810);
|
||||
}
|
||||
|
||||
static QEMUMachine n800_machine = {
|
||||
.name = "n800",
|
||||
.desc = "Nokia N800 tablet aka. RX-34 (OMAP2420)",
|
||||
.init = n800_init,
|
||||
.default_boot_order = "",
|
||||
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 = "";
|
||||
}
|
||||
|
||||
static const TypeInfo n800_type = {
|
||||
.name = MACHINE_TYPE_NAME("n800"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = n800_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine n810_machine = {
|
||||
.name = "n810",
|
||||
.desc = "Nokia N810 tablet aka. RX-44 (OMAP2420)",
|
||||
.init = n810_init,
|
||||
.default_boot_order = "",
|
||||
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 = "";
|
||||
}
|
||||
|
||||
static const TypeInfo n810_type = {
|
||||
.name = MACHINE_TYPE_NAME("n810"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = n810_class_init,
|
||||
};
|
||||
|
||||
static void nseries_machine_init(void)
|
||||
{
|
||||
qemu_register_machine(&n800_machine);
|
||||
qemu_register_machine(&n810_machine);
|
||||
type_register_static(&n800_type);
|
||||
type_register_static(&n810_type);
|
||||
}
|
||||
|
||||
machine_init(nseries_machine_init);
|
||||
machine_init(nseries_machine_init)
|
||||
|
@ -217,22 +217,38 @@ static void sx1_init_v2(MachineState *machine)
|
||||
sx1_init(machine, 2);
|
||||
}
|
||||
|
||||
static QEMUMachine sx1_machine_v2 = {
|
||||
.name = "sx1",
|
||||
.desc = "Siemens SX1 (OMAP310) V2",
|
||||
.init = sx1_init_v2,
|
||||
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;
|
||||
}
|
||||
|
||||
static const TypeInfo sx1_machine_v2_type = {
|
||||
.name = MACHINE_TYPE_NAME("sx1"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = sx1_machine_v2_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine sx1_machine_v1 = {
|
||||
.name = "sx1-v1",
|
||||
.desc = "Siemens SX1 (OMAP310) V1",
|
||||
.init = sx1_init_v1,
|
||||
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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
qemu_register_machine(&sx1_machine_v2);
|
||||
qemu_register_machine(&sx1_machine_v1);
|
||||
type_register_static(&sx1_machine_v1_type);
|
||||
type_register_static(&sx1_machine_v2_type);
|
||||
}
|
||||
|
||||
machine_init(sx1_machine_init);
|
||||
machine_init(sx1_machine_init)
|
||||
|
@ -269,15 +269,10 @@ static void palmte_init(MachineState *machine)
|
||||
arm_load_kernel(mpu->cpu, &palmte_binfo);
|
||||
}
|
||||
|
||||
static QEMUMachine palmte_machine = {
|
||||
.name = "cheetah",
|
||||
.desc = "Palm Tungsten|E aka. Cheetah PDA (OMAP310)",
|
||||
.init = palmte_init,
|
||||
};
|
||||
|
||||
static void palmte_machine_init(void)
|
||||
static void palmte_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&palmte_machine);
|
||||
mc->desc = "Palm Tungsten|E aka. Cheetah PDA (OMAP310)";
|
||||
mc->init = palmte_init;
|
||||
}
|
||||
|
||||
machine_init(palmte_machine_init);
|
||||
DEFINE_MACHINE("cheetah", palmte_machine_init)
|
||||
|
@ -399,41 +399,73 @@ static void realview_pbx_a9_init(MachineState *machine)
|
||||
realview_init(machine, BOARD_PBX_A9);
|
||||
}
|
||||
|
||||
static QEMUMachine realview_eb_machine = {
|
||||
.name = "realview-eb",
|
||||
.desc = "ARM RealView Emulation Baseboard (ARM926EJ-S)",
|
||||
.init = realview_eb_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
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;
|
||||
}
|
||||
|
||||
static const TypeInfo realview_eb_type = {
|
||||
.name = MACHINE_TYPE_NAME("realview-eb"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = realview_eb_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine realview_eb_mpcore_machine = {
|
||||
.name = "realview-eb-mpcore",
|
||||
.desc = "ARM RealView Emulation Baseboard (ARM11MPCore)",
|
||||
.init = realview_eb_mpcore_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
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;
|
||||
}
|
||||
|
||||
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 QEMUMachine realview_pb_a8_machine = {
|
||||
.name = "realview-pb-a8",
|
||||
.desc = "ARM RealView Platform Baseboard for Cortex-A8",
|
||||
.init = realview_pb_a8_init,
|
||||
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;
|
||||
}
|
||||
|
||||
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 QEMUMachine realview_pbx_a9_machine = {
|
||||
.name = "realview-pbx-a9",
|
||||
.desc = "ARM RealView Platform Baseboard Explore for Cortex-A9",
|
||||
.init = realview_pbx_a9_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
qemu_register_machine(&realview_eb_machine);
|
||||
qemu_register_machine(&realview_eb_mpcore_machine);
|
||||
qemu_register_machine(&realview_pb_a8_machine);
|
||||
qemu_register_machine(&realview_pbx_a9_machine);
|
||||
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);
|
||||
machine_init(realview_machine_init)
|
||||
|
@ -972,39 +972,71 @@ static void terrier_init(MachineState *machine)
|
||||
spitz_common_init(machine, terrier, 0x33f);
|
||||
}
|
||||
|
||||
static QEMUMachine akitapda_machine = {
|
||||
.name = "akita",
|
||||
.desc = "Akita PDA (PXA270)",
|
||||
.init = akita_init,
|
||||
static void akitapda_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Akita PDA (PXA270)";
|
||||
mc->init = akita_init;
|
||||
}
|
||||
|
||||
static const TypeInfo akitapda_type = {
|
||||
.name = MACHINE_TYPE_NAME("akita"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = akitapda_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine spitzpda_machine = {
|
||||
.name = "spitz",
|
||||
.desc = "Spitz PDA (PXA270)",
|
||||
.init = spitz_init,
|
||||
static void spitzpda_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Spitz PDA (PXA270)";
|
||||
mc->init = spitz_init;
|
||||
}
|
||||
|
||||
static const TypeInfo spitzpda_type = {
|
||||
.name = MACHINE_TYPE_NAME("spitz"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = spitzpda_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine borzoipda_machine = {
|
||||
.name = "borzoi",
|
||||
.desc = "Borzoi PDA (PXA270)",
|
||||
.init = borzoi_init,
|
||||
static void borzoipda_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Borzoi PDA (PXA270)";
|
||||
mc->init = borzoi_init;
|
||||
}
|
||||
|
||||
static const TypeInfo borzoipda_type = {
|
||||
.name = MACHINE_TYPE_NAME("borzoi"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = borzoipda_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine terrierpda_machine = {
|
||||
.name = "terrier",
|
||||
.desc = "Terrier PDA (PXA270)",
|
||||
.init = terrier_init,
|
||||
static void terrierpda_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Terrier PDA (PXA270)";
|
||||
mc->init = terrier_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)
|
||||
{
|
||||
qemu_register_machine(&akitapda_machine);
|
||||
qemu_register_machine(&spitzpda_machine);
|
||||
qemu_register_machine(&borzoipda_machine);
|
||||
qemu_register_machine(&terrierpda_machine);
|
||||
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);
|
||||
machine_init(spitz_machine_init)
|
||||
|
||||
static bool is_version_0(void *opaque, int version_id)
|
||||
{
|
||||
|
@ -1366,25 +1366,41 @@ static void lm3s6965evb_init(MachineState *machine)
|
||||
stellaris_init(kernel_filename, cpu_model, &stellaris_boards[1]);
|
||||
}
|
||||
|
||||
static QEMUMachine lm3s811evb_machine = {
|
||||
.name = "lm3s811evb",
|
||||
.desc = "Stellaris LM3S811EVB",
|
||||
.init = lm3s811evb_init,
|
||||
static void lm3s811evb_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Stellaris LM3S811EVB";
|
||||
mc->init = lm3s811evb_init;
|
||||
}
|
||||
|
||||
static const TypeInfo lm3s811evb_type = {
|
||||
.name = MACHINE_TYPE_NAME("lm3s811evb"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = lm3s811evb_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine lm3s6965evb_machine = {
|
||||
.name = "lm3s6965evb",
|
||||
.desc = "Stellaris LM3S6965EVB",
|
||||
.init = lm3s6965evb_init,
|
||||
static void lm3s6965evb_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Stellaris LM3S6965EVB";
|
||||
mc->init = lm3s6965evb_init;
|
||||
}
|
||||
|
||||
static const TypeInfo lm3s6965evb_type = {
|
||||
.name = MACHINE_TYPE_NAME("lm3s6965evb"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = lm3s6965evb_class_init,
|
||||
};
|
||||
|
||||
static void stellaris_machine_init(void)
|
||||
{
|
||||
qemu_register_machine(&lm3s811evb_machine);
|
||||
qemu_register_machine(&lm3s6965evb_machine);
|
||||
type_register_static(&lm3s811evb_type);
|
||||
type_register_static(&lm3s6965evb_type);
|
||||
}
|
||||
|
||||
machine_init(stellaris_machine_init);
|
||||
machine_init(stellaris_machine_init)
|
||||
|
||||
static void stellaris_i2c_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
|
@ -252,18 +252,13 @@ static void tosa_init(MachineState *machine)
|
||||
sl_bootparam_write(SL_PXA_PARAM_BASE);
|
||||
}
|
||||
|
||||
static QEMUMachine tosapda_machine = {
|
||||
.name = "tosa",
|
||||
.desc = "Tosa PDA (PXA255)",
|
||||
.init = tosa_init,
|
||||
};
|
||||
|
||||
static void tosapda_machine_init(void)
|
||||
static void tosapda_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&tosapda_machine);
|
||||
mc->desc = "Tosa PDA (PXA255)";
|
||||
mc->init = tosa_init;
|
||||
}
|
||||
|
||||
machine_init(tosapda_machine_init);
|
||||
DEFINE_MACHINE("tosa", tosapda_machine_init)
|
||||
|
||||
static void tosa_dac_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
|
@ -391,27 +391,43 @@ static void vab_init(MachineState *machine)
|
||||
versatile_init(machine, 0x25e);
|
||||
}
|
||||
|
||||
static QEMUMachine versatilepb_machine = {
|
||||
.name = "versatilepb",
|
||||
.desc = "ARM Versatile/PB (ARM926EJ-S)",
|
||||
.init = vpb_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
static void versatilepb_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "ARM Versatile/PB (ARM926EJ-S)";
|
||||
mc->init = vpb_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
}
|
||||
|
||||
static const TypeInfo versatilepb_type = {
|
||||
.name = MACHINE_TYPE_NAME("versatilepb"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = versatilepb_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine versatileab_machine = {
|
||||
.name = "versatileab",
|
||||
.desc = "ARM Versatile/AB (ARM926EJ-S)",
|
||||
.init = vab_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
static void versatileab_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "ARM Versatile/AB (ARM926EJ-S)";
|
||||
mc->init = vab_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
}
|
||||
|
||||
static const TypeInfo versatileab_type = {
|
||||
.name = MACHINE_TYPE_NAME("versatileab"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = versatileab_class_init,
|
||||
};
|
||||
|
||||
static void versatile_machine_init(void)
|
||||
{
|
||||
qemu_register_machine(&versatilepb_machine);
|
||||
qemu_register_machine(&versatileab_machine);
|
||||
type_register_static(&versatilepb_type);
|
||||
type_register_static(&versatileab_type);
|
||||
}
|
||||
|
||||
machine_init(versatile_machine_init);
|
||||
machine_init(versatile_machine_init)
|
||||
|
||||
static void vpb_sic_class_init(ObjectClass *klass, void *data)
|
||||
{
|
||||
|
@ -168,8 +168,8 @@ typedef struct {
|
||||
} VexpressMachineState;
|
||||
|
||||
#define TYPE_VEXPRESS_MACHINE "vexpress"
|
||||
#define TYPE_VEXPRESS_A9_MACHINE "vexpress-a9"
|
||||
#define TYPE_VEXPRESS_A15_MACHINE "vexpress-a15"
|
||||
#define TYPE_VEXPRESS_A9_MACHINE MACHINE_TYPE_NAME("vexpress-a9")
|
||||
#define TYPE_VEXPRESS_A15_MACHINE MACHINE_TYPE_NAME("vexpress-a15")
|
||||
#define VEXPRESS_MACHINE(obj) \
|
||||
OBJECT_CHECK(VexpressMachineState, (obj), TYPE_VEXPRESS_MACHINE)
|
||||
#define VEXPRESS_MACHINE_GET_CLASS(obj) \
|
||||
@ -747,7 +747,6 @@ static void vexpress_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->name = TYPE_VEXPRESS_MACHINE;
|
||||
mc->desc = "ARM Versatile Express";
|
||||
mc->init = vexpress_common_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
@ -759,7 +758,6 @@ static void vexpress_a9_class_init(ObjectClass *oc, void *data)
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
VexpressMachineClass *vmc = VEXPRESS_MACHINE_CLASS(oc);
|
||||
|
||||
mc->name = TYPE_VEXPRESS_A9_MACHINE;
|
||||
mc->desc = "ARM Versatile Express for Cortex-A9";
|
||||
|
||||
vmc->daughterboard = &a9_daughterboard;
|
||||
@ -770,7 +768,6 @@ static void vexpress_a15_class_init(ObjectClass *oc, void *data)
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
VexpressMachineClass *vmc = VEXPRESS_MACHINE_CLASS(oc);
|
||||
|
||||
mc->name = TYPE_VEXPRESS_A15_MACHINE;
|
||||
mc->desc = "ARM Versatile Express for Cortex-A15";
|
||||
|
||||
vmc->daughterboard = &a15_daughterboard;
|
||||
|
@ -83,7 +83,7 @@ typedef struct {
|
||||
bool highmem;
|
||||
} VirtMachineState;
|
||||
|
||||
#define TYPE_VIRT_MACHINE "virt"
|
||||
#define TYPE_VIRT_MACHINE MACHINE_TYPE_NAME("virt")
|
||||
#define VIRT_MACHINE(obj) \
|
||||
OBJECT_CHECK(VirtMachineState, (obj), TYPE_VIRT_MACHINE)
|
||||
#define VIRT_MACHINE_GET_CLASS(obj) \
|
||||
@ -1073,7 +1073,6 @@ static void virt_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->name = TYPE_VIRT_MACHINE;
|
||||
mc->desc = "ARM Virtual Machine",
|
||||
mc->init = machvirt_init;
|
||||
mc->max_cpus = 8;
|
||||
|
@ -255,18 +255,13 @@ static void zynq_init(MachineState *machine)
|
||||
arm_load_kernel(ARM_CPU(first_cpu), &zynq_binfo);
|
||||
}
|
||||
|
||||
static QEMUMachine zynq_machine = {
|
||||
.name = "xilinx-zynq-a9",
|
||||
.desc = "Xilinx Zynq Platform Baseboard for Cortex-A9",
|
||||
.init = zynq_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 1,
|
||||
.no_sdcard = 1,
|
||||
};
|
||||
|
||||
static void zynq_machine_init(void)
|
||||
static void zynq_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&zynq_machine);
|
||||
mc->desc = "Xilinx Zynq Platform Baseboard for Cortex-A9";
|
||||
mc->init = zynq_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
mc->max_cpus = 1;
|
||||
mc->no_sdcard = 1;
|
||||
}
|
||||
|
||||
machine_init(zynq_machine_init);
|
||||
DEFINE_MACHINE("xilinx-zynq-a9", zynq_machine_init)
|
||||
|
@ -68,15 +68,10 @@ static void xlnx_ep108_init(MachineState *machine)
|
||||
arm_load_kernel(s->soc.boot_cpu_ptr, &xlnx_ep108_binfo);
|
||||
}
|
||||
|
||||
static QEMUMachine xlnx_ep108_machine = {
|
||||
.name = "xlnx-ep108",
|
||||
.desc = "Xilinx ZynqMP EP108 board",
|
||||
.init = xlnx_ep108_init,
|
||||
};
|
||||
|
||||
static void xlnx_ep108_machine_init(void)
|
||||
static void xlnx_ep108_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&xlnx_ep108_machine);
|
||||
mc->desc = "Xilinx ZynqMP EP108 board";
|
||||
mc->init = xlnx_ep108_init;
|
||||
}
|
||||
|
||||
machine_init(xlnx_ep108_machine_init);
|
||||
DEFINE_MACHINE("xlnx-ep108", xlnx_ep108_machine_init)
|
||||
|
13
hw/arm/z2.c
13
hw/arm/z2.c
@ -372,15 +372,10 @@ static void z2_init(MachineState *machine)
|
||||
arm_load_kernel(mpu->cpu, &z2_binfo);
|
||||
}
|
||||
|
||||
static QEMUMachine z2_machine = {
|
||||
.name = "z2",
|
||||
.desc = "Zipit Z2 (PXA27x)",
|
||||
.init = z2_init,
|
||||
};
|
||||
|
||||
static void z2_machine_init(void)
|
||||
static void z2_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&z2_machine);
|
||||
mc->desc = "Zipit Z2 (PXA27x)";
|
||||
mc->init = z2_init;
|
||||
}
|
||||
|
||||
machine_init(z2_machine_init);
|
||||
DEFINE_MACHINE("z2", z2_machine_init)
|
||||
|
@ -316,6 +316,17 @@ static void machine_class_init(ObjectClass *oc, void *data)
|
||||
mc->default_ram_size = 128 * M_BYTE;
|
||||
}
|
||||
|
||||
static void machine_class_base_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
if (!object_class_is_abstract(oc)) {
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
const char *cname = object_class_get_name(oc);
|
||||
assert(g_str_has_suffix(cname, TYPE_MACHINE_SUFFIX));
|
||||
mc->name = g_strndup(cname,
|
||||
strlen(cname) - strlen(TYPE_MACHINE_SUFFIX));
|
||||
}
|
||||
}
|
||||
|
||||
static void machine_initfn(Object *obj)
|
||||
{
|
||||
MachineState *ms = MACHINE(obj);
|
||||
@ -492,6 +503,7 @@ static const TypeInfo machine_info = {
|
||||
.abstract = true,
|
||||
.class_size = sizeof(MachineClass),
|
||||
.class_init = machine_class_init,
|
||||
.class_base_init = machine_class_base_init,
|
||||
.instance_size = sizeof(MachineState),
|
||||
.instance_init = machine_initfn,
|
||||
.instance_finalize = machine_finalize,
|
||||
|
@ -19,17 +19,11 @@ static void machine_none_init(MachineState *machine)
|
||||
{
|
||||
}
|
||||
|
||||
static QEMUMachine machine_none = {
|
||||
.name = "none",
|
||||
.desc = "empty machine",
|
||||
.init = machine_none_init,
|
||||
.max_cpus = 0,
|
||||
};
|
||||
|
||||
static void register_machines(void)
|
||||
static void machine_none_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&machine_none);
|
||||
mc->desc = "empty machine";
|
||||
mc->init = machine_none_init;
|
||||
mc->max_cpus = 0;
|
||||
}
|
||||
|
||||
machine_init(register_machines);
|
||||
|
||||
DEFINE_MACHINE("none", machine_none_machine_init)
|
||||
|
@ -417,17 +417,21 @@ void qdev_init_gpio_in_named(DeviceState *dev, qemu_irq_handler handler,
|
||||
{
|
||||
int i;
|
||||
NamedGPIOList *gpio_list = qdev_get_named_gpio_list(dev, name);
|
||||
char *propname = g_strdup_printf("%s[*]", name ? name : "unnamed-gpio-in");
|
||||
|
||||
assert(gpio_list->num_out == 0 || !name);
|
||||
gpio_list->in = qemu_extend_irqs(gpio_list->in, gpio_list->num_in, handler,
|
||||
dev, n);
|
||||
|
||||
if (!name) {
|
||||
name = "unnamed-gpio-in";
|
||||
}
|
||||
for (i = gpio_list->num_in; i < gpio_list->num_in + n; i++) {
|
||||
gchar *propname = g_strdup_printf("%s[%u]", name, i);
|
||||
|
||||
object_property_add_child(OBJECT(dev), propname,
|
||||
OBJECT(gpio_list->in[i]), &error_abort);
|
||||
g_free(propname);
|
||||
}
|
||||
g_free(propname);
|
||||
|
||||
gpio_list->num_in += n;
|
||||
}
|
||||
@ -442,20 +446,25 @@ void qdev_init_gpio_out_named(DeviceState *dev, qemu_irq *pins,
|
||||
{
|
||||
int i;
|
||||
NamedGPIOList *gpio_list = qdev_get_named_gpio_list(dev, name);
|
||||
char *propname = g_strdup_printf("%s[*]", name ? name : "unnamed-gpio-out");
|
||||
|
||||
assert(gpio_list->num_in == 0 || !name);
|
||||
gpio_list->num_out += n;
|
||||
|
||||
if (!name) {
|
||||
name = "unnamed-gpio-out";
|
||||
}
|
||||
memset(pins, 0, sizeof(*pins) * n);
|
||||
for (i = 0; i < n; ++i) {
|
||||
memset(&pins[i], 0, sizeof(*pins));
|
||||
gchar *propname = g_strdup_printf("%s[%u]", name,
|
||||
gpio_list->num_out + i);
|
||||
|
||||
object_property_add_link(OBJECT(dev), propname, TYPE_IRQ,
|
||||
(Object **)&pins[i],
|
||||
object_property_allow_set_link,
|
||||
OBJ_PROP_LINK_UNREF_ON_RELEASE,
|
||||
&error_abort);
|
||||
g_free(propname);
|
||||
}
|
||||
g_free(propname);
|
||||
gpio_list->num_out += n;
|
||||
}
|
||||
|
||||
void qdev_init_gpio_out(DeviceState *dev, qemu_irq *pins, int n)
|
||||
|
@ -351,16 +351,11 @@ void axisdev88_init(MachineState *machine)
|
||||
}
|
||||
}
|
||||
|
||||
static QEMUMachine axisdev88_machine = {
|
||||
.name = "axis-dev88",
|
||||
.desc = "AXIS devboard 88",
|
||||
.init = axisdev88_init,
|
||||
.is_default = 1,
|
||||
};
|
||||
|
||||
static void axisdev88_machine_init(void)
|
||||
static void axisdev88_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&axisdev88_machine);
|
||||
mc->desc = "AXIS devboard 88";
|
||||
mc->init = axisdev88_init;
|
||||
mc->is_default = 1;
|
||||
}
|
||||
|
||||
machine_init(axisdev88_machine_init);
|
||||
DEFINE_MACHINE("axis-dev88", axisdev88_machine_init)
|
||||
|
@ -292,24 +292,40 @@ static void lm32_uclinux_init(MachineState *machine)
|
||||
qemu_register_reset(main_cpu_reset, reset_info);
|
||||
}
|
||||
|
||||
static QEMUMachine lm32_evr_machine = {
|
||||
.name = "lm32-evr",
|
||||
.desc = "LatticeMico32 EVR32 eval system",
|
||||
.init = lm32_evr_init,
|
||||
.is_default = 1,
|
||||
static void lm32_evr_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "LatticeMico32 EVR32 eval system";
|
||||
mc->init = lm32_evr_init;
|
||||
mc->is_default = 1;
|
||||
}
|
||||
|
||||
static const TypeInfo lm32_evr_type = {
|
||||
.name = MACHINE_TYPE_NAME("lm32-evr"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = lm32_evr_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine lm32_uclinux_machine = {
|
||||
.name = "lm32-uclinux",
|
||||
.desc = "lm32 platform for uClinux and u-boot by Theobroma Systems",
|
||||
.init = lm32_uclinux_init,
|
||||
.is_default = 0,
|
||||
static void lm32_uclinux_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "lm32 platform for uClinux and u-boot by Theobroma Systems";
|
||||
mc->init = lm32_uclinux_init;
|
||||
mc->is_default = 0;
|
||||
}
|
||||
|
||||
static const TypeInfo lm32_uclinux_type = {
|
||||
.name = MACHINE_TYPE_NAME("lm32-uclinux"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = lm32_uclinux_class_init,
|
||||
};
|
||||
|
||||
static void lm32_machine_init(void)
|
||||
{
|
||||
qemu_register_machine(&lm32_uclinux_machine);
|
||||
qemu_register_machine(&lm32_evr_machine);
|
||||
type_register_static(&lm32_evr_type);
|
||||
type_register_static(&lm32_uclinux_type);
|
||||
}
|
||||
|
||||
machine_init(lm32_machine_init);
|
||||
machine_init(lm32_machine_init)
|
||||
|
@ -209,16 +209,11 @@ milkymist_init(MachineState *machine)
|
||||
qemu_register_reset(main_cpu_reset, reset_info);
|
||||
}
|
||||
|
||||
static QEMUMachine milkymist_machine = {
|
||||
.name = "milkymist",
|
||||
.desc = "Milkymist One",
|
||||
.init = milkymist_init,
|
||||
.is_default = 0,
|
||||
};
|
||||
|
||||
static void milkymist_machine_init(void)
|
||||
static void milkymist_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&milkymist_machine);
|
||||
mc->desc = "Milkymist One";
|
||||
mc->init = milkymist_init;
|
||||
mc->is_default = 0;
|
||||
}
|
||||
|
||||
machine_init(milkymist_machine_init);
|
||||
DEFINE_MACHINE("milkymist", milkymist_machine_init)
|
||||
|
@ -89,15 +89,10 @@ static void an5206_init(MachineState *machine)
|
||||
env->pc = entry;
|
||||
}
|
||||
|
||||
static QEMUMachine an5206_machine = {
|
||||
.name = "an5206",
|
||||
.desc = "Arnewsh 5206",
|
||||
.init = an5206_init,
|
||||
};
|
||||
|
||||
static void an5206_machine_init(void)
|
||||
static void an5206_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&an5206_machine);
|
||||
mc->desc = "Arnewsh 5206";
|
||||
mc->init = an5206_init;
|
||||
}
|
||||
|
||||
machine_init(an5206_machine_init);
|
||||
DEFINE_MACHINE("an5206", an5206_machine_init)
|
||||
|
@ -72,15 +72,10 @@ static void dummy_m68k_init(MachineState *machine)
|
||||
env->pc = entry;
|
||||
}
|
||||
|
||||
static QEMUMachine dummy_m68k_machine = {
|
||||
.name = "dummy",
|
||||
.desc = "Dummy board",
|
||||
.init = dummy_m68k_init,
|
||||
};
|
||||
|
||||
static void dummy_m68k_machine_init(void)
|
||||
static void dummy_m68k_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&dummy_m68k_machine);
|
||||
mc->desc = "Dummy board";
|
||||
mc->init = dummy_m68k_init;
|
||||
}
|
||||
|
||||
machine_init(dummy_m68k_machine_init);
|
||||
DEFINE_MACHINE("dummy", dummy_m68k_machine_init)
|
||||
|
@ -294,16 +294,11 @@ static void mcf5208evb_init(MachineState *machine)
|
||||
env->pc = entry;
|
||||
}
|
||||
|
||||
static QEMUMachine mcf5208evb_machine = {
|
||||
.name = "mcf5208evb",
|
||||
.desc = "MCF5206EVB",
|
||||
.init = mcf5208evb_init,
|
||||
.is_default = 1,
|
||||
};
|
||||
|
||||
static void mcf5208evb_machine_init(void)
|
||||
static void mcf5208evb_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&mcf5208evb_machine);
|
||||
mc->desc = "MCF5206EVB";
|
||||
mc->init = mcf5208evb_init;
|
||||
mc->is_default = 1;
|
||||
}
|
||||
|
||||
machine_init(mcf5208evb_machine_init);
|
||||
DEFINE_MACHINE("mcf5208evb", mcf5208evb_machine_init)
|
||||
|
@ -206,16 +206,11 @@ petalogix_ml605_init(MachineState *machine)
|
||||
|
||||
}
|
||||
|
||||
static QEMUMachine petalogix_ml605_machine = {
|
||||
.name = "petalogix-ml605",
|
||||
.desc = "PetaLogix linux refdesign for xilinx ml605 little endian",
|
||||
.init = petalogix_ml605_init,
|
||||
.is_default = 0,
|
||||
};
|
||||
|
||||
static void petalogix_ml605_machine_init(void)
|
||||
static void petalogix_ml605_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&petalogix_ml605_machine);
|
||||
mc->desc = "PetaLogix linux refdesign for xilinx ml605 little endian";
|
||||
mc->init = petalogix_ml605_init;
|
||||
mc->is_default = 0;
|
||||
}
|
||||
|
||||
machine_init(petalogix_ml605_machine_init);
|
||||
DEFINE_MACHINE("petalogix-ml605", petalogix_ml605_machine_init)
|
||||
|
@ -124,16 +124,11 @@ petalogix_s3adsp1800_init(MachineState *machine)
|
||||
NULL);
|
||||
}
|
||||
|
||||
static QEMUMachine petalogix_s3adsp1800_machine = {
|
||||
.name = "petalogix-s3adsp1800",
|
||||
.desc = "PetaLogix linux refdesign for xilinx Spartan 3ADSP1800",
|
||||
.init = petalogix_s3adsp1800_init,
|
||||
.is_default = 1,
|
||||
};
|
||||
|
||||
static void petalogix_s3adsp1800_machine_init(void)
|
||||
static void petalogix_s3adsp1800_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&petalogix_s3adsp1800_machine);
|
||||
mc->desc = "PetaLogix linux refdesign for xilinx Spartan 3ADSP1800";
|
||||
mc->init = petalogix_s3adsp1800_init;
|
||||
mc->is_default = 1;
|
||||
}
|
||||
|
||||
machine_init(petalogix_s3adsp1800_machine_init);
|
||||
DEFINE_MACHINE("petalogix-s3adsp1800", petalogix_s3adsp1800_machine_init)
|
||||
|
@ -381,15 +381,10 @@ static void mips_fulong2e_init(MachineState *machine)
|
||||
network_init(pci_bus);
|
||||
}
|
||||
|
||||
static QEMUMachine mips_fulong2e_machine = {
|
||||
.name = "fulong2e",
|
||||
.desc = "Fulong 2e mini pc",
|
||||
.init = mips_fulong2e_init,
|
||||
};
|
||||
|
||||
static void mips_fulong2e_machine_init(void)
|
||||
static void mips_fulong2e_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&mips_fulong2e_machine);
|
||||
mc->desc = "Fulong 2e mini pc";
|
||||
mc->init = mips_fulong2e_init;
|
||||
}
|
||||
|
||||
machine_init(mips_fulong2e_machine_init);
|
||||
DEFINE_MACHINE("fulong2e", mips_fulong2e_machine_init)
|
||||
|
@ -349,24 +349,40 @@ void mips_pica61_init(MachineState *machine)
|
||||
mips_jazz_init(machine, JAZZ_PICA61);
|
||||
}
|
||||
|
||||
static QEMUMachine mips_magnum_machine = {
|
||||
.name = "magnum",
|
||||
.desc = "MIPS Magnum",
|
||||
.init = mips_magnum_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
static void mips_magnum_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "MIPS Magnum";
|
||||
mc->init = mips_magnum_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
}
|
||||
|
||||
static const TypeInfo mips_magnum_type = {
|
||||
.name = MACHINE_TYPE_NAME("magnum"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = mips_magnum_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine mips_pica61_machine = {
|
||||
.name = "pica61",
|
||||
.desc = "Acer Pica 61",
|
||||
.init = mips_pica61_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
static void mips_pica61_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Acer Pica 61";
|
||||
mc->init = mips_pica61_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
}
|
||||
|
||||
static const TypeInfo mips_pica61_type = {
|
||||
.name = MACHINE_TYPE_NAME("pica61"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = mips_pica61_class_init,
|
||||
};
|
||||
|
||||
static void mips_jazz_machine_init(void)
|
||||
{
|
||||
qemu_register_machine(&mips_magnum_machine);
|
||||
qemu_register_machine(&mips_pica61_machine);
|
||||
type_register_static(&mips_magnum_type);
|
||||
type_register_static(&mips_pica61_type);
|
||||
}
|
||||
|
||||
machine_init(mips_jazz_machine_init);
|
||||
machine_init(mips_jazz_machine_init)
|
||||
|
@ -1205,23 +1205,19 @@ static const TypeInfo mips_malta_device = {
|
||||
.class_init = mips_malta_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine mips_malta_machine = {
|
||||
.name = "malta",
|
||||
.desc = "MIPS Malta Core LV",
|
||||
.init = mips_malta_init,
|
||||
.max_cpus = 16,
|
||||
.is_default = 1,
|
||||
};
|
||||
static void mips_malta_machine_init(MachineClass *mc)
|
||||
{
|
||||
mc->desc = "MIPS Malta Core LV";
|
||||
mc->init = mips_malta_init;
|
||||
mc->max_cpus = 16;
|
||||
mc->is_default = 1;
|
||||
}
|
||||
|
||||
DEFINE_MACHINE("malta", mips_malta_machine_init)
|
||||
|
||||
static void mips_malta_register_types(void)
|
||||
{
|
||||
type_register_static(&mips_malta_device);
|
||||
}
|
||||
|
||||
static void mips_malta_machine_init(void)
|
||||
{
|
||||
qemu_register_machine(&mips_malta_machine);
|
||||
}
|
||||
|
||||
type_init(mips_malta_register_types)
|
||||
machine_init(mips_malta_machine_init);
|
||||
|
@ -231,15 +231,10 @@ mips_mipssim_init(MachineState *machine)
|
||||
mipsnet_init(0x4200, env->irq[2], &nd_table[0]);
|
||||
}
|
||||
|
||||
static QEMUMachine mips_mipssim_machine = {
|
||||
.name = "mipssim",
|
||||
.desc = "MIPS MIPSsim platform",
|
||||
.init = mips_mipssim_init,
|
||||
};
|
||||
|
||||
static void mips_mipssim_machine_init(void)
|
||||
static void mips_mipssim_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&mips_mipssim_machine);
|
||||
mc->desc = "MIPS MIPSsim platform";
|
||||
mc->init = mips_mipssim_init;
|
||||
}
|
||||
|
||||
machine_init(mips_mipssim_machine_init);
|
||||
DEFINE_MACHINE("mipssim", mips_mipssim_machine_init)
|
||||
|
@ -298,15 +298,10 @@ void mips_r4k_init(MachineState *machine)
|
||||
isa_create_simple(isa_bus, "i8042");
|
||||
}
|
||||
|
||||
static QEMUMachine mips_machine = {
|
||||
.name = "mips",
|
||||
.desc = "mips r4k platform",
|
||||
.init = mips_r4k_init,
|
||||
};
|
||||
|
||||
static void mips_machine_init(void)
|
||||
static void mips_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&mips_machine);
|
||||
mc->desc = "mips r4k platform";
|
||||
mc->init = mips_r4k_init;
|
||||
}
|
||||
|
||||
machine_init(mips_machine_init);
|
||||
DEFINE_MACHINE("mips", mips_machine_init)
|
||||
|
@ -146,16 +146,11 @@ static void moxiesim_init(MachineState *machine)
|
||||
}
|
||||
}
|
||||
|
||||
static QEMUMachine moxiesim_machine = {
|
||||
.name = "moxiesim",
|
||||
.desc = "Moxie simulator platform",
|
||||
.init = moxiesim_init,
|
||||
.is_default = 1,
|
||||
};
|
||||
|
||||
static void moxie_machine_init(void)
|
||||
static void moxiesim_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&moxiesim_machine);
|
||||
mc->desc = "Moxie simulator platform";
|
||||
mc->init = moxiesim_init;
|
||||
mc->is_default = 1;
|
||||
}
|
||||
|
||||
machine_init(moxie_machine_init)
|
||||
DEFINE_MACHINE("moxiesim", moxiesim_machine_init)
|
||||
|
@ -132,17 +132,12 @@ static void openrisc_sim_init(MachineState *machine)
|
||||
cpu_openrisc_load_kernel(ram_size, kernel_filename, cpu);
|
||||
}
|
||||
|
||||
static QEMUMachine openrisc_sim_machine = {
|
||||
.name = "or32-sim",
|
||||
.desc = "or32 simulation",
|
||||
.init = openrisc_sim_init,
|
||||
.max_cpus = 1,
|
||||
.is_default = 1,
|
||||
};
|
||||
|
||||
static void openrisc_sim_machine_init(void)
|
||||
static void openrisc_sim_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&openrisc_sim_machine);
|
||||
mc->desc = "or32 simulation";
|
||||
mc->init = openrisc_sim_init;
|
||||
mc->max_cpus = 1;
|
||||
mc->is_default = 1;
|
||||
}
|
||||
|
||||
machine_init(openrisc_sim_machine_init);
|
||||
DEFINE_MACHINE("or32-sim", openrisc_sim_machine_init)
|
||||
|
@ -57,17 +57,12 @@ static void e500plat_init(MachineState *machine)
|
||||
ppce500_init(machine, ¶ms);
|
||||
}
|
||||
|
||||
static QEMUMachine e500plat_machine = {
|
||||
.name = "ppce500",
|
||||
.desc = "generic paravirt e500 platform",
|
||||
.init = e500plat_init,
|
||||
.max_cpus = 32,
|
||||
.has_dynamic_sysbus = true,
|
||||
};
|
||||
|
||||
static void e500plat_machine_init(void)
|
||||
static void e500plat_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&e500plat_machine);
|
||||
mc->desc = "generic paravirt e500 platform";
|
||||
mc->init = e500plat_init;
|
||||
mc->max_cpus = 32;
|
||||
mc->has_dynamic_sysbus = true;
|
||||
}
|
||||
|
||||
machine_init(e500plat_machine_init);
|
||||
DEFINE_MACHINE("ppce500", e500plat_machine_init)
|
||||
|
@ -508,7 +508,6 @@ static void core99_machine_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->name = "mac99";
|
||||
mc->desc = "Mac99 based PowerMAC";
|
||||
mc->init = ppc_core99_init;
|
||||
mc->max_cpus = MAX_CPUS;
|
||||
@ -517,7 +516,7 @@ static void core99_machine_class_init(ObjectClass *oc, void *data)
|
||||
}
|
||||
|
||||
static const TypeInfo core99_machine_info = {
|
||||
.name = "mac99-machine",
|
||||
.name = MACHINE_TYPE_NAME("mac99"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = core99_machine_class_init,
|
||||
};
|
||||
|
@ -357,21 +357,17 @@ static int heathrow_kvm_type(const char *arg)
|
||||
return 2;
|
||||
}
|
||||
|
||||
static QEMUMachine heathrow_machine = {
|
||||
.name = "g3beige",
|
||||
.desc = "Heathrow based PowerMAC",
|
||||
.init = ppc_heathrow_init,
|
||||
.max_cpus = MAX_CPUS,
|
||||
#ifndef TARGET_PPC64
|
||||
.is_default = 1,
|
||||
#endif
|
||||
.default_boot_order = "cd", /* TOFIX "cad" when Mac floppy is implemented */
|
||||
.kvm_type = heathrow_kvm_type,
|
||||
};
|
||||
|
||||
static void heathrow_machine_init(void)
|
||||
static void heathrow_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&heathrow_machine);
|
||||
mc->desc = "Heathrow based PowerMAC";
|
||||
mc->init = ppc_heathrow_init;
|
||||
mc->max_cpus = MAX_CPUS;
|
||||
#ifndef TARGET_PPC64
|
||||
mc->is_default = 1;
|
||||
#endif
|
||||
/* TOFIX "cad" when Mac floppy is implemented */
|
||||
mc->default_boot_order = "cd";
|
||||
mc->kvm_type = heathrow_kvm_type;
|
||||
}
|
||||
|
||||
machine_init(heathrow_machine_init);
|
||||
DEFINE_MACHINE("g3beige", heathrow_machine_init)
|
||||
|
@ -50,16 +50,11 @@ static void mpc8544ds_init(MachineState *machine)
|
||||
}
|
||||
|
||||
|
||||
static QEMUMachine ppce500_machine = {
|
||||
.name = "mpc8544ds",
|
||||
.desc = "mpc8544ds",
|
||||
.init = mpc8544ds_init,
|
||||
.max_cpus = 15,
|
||||
};
|
||||
|
||||
static void ppce500_machine_init(void)
|
||||
static void ppce500_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&ppce500_machine);
|
||||
mc->desc = "mpc8544ds";
|
||||
mc->init = mpc8544ds_init;
|
||||
mc->max_cpus = 15;
|
||||
}
|
||||
|
||||
machine_init(ppce500_machine_init);
|
||||
DEFINE_MACHINE("mpc8544ds", ppce500_machine_init)
|
||||
|
@ -369,10 +369,18 @@ static void ref405ep_init(MachineState *machine)
|
||||
#endif
|
||||
}
|
||||
|
||||
static QEMUMachine ref405ep_machine = {
|
||||
.name = "ref405ep",
|
||||
.desc = "ref405ep",
|
||||
.init = ref405ep_init,
|
||||
static void ref405ep_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "ref405ep";
|
||||
mc->init = ref405ep_init;
|
||||
}
|
||||
|
||||
static const TypeInfo ref405ep_type = {
|
||||
.name = MACHINE_TYPE_NAME("ref405ep"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = ref405ep_class_init,
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
@ -665,16 +673,24 @@ static void taihu_405ep_init(MachineState *machine)
|
||||
#endif
|
||||
}
|
||||
|
||||
static QEMUMachine taihu_machine = {
|
||||
.name = "taihu",
|
||||
.desc = "taihu",
|
||||
.init = taihu_405ep_init,
|
||||
static void taihu_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "taihu";
|
||||
mc->init = taihu_405ep_init;
|
||||
}
|
||||
|
||||
static const TypeInfo taihu_type = {
|
||||
.name = MACHINE_TYPE_NAME("taihu"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = taihu_class_init,
|
||||
};
|
||||
|
||||
static void ppc405_machine_init(void)
|
||||
{
|
||||
qemu_register_machine(&ref405ep_machine);
|
||||
qemu_register_machine(&taihu_machine);
|
||||
type_register_static(&ref405ep_type);
|
||||
type_register_static(&taihu_type);
|
||||
}
|
||||
|
||||
machine_init(ppc405_machine_init);
|
||||
machine_init(ppc405_machine_init)
|
||||
|
@ -293,15 +293,10 @@ static void bamboo_init(MachineState *machine)
|
||||
kvmppc_init();
|
||||
}
|
||||
|
||||
static QEMUMachine bamboo_machine = {
|
||||
.name = "bamboo",
|
||||
.desc = "bamboo",
|
||||
.init = bamboo_init,
|
||||
};
|
||||
|
||||
static void bamboo_machine_init(void)
|
||||
static void bamboo_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&bamboo_machine);
|
||||
mc->desc = "bamboo";
|
||||
mc->init = bamboo_init;
|
||||
}
|
||||
|
||||
machine_init(bamboo_machine_init);
|
||||
DEFINE_MACHINE("bamboo", bamboo_machine_init)
|
||||
|
@ -687,17 +687,12 @@ static void ppc_prep_init(MachineState *machine)
|
||||
graphic_width, graphic_height, graphic_depth);
|
||||
}
|
||||
|
||||
static QEMUMachine prep_machine = {
|
||||
.name = "prep",
|
||||
.desc = "PowerPC PREP platform",
|
||||
.init = ppc_prep_init,
|
||||
.max_cpus = MAX_CPUS,
|
||||
.default_boot_order = "cad",
|
||||
};
|
||||
|
||||
static void prep_machine_init(void)
|
||||
static void prep_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&prep_machine);
|
||||
mc->desc = "PowerPC PREP platform";
|
||||
mc->init = ppc_prep_init;
|
||||
mc->max_cpus = MAX_CPUS;
|
||||
mc->default_boot_order = "cad";
|
||||
}
|
||||
|
||||
machine_init(prep_machine_init);
|
||||
DEFINE_MACHINE("prep", prep_machine_init)
|
||||
|
@ -1919,13 +1919,12 @@ static void spapr_machine_2_1_class_init(ObjectClass *oc, void *data)
|
||||
{ /* end of list */ }
|
||||
};
|
||||
|
||||
mc->name = "pseries-2.1";
|
||||
mc->desc = "pSeries Logical Partition (PAPR compliant) v2.1";
|
||||
mc->compat_props = compat_props;
|
||||
}
|
||||
|
||||
static const TypeInfo spapr_machine_2_1_info = {
|
||||
.name = TYPE_SPAPR_MACHINE "2.1",
|
||||
.name = MACHINE_TYPE_NAME("pseries-2.1"),
|
||||
.parent = TYPE_SPAPR_MACHINE,
|
||||
.class_init = spapr_machine_2_1_class_init,
|
||||
.instance_init = spapr_machine_2_1_instance_init,
|
||||
@ -1939,13 +1938,12 @@ static void spapr_machine_2_2_class_init(ObjectClass *oc, void *data)
|
||||
};
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->name = "pseries-2.2";
|
||||
mc->desc = "pSeries Logical Partition (PAPR compliant) v2.2";
|
||||
mc->compat_props = compat_props;
|
||||
}
|
||||
|
||||
static const TypeInfo spapr_machine_2_2_info = {
|
||||
.name = TYPE_SPAPR_MACHINE "2.2",
|
||||
.name = MACHINE_TYPE_NAME("pseries-2.2"),
|
||||
.parent = TYPE_SPAPR_MACHINE,
|
||||
.class_init = spapr_machine_2_2_class_init,
|
||||
.instance_init = spapr_machine_2_2_instance_init,
|
||||
@ -1959,13 +1957,12 @@ static void spapr_machine_2_3_class_init(ObjectClass *oc, void *data)
|
||||
};
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->name = "pseries-2.3";
|
||||
mc->desc = "pSeries Logical Partition (PAPR compliant) v2.3";
|
||||
mc->compat_props = compat_props;
|
||||
}
|
||||
|
||||
static const TypeInfo spapr_machine_2_3_info = {
|
||||
.name = TYPE_SPAPR_MACHINE "2.3",
|
||||
.name = MACHINE_TYPE_NAME("pseries-2.3"),
|
||||
.parent = TYPE_SPAPR_MACHINE,
|
||||
.class_init = spapr_machine_2_3_class_init,
|
||||
.instance_init = spapr_machine_2_3_instance_init,
|
||||
@ -1975,14 +1972,13 @@ static void spapr_machine_2_4_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->name = "pseries-2.4";
|
||||
mc->desc = "pSeries Logical Partition (PAPR compliant) v2.4";
|
||||
mc->alias = "pseries";
|
||||
mc->is_default = 1;
|
||||
}
|
||||
|
||||
static const TypeInfo spapr_machine_2_4_info = {
|
||||
.name = TYPE_SPAPR_MACHINE "2.4",
|
||||
.name = MACHINE_TYPE_NAME("pseries-2.4"),
|
||||
.parent = TYPE_SPAPR_MACHINE,
|
||||
.class_init = spapr_machine_2_4_class_init,
|
||||
};
|
||||
|
@ -297,15 +297,10 @@ static void virtex_init(MachineState *machine)
|
||||
env->load_info = &boot_info;
|
||||
}
|
||||
|
||||
static QEMUMachine virtex_machine = {
|
||||
.name = "virtex-ml507",
|
||||
.desc = "Xilinx Virtex ML507 reference design",
|
||||
.init = virtex_init,
|
||||
};
|
||||
|
||||
static void virtex_machine_init(void)
|
||||
static void virtex_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&virtex_machine);
|
||||
mc->desc = "Xilinx Virtex ML507 reference design";
|
||||
mc->init = virtex_init;
|
||||
}
|
||||
|
||||
machine_init(virtex_machine_init);
|
||||
DEFINE_MACHINE("virtex-ml507", virtex_machine_init)
|
||||
|
@ -252,13 +252,12 @@ static void ccw_machine_2_4_class_init(ObjectClass *oc, void *data)
|
||||
{ /* end of list */ }
|
||||
};
|
||||
|
||||
mc->name = "s390-ccw-virtio-2.4";
|
||||
mc->desc = "VirtIO-ccw based S390 machine v2.4";
|
||||
mc->compat_props = compat_props;
|
||||
}
|
||||
|
||||
static const TypeInfo ccw_machine_2_4_info = {
|
||||
.name = TYPE_S390_CCW_MACHINE "2.4",
|
||||
.name = MACHINE_TYPE_NAME("s390-ccw-virtio-2.4"),
|
||||
.parent = TYPE_S390_CCW_MACHINE,
|
||||
.class_init = ccw_machine_2_4_class_init,
|
||||
};
|
||||
@ -267,14 +266,13 @@ static void ccw_machine_2_5_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->name = "s390-ccw-virtio-2.5";
|
||||
mc->alias = "s390-ccw-virtio";
|
||||
mc->desc = "VirtIO-ccw based S390 machine v2.5";
|
||||
mc->is_default = 1;
|
||||
}
|
||||
|
||||
static const TypeInfo ccw_machine_2_5_info = {
|
||||
.name = TYPE_S390_CCW_MACHINE "2.5",
|
||||
.name = MACHINE_TYPE_NAME("s390-ccw-virtio-2.5"),
|
||||
.parent = TYPE_S390_CCW_MACHINE,
|
||||
.class_init = ccw_machine_2_5_class_init,
|
||||
};
|
||||
|
@ -54,7 +54,8 @@
|
||||
|
||||
#define MAX_BLK_DEVS 10
|
||||
#define ZIPL_FILENAME "s390-zipl.rom"
|
||||
#define TYPE_S390_MACHINE "s390-machine"
|
||||
#define S390_MACHINE "s390-virtio"
|
||||
#define TYPE_S390_MACHINE MACHINE_TYPE_NAME(S390_MACHINE)
|
||||
|
||||
#define S390_TOD_CLOCK_VALUE_MISSING 0x00
|
||||
#define S390_TOD_CLOCK_VALUE_PRESENT 0x01
|
||||
@ -318,7 +319,6 @@ static void s390_machine_class_init(ObjectClass *oc, void *data)
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
NMIClass *nc = NMI_CLASS(oc);
|
||||
|
||||
mc->name = "s390-virtio";
|
||||
mc->alias = "s390";
|
||||
mc->desc = "VirtIO based S390 machine";
|
||||
mc->init = s390_init;
|
||||
|
13
hw/sh4/r2d.c
13
hw/sh4/r2d.c
@ -354,15 +354,10 @@ static void r2d_init(MachineState *machine)
|
||||
SDRAM_BASE + BOOT_PARAMS_OFFSET);
|
||||
}
|
||||
|
||||
static QEMUMachine r2d_machine = {
|
||||
.name = "r2d",
|
||||
.desc = "r2d-plus board",
|
||||
.init = r2d_init,
|
||||
};
|
||||
|
||||
static void r2d_machine_init(void)
|
||||
static void r2d_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&r2d_machine);
|
||||
mc->desc = "r2d-plus board";
|
||||
mc->init = r2d_init;
|
||||
}
|
||||
|
||||
machine_init(r2d_machine_init);
|
||||
DEFINE_MACHINE("r2d", r2d_machine_init)
|
||||
|
@ -87,16 +87,11 @@ static void shix_init(MachineState *machine)
|
||||
tc58128_init(s, "shix_linux_nand.bin", NULL);
|
||||
}
|
||||
|
||||
static QEMUMachine shix_machine = {
|
||||
.name = "shix",
|
||||
.desc = "shix card",
|
||||
.init = shix_init,
|
||||
.is_default = 1,
|
||||
};
|
||||
|
||||
static void shix_machine_init(void)
|
||||
static void shix_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&shix_machine);
|
||||
mc->desc = "shix card";
|
||||
mc->init = shix_init;
|
||||
mc->is_default = 1;
|
||||
}
|
||||
|
||||
machine_init(shix_machine_init);
|
||||
DEFINE_MACHINE("shix", shix_machine_init)
|
||||
|
@ -216,15 +216,10 @@ static void leon3_generic_hw_init(MachineState *machine)
|
||||
}
|
||||
}
|
||||
|
||||
static QEMUMachine leon3_generic_machine = {
|
||||
.name = "leon3_generic",
|
||||
.desc = "Leon-3 generic",
|
||||
.init = leon3_generic_hw_init,
|
||||
};
|
||||
|
||||
static void leon3_machine_init(void)
|
||||
static void leon3_generic_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&leon3_generic_machine);
|
||||
mc->desc = "Leon-3 generic";
|
||||
mc->init = leon3_generic_hw_init;
|
||||
}
|
||||
|
||||
machine_init(leon3_machine_init);
|
||||
DEFINE_MACHINE("leon3_generic", leon3_generic_machine_init)
|
||||
|
208
hw/sparc/sun4m.c
208
hw/sparc/sun4m.c
@ -1420,80 +1420,152 @@ static void sbook_init(MachineState *machine)
|
||||
sun4m_hw_init(&sun4m_hwdefs[8], machine);
|
||||
}
|
||||
|
||||
static QEMUMachine ss5_machine = {
|
||||
.name = "SS-5",
|
||||
.desc = "Sun4m platform, SPARCstation 5",
|
||||
.init = ss5_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.is_default = 1,
|
||||
.default_boot_order = "c",
|
||||
static void ss5_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Sun4m platform, SPARCstation 5";
|
||||
mc->init = ss5_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
mc->is_default = 1;
|
||||
mc->default_boot_order = "c";
|
||||
}
|
||||
|
||||
static const TypeInfo ss5_type = {
|
||||
.name = MACHINE_TYPE_NAME("SS-5"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = ss5_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine ss10_machine = {
|
||||
.name = "SS-10",
|
||||
.desc = "Sun4m platform, SPARCstation 10",
|
||||
.init = ss10_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
.default_boot_order = "c",
|
||||
static void ss10_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Sun4m platform, SPARCstation 10";
|
||||
mc->init = ss10_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
mc->max_cpus = 4;
|
||||
mc->default_boot_order = "c";
|
||||
}
|
||||
|
||||
static const TypeInfo ss10_type = {
|
||||
.name = MACHINE_TYPE_NAME("SS-10"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = ss10_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine ss600mp_machine = {
|
||||
.name = "SS-600MP",
|
||||
.desc = "Sun4m platform, SPARCserver 600MP",
|
||||
.init = ss600mp_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
.default_boot_order = "c",
|
||||
static void ss600mp_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Sun4m platform, SPARCserver 600MP";
|
||||
mc->init = ss600mp_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
mc->max_cpus = 4;
|
||||
mc->default_boot_order = "c";
|
||||
}
|
||||
|
||||
static const TypeInfo ss600mp_type = {
|
||||
.name = MACHINE_TYPE_NAME("SS-600MP"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = ss600mp_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine ss20_machine = {
|
||||
.name = "SS-20",
|
||||
.desc = "Sun4m platform, SPARCstation 20",
|
||||
.init = ss20_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
.default_boot_order = "c",
|
||||
static void ss20_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Sun4m platform, SPARCstation 20";
|
||||
mc->init = ss20_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
mc->max_cpus = 4;
|
||||
mc->default_boot_order = "c";
|
||||
}
|
||||
|
||||
static const TypeInfo ss20_type = {
|
||||
.name = MACHINE_TYPE_NAME("SS-20"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = ss20_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine voyager_machine = {
|
||||
.name = "Voyager",
|
||||
.desc = "Sun4m platform, SPARCstation Voyager",
|
||||
.init = vger_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.default_boot_order = "c",
|
||||
static void voyager_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Sun4m platform, SPARCstation Voyager";
|
||||
mc->init = vger_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
mc->default_boot_order = "c";
|
||||
}
|
||||
|
||||
static const TypeInfo voyager_type = {
|
||||
.name = MACHINE_TYPE_NAME("Voyager"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = voyager_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine ss_lx_machine = {
|
||||
.name = "LX",
|
||||
.desc = "Sun4m platform, SPARCstation LX",
|
||||
.init = ss_lx_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.default_boot_order = "c",
|
||||
static void ss_lx_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Sun4m platform, SPARCstation LX";
|
||||
mc->init = ss_lx_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
mc->default_boot_order = "c";
|
||||
}
|
||||
|
||||
static const TypeInfo ss_lx_type = {
|
||||
.name = MACHINE_TYPE_NAME("LX"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = ss_lx_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine ss4_machine = {
|
||||
.name = "SS-4",
|
||||
.desc = "Sun4m platform, SPARCstation 4",
|
||||
.init = ss4_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.default_boot_order = "c",
|
||||
static void ss4_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Sun4m platform, SPARCstation 4";
|
||||
mc->init = ss4_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
mc->default_boot_order = "c";
|
||||
}
|
||||
|
||||
static const TypeInfo ss4_type = {
|
||||
.name = MACHINE_TYPE_NAME("SS-4"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = ss4_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine scls_machine = {
|
||||
.name = "SPARCClassic",
|
||||
.desc = "Sun4m platform, SPARCClassic",
|
||||
.init = scls_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.default_boot_order = "c",
|
||||
static void scls_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Sun4m platform, SPARCClassic";
|
||||
mc->init = scls_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
mc->default_boot_order = "c";
|
||||
}
|
||||
|
||||
static const TypeInfo scls_type = {
|
||||
.name = MACHINE_TYPE_NAME("SPARCClassic"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = scls_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine sbook_machine = {
|
||||
.name = "SPARCbook",
|
||||
.desc = "Sun4m platform, SPARCbook",
|
||||
.init = sbook_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.default_boot_order = "c",
|
||||
static void sbook_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Sun4m platform, SPARCbook";
|
||||
mc->init = sbook_init;
|
||||
mc->block_default_type = IF_SCSI;
|
||||
mc->default_boot_order = "c";
|
||||
}
|
||||
|
||||
static const TypeInfo sbook_type = {
|
||||
.name = MACHINE_TYPE_NAME("SPARCbook"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = sbook_class_init,
|
||||
};
|
||||
|
||||
static void sun4m_register_types(void)
|
||||
@ -1506,16 +1578,16 @@ static void sun4m_register_types(void)
|
||||
|
||||
static void sun4m_machine_init(void)
|
||||
{
|
||||
qemu_register_machine(&ss5_machine);
|
||||
qemu_register_machine(&ss10_machine);
|
||||
qemu_register_machine(&ss600mp_machine);
|
||||
qemu_register_machine(&ss20_machine);
|
||||
qemu_register_machine(&voyager_machine);
|
||||
qemu_register_machine(&ss_lx_machine);
|
||||
qemu_register_machine(&ss4_machine);
|
||||
qemu_register_machine(&scls_machine);
|
||||
qemu_register_machine(&sbook_machine);
|
||||
type_register_static(&ss5_type);
|
||||
type_register_static(&ss10_type);
|
||||
type_register_static(&ss600mp_type);
|
||||
type_register_static(&ss20_type);
|
||||
type_register_static(&voyager_type);
|
||||
type_register_static(&ss_lx_type);
|
||||
type_register_static(&ss4_type);
|
||||
type_register_static(&scls_type);
|
||||
type_register_static(&sbook_type);
|
||||
}
|
||||
|
||||
type_init(sun4m_register_types)
|
||||
machine_init(sun4m_machine_init);
|
||||
machine_init(sun4m_machine_init)
|
||||
|
@ -965,29 +965,53 @@ static void niagara_init(MachineState *machine)
|
||||
sun4uv_init(get_system_memory(), machine, &hwdefs[2]);
|
||||
}
|
||||
|
||||
static QEMUMachine sun4u_machine = {
|
||||
.name = "sun4u",
|
||||
.desc = "Sun4u platform",
|
||||
.init = sun4u_init,
|
||||
.max_cpus = 1, // XXX for now
|
||||
.is_default = 1,
|
||||
.default_boot_order = "c",
|
||||
static void sun4u_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Sun4u platform";
|
||||
mc->init = sun4u_init;
|
||||
mc->max_cpus = 1; /* XXX for now */
|
||||
mc->is_default = 1;
|
||||
mc->default_boot_order = "c";
|
||||
}
|
||||
|
||||
static const TypeInfo sun4u_type = {
|
||||
.name = MACHINE_TYPE_NAME("sun4u"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = sun4u_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine sun4v_machine = {
|
||||
.name = "sun4v",
|
||||
.desc = "Sun4v platform",
|
||||
.init = sun4v_init,
|
||||
.max_cpus = 1, // XXX for now
|
||||
.default_boot_order = "c",
|
||||
static void sun4v_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Sun4v platform";
|
||||
mc->init = sun4v_init;
|
||||
mc->max_cpus = 1; /* XXX for now */
|
||||
mc->default_boot_order = "c";
|
||||
}
|
||||
|
||||
static const TypeInfo sun4v_type = {
|
||||
.name = MACHINE_TYPE_NAME("sun4v"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = sun4v_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine niagara_machine = {
|
||||
.name = "Niagara",
|
||||
.desc = "Sun4v platform, Niagara",
|
||||
.init = niagara_init,
|
||||
.max_cpus = 1, // XXX for now
|
||||
.default_boot_order = "c",
|
||||
static void niagara_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Sun4v platform, Niagara";
|
||||
mc->init = niagara_init;
|
||||
mc->max_cpus = 1; /* XXX for now */
|
||||
mc->default_boot_order = "c";
|
||||
}
|
||||
|
||||
static const TypeInfo niagara_type = {
|
||||
.name = MACHINE_TYPE_NAME("Niagara"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = niagara_class_init,
|
||||
};
|
||||
|
||||
static void sun4u_register_types(void)
|
||||
@ -999,10 +1023,10 @@ static void sun4u_register_types(void)
|
||||
|
||||
static void sun4u_machine_init(void)
|
||||
{
|
||||
qemu_register_machine(&sun4u_machine);
|
||||
qemu_register_machine(&sun4v_machine);
|
||||
qemu_register_machine(&niagara_machine);
|
||||
type_register_static(&sun4u_type);
|
||||
type_register_static(&sun4v_type);
|
||||
type_register_static(&niagara_type);
|
||||
}
|
||||
|
||||
type_init(sun4u_register_types)
|
||||
machine_init(sun4u_machine_init);
|
||||
machine_init(sun4u_machine_init)
|
||||
|
@ -115,16 +115,11 @@ static void tricoreboard_init(MachineState *machine)
|
||||
tricore_testboard_init(machine, 0x183);
|
||||
}
|
||||
|
||||
static QEMUMachine ttb_machine = {
|
||||
.name = "tricore_testboard",
|
||||
.desc = "a minimal TriCore board",
|
||||
.init = tricoreboard_init,
|
||||
.is_default = 0,
|
||||
};
|
||||
|
||||
static void tricore_testboard_machine_init(void)
|
||||
static void ttb_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&ttb_machine);
|
||||
mc->desc = "a minimal TriCore board";
|
||||
mc->init = tricoreboard_init;
|
||||
mc->is_default = 0;
|
||||
}
|
||||
|
||||
machine_init(tricore_testboard_machine_init);
|
||||
DEFINE_MACHINE("tricore_testboard", ttb_machine_init)
|
||||
|
@ -130,16 +130,11 @@ static void puv3_init(MachineState *machine)
|
||||
puv3_load_kernel(kernel_filename);
|
||||
}
|
||||
|
||||
static QEMUMachine puv3_machine = {
|
||||
.name = "puv3",
|
||||
.desc = "PKUnity Version-3 based on UniCore32",
|
||||
.init = puv3_init,
|
||||
.is_default = 1,
|
||||
};
|
||||
|
||||
static void puv3_machine_init(void)
|
||||
static void puv3_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&puv3_machine);
|
||||
mc->desc = "PKUnity Version-3 based on UniCore32";
|
||||
mc->init = puv3_init;
|
||||
mc->is_default = 1;
|
||||
}
|
||||
|
||||
machine_init(puv3_machine_init)
|
||||
DEFINE_MACHINE("puv3", puv3_machine_init)
|
||||
|
@ -93,17 +93,12 @@ static void xen_init_pv(MachineState *machine)
|
||||
xen_init_display(xen_domid);
|
||||
}
|
||||
|
||||
static QEMUMachine xenpv_machine = {
|
||||
.name = "xenpv",
|
||||
.desc = "Xen Para-virtualized PC",
|
||||
.init = xen_init_pv,
|
||||
.max_cpus = 1,
|
||||
.default_machine_opts = "accel=xen",
|
||||
};
|
||||
|
||||
static void xenpv_machine_init(void)
|
||||
static void xenpv_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&xenpv_machine);
|
||||
mc->desc = "Xen Para-virtualized PC";
|
||||
mc->init = xen_init_pv;
|
||||
mc->max_cpus = 1;
|
||||
mc->default_machine_opts = "accel=xen";
|
||||
}
|
||||
|
||||
machine_init(xenpv_machine_init);
|
||||
DEFINE_MACHINE("xenpv", xenpv_machine_init)
|
||||
|
@ -104,17 +104,12 @@ static void xtensa_sim_init(MachineState *machine)
|
||||
}
|
||||
}
|
||||
|
||||
static QEMUMachine xtensa_sim_machine = {
|
||||
.name = "sim",
|
||||
.desc = "sim machine (" XTENSA_DEFAULT_CPU_MODEL ")",
|
||||
.is_default = true,
|
||||
.init = xtensa_sim_init,
|
||||
.max_cpus = 4,
|
||||
};
|
||||
|
||||
static void xtensa_sim_machine_init(void)
|
||||
static void xtensa_sim_machine_init(MachineClass *mc)
|
||||
{
|
||||
qemu_register_machine(&xtensa_sim_machine);
|
||||
mc->desc = "sim machine (" XTENSA_DEFAULT_CPU_MODEL ")";
|
||||
mc->is_default = true;
|
||||
mc->init = xtensa_sim_init;
|
||||
mc->max_cpus = 4;
|
||||
}
|
||||
|
||||
machine_init(xtensa_sim_machine_init);
|
||||
DEFINE_MACHINE("sim", xtensa_sim_machine_init)
|
||||
|
@ -428,40 +428,72 @@ static void xtensa_kc705_init(MachineState *machine)
|
||||
lx_init(&kc705_board, machine);
|
||||
}
|
||||
|
||||
static QEMUMachine xtensa_lx60_machine = {
|
||||
.name = "lx60",
|
||||
.desc = "lx60 EVB (" XTENSA_DEFAULT_CPU_MODEL ")",
|
||||
.init = xtensa_lx60_init,
|
||||
.max_cpus = 4,
|
||||
static void xtensa_lx60_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "lx60 EVB (" XTENSA_DEFAULT_CPU_MODEL ")";
|
||||
mc->init = xtensa_lx60_init;
|
||||
mc->max_cpus = 4;
|
||||
}
|
||||
|
||||
static const TypeInfo xtensa_lx60_type = {
|
||||
.name = MACHINE_TYPE_NAME("lx60"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = xtensa_lx60_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine xtensa_lx200_machine = {
|
||||
.name = "lx200",
|
||||
.desc = "lx200 EVB (" XTENSA_DEFAULT_CPU_MODEL ")",
|
||||
.init = xtensa_lx200_init,
|
||||
.max_cpus = 4,
|
||||
static void xtensa_lx200_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "lx200 EVB (" XTENSA_DEFAULT_CPU_MODEL ")";
|
||||
mc->init = xtensa_lx200_init;
|
||||
mc->max_cpus = 4;
|
||||
}
|
||||
|
||||
static const TypeInfo xtensa_lx200_type = {
|
||||
.name = MACHINE_TYPE_NAME("lx200"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = xtensa_lx200_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine xtensa_ml605_machine = {
|
||||
.name = "ml605",
|
||||
.desc = "ml605 EVB (" XTENSA_DEFAULT_CPU_MODEL ")",
|
||||
.init = xtensa_ml605_init,
|
||||
.max_cpus = 4,
|
||||
static void xtensa_ml605_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "ml605 EVB (" XTENSA_DEFAULT_CPU_MODEL ")";
|
||||
mc->init = xtensa_ml605_init;
|
||||
mc->max_cpus = 4;
|
||||
}
|
||||
|
||||
static const TypeInfo xtensa_ml605_type = {
|
||||
.name = MACHINE_TYPE_NAME("ml605"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = xtensa_ml605_class_init,
|
||||
};
|
||||
|
||||
static QEMUMachine xtensa_kc705_machine = {
|
||||
.name = "kc705",
|
||||
.desc = "kc705 EVB (" XTENSA_DEFAULT_CPU_MODEL ")",
|
||||
.init = xtensa_kc705_init,
|
||||
.max_cpus = 4,
|
||||
static void xtensa_kc705_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "kc705 EVB (" XTENSA_DEFAULT_CPU_MODEL ")";
|
||||
mc->init = xtensa_kc705_init;
|
||||
mc->max_cpus = 4;
|
||||
}
|
||||
|
||||
static const TypeInfo xtensa_kc705_type = {
|
||||
.name = MACHINE_TYPE_NAME("kc705"),
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = xtensa_kc705_class_init,
|
||||
};
|
||||
|
||||
static void xtensa_lx_machines_init(void)
|
||||
{
|
||||
qemu_register_machine(&xtensa_lx60_machine);
|
||||
qemu_register_machine(&xtensa_lx200_machine);
|
||||
qemu_register_machine(&xtensa_ml605_machine);
|
||||
qemu_register_machine(&xtensa_kc705_machine);
|
||||
type_register_static(&xtensa_lx60_type);
|
||||
type_register_static(&xtensa_lx200_type);
|
||||
type_register_static(&xtensa_ml605_type);
|
||||
type_register_static(&xtensa_kc705_type);
|
||||
}
|
||||
|
||||
machine_init(xtensa_lx_machines_init);
|
||||
machine_init(xtensa_lx_machines_init)
|
||||
|
@ -9,37 +9,17 @@
|
||||
#include "hw/qdev.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
|
||||
typedef void QEMUMachineInitFunc(MachineState *ms);
|
||||
|
||||
typedef void QEMUMachineResetFunc(void);
|
||||
|
||||
typedef void QEMUMachineHotAddCPUFunc(const int64_t id, Error **errp);
|
||||
|
||||
typedef int QEMUMachineGetKvmtypeFunc(const char *arg);
|
||||
|
||||
struct QEMUMachine {
|
||||
const char *name;
|
||||
const char *desc;
|
||||
QEMUMachineInitFunc *init;
|
||||
QEMUMachineGetKvmtypeFunc *kvm_type;
|
||||
BlockInterfaceType block_default_type;
|
||||
int max_cpus;
|
||||
unsigned int
|
||||
no_sdcard:1,
|
||||
has_dynamic_sysbus:1;
|
||||
int is_default;
|
||||
const char *default_machine_opts;
|
||||
const char *default_boot_order;
|
||||
};
|
||||
|
||||
void memory_region_allocate_system_memory(MemoryRegion *mr, Object *owner,
|
||||
const char *name,
|
||||
uint64_t ram_size);
|
||||
|
||||
int qemu_register_machine(QEMUMachine *m);
|
||||
|
||||
#define TYPE_MACHINE_SUFFIX "-machine"
|
||||
|
||||
/* Machine class name that needs to be used for class-name-based machine
|
||||
* type lookup to work.
|
||||
*/
|
||||
#define MACHINE_TYPE_NAME(machinename) (machinename TYPE_MACHINE_SUFFIX)
|
||||
|
||||
#define TYPE_MACHINE "machine"
|
||||
#undef MACHINE /* BSD defines it and QEMU does not use it */
|
||||
#define MACHINE(obj) \
|
||||
@ -63,7 +43,6 @@ bool machine_mem_merge(MachineState *machine);
|
||||
|
||||
/**
|
||||
* MachineClass:
|
||||
* @qemu_machine: #QEMUMachine
|
||||
* @get_hotplug_handler: this function is called during bus-less
|
||||
* device hotplug. If defined it returns pointer to an instance
|
||||
* of HotplugHandler object, which handles hotplug operation
|
||||
@ -153,4 +132,21 @@ struct MachineState {
|
||||
AccelState *accelerator;
|
||||
};
|
||||
|
||||
#define DEFINE_MACHINE(namestr, machine_initfn) \
|
||||
static void machine_initfn##_class_init(ObjectClass *oc, void *data) \
|
||||
{ \
|
||||
MachineClass *mc = MACHINE_CLASS(oc); \
|
||||
machine_initfn(mc); \
|
||||
} \
|
||||
static const TypeInfo machine_initfn##_typeinfo = { \
|
||||
.name = MACHINE_TYPE_NAME(namestr), \
|
||||
.parent = TYPE_MACHINE, \
|
||||
.class_init = machine_initfn##_class_init, \
|
||||
}; \
|
||||
static void machine_initfn##_register_types(void) \
|
||||
{ \
|
||||
type_register_static(&machine_initfn##_typeinfo); \
|
||||
} \
|
||||
machine_init(machine_initfn##_register_types)
|
||||
|
||||
#endif
|
||||
|
@ -67,7 +67,6 @@ typedef struct Property Property;
|
||||
typedef struct QEMUBH QEMUBH;
|
||||
typedef struct QemuConsole QemuConsole;
|
||||
typedef struct QEMUFile QEMUFile;
|
||||
typedef struct QEMUMachine QEMUMachine;
|
||||
typedef struct QEMUSGList QEMUSGList;
|
||||
typedef struct QEMUSizedBuffer QEMUSizedBuffer;
|
||||
typedef struct QEMUTimerListGroup QEMUTimerListGroup;
|
||||
|
@ -20,7 +20,7 @@ void blockdev_auto_del(BlockBackend *blk);
|
||||
typedef enum {
|
||||
IF_DEFAULT = -1, /* for use with drive_add() only */
|
||||
/*
|
||||
* IF_IDE must be zero, because we want QEMUMachine member
|
||||
* IF_IDE must be zero, because we want MachineClass member
|
||||
* block_default_type to default-initialize to IF_IDE
|
||||
*/
|
||||
IF_IDE = 0,
|
||||
|
@ -195,7 +195,7 @@ void device_add_bootindex_property(Object *obj, int32_t *bootindex,
|
||||
void restore_boot_order(void *opaque);
|
||||
void validate_bootdevices(const char *devices, Error **errp);
|
||||
|
||||
/* handler to set the boot_device order for a specific type of QEMUMachine */
|
||||
/* handler to set the boot_device order for a specific type of MachineClass */
|
||||
typedef void QEMUBootSetHandler(void *opaque, const char *boot_order,
|
||||
Error **errp);
|
||||
void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque);
|
||||
|
53
qom/object.c
53
qom/object.c
@ -1098,6 +1098,7 @@ typedef struct EnumProperty {
|
||||
int object_property_get_enum(Object *obj, const char *name,
|
||||
const char *typename, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
StringOutputVisitor *sov;
|
||||
StringInputVisitor *siv;
|
||||
char *str;
|
||||
@ -1119,7 +1120,12 @@ int object_property_get_enum(Object *obj, const char *name,
|
||||
enumprop = prop->opaque;
|
||||
|
||||
sov = string_output_visitor_new(false);
|
||||
object_property_get(obj, string_output_get_visitor(sov), name, errp);
|
||||
object_property_get(obj, string_output_get_visitor(sov), name, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
string_output_visitor_cleanup(sov);
|
||||
return 0;
|
||||
}
|
||||
str = string_output_get_string(sov);
|
||||
siv = string_input_visitor_new(str);
|
||||
string_output_visitor_cleanup(sov);
|
||||
@ -1135,21 +1141,27 @@ int object_property_get_enum(Object *obj, const char *name,
|
||||
void object_property_get_uint16List(Object *obj, const char *name,
|
||||
uint16List **list, Error **errp)
|
||||
{
|
||||
Error *err = NULL;
|
||||
StringOutputVisitor *ov;
|
||||
StringInputVisitor *iv;
|
||||
char *str;
|
||||
|
||||
ov = string_output_visitor_new(false);
|
||||
object_property_get(obj, string_output_get_visitor(ov),
|
||||
name, errp);
|
||||
name, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
goto out;
|
||||
}
|
||||
str = string_output_get_string(ov);
|
||||
iv = string_input_visitor_new(str);
|
||||
visit_type_uint16List(string_input_get_visitor(iv),
|
||||
list, NULL, errp);
|
||||
|
||||
g_free(str);
|
||||
string_output_visitor_cleanup(ov);
|
||||
string_input_visitor_cleanup(iv);
|
||||
out:
|
||||
string_output_visitor_cleanup(ov);
|
||||
}
|
||||
|
||||
void object_property_parse(Object *obj, const char *string,
|
||||
@ -1600,12 +1612,16 @@ static void property_get_str(Object *obj, Visitor *v, void *opaque,
|
||||
{
|
||||
StringProperty *prop = opaque;
|
||||
char *value;
|
||||
Error *err = NULL;
|
||||
|
||||
value = prop->get(obj, errp);
|
||||
if (value) {
|
||||
visit_type_str(v, &value, name, errp);
|
||||
g_free(value);
|
||||
value = prop->get(obj, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
|
||||
visit_type_str(v, &value, name, errp);
|
||||
g_free(value);
|
||||
}
|
||||
|
||||
static void property_set_str(Object *obj, Visitor *v, void *opaque,
|
||||
@ -1665,8 +1681,14 @@ static void property_get_bool(Object *obj, Visitor *v, void *opaque,
|
||||
{
|
||||
BoolProperty *prop = opaque;
|
||||
bool value;
|
||||
Error *err = NULL;
|
||||
|
||||
value = prop->get(obj, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
|
||||
value = prop->get(obj, errp);
|
||||
visit_type_bool(v, &value, name, errp);
|
||||
}
|
||||
|
||||
@ -1720,8 +1742,14 @@ static void property_get_enum(Object *obj, Visitor *v, void *opaque,
|
||||
{
|
||||
EnumProperty *prop = opaque;
|
||||
int value;
|
||||
Error *err = NULL;
|
||||
|
||||
value = prop->get(obj, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
|
||||
value = prop->get(obj, errp);
|
||||
visit_type_enum(v, &value, prop->strings, NULL, name, errp);
|
||||
}
|
||||
|
||||
@ -1730,8 +1758,13 @@ static void property_set_enum(Object *obj, Visitor *v, void *opaque,
|
||||
{
|
||||
EnumProperty *prop = opaque;
|
||||
int value;
|
||||
Error *err = NULL;
|
||||
|
||||
visit_type_enum(v, &value, prop->strings, NULL, name, errp);
|
||||
visit_type_enum(v, &value, prop->strings, NULL, name, &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
prop->set(obj, value, errp);
|
||||
}
|
||||
|
||||
|
37
vl.c
37
vl.c
@ -1429,43 +1429,6 @@ void hmp_usb_del(Monitor *mon, const QDict *qdict)
|
||||
|
||||
MachineState *current_machine;
|
||||
|
||||
/*
|
||||
* Transitional class registration/init used for converting from
|
||||
* legacy QEMUMachine to MachineClass.
|
||||
*/
|
||||
static void qemu_machine_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
QEMUMachine *qm = data;
|
||||
mc->name = qm->name;
|
||||
mc->desc = qm->desc;
|
||||
mc->init = qm->init;
|
||||
mc->kvm_type = qm->kvm_type;
|
||||
mc->block_default_type = qm->block_default_type;
|
||||
mc->max_cpus = qm->max_cpus;
|
||||
mc->no_sdcard = qm->no_sdcard;
|
||||
mc->has_dynamic_sysbus = qm->has_dynamic_sysbus;
|
||||
mc->is_default = qm->is_default;
|
||||
mc->default_machine_opts = qm->default_machine_opts;
|
||||
mc->default_boot_order = qm->default_boot_order;
|
||||
}
|
||||
|
||||
int qemu_register_machine(QEMUMachine *m)
|
||||
{
|
||||
char *name = g_strconcat(m->name, TYPE_MACHINE_SUFFIX, NULL);
|
||||
TypeInfo ti = {
|
||||
.name = name,
|
||||
.parent = TYPE_MACHINE,
|
||||
.class_init = qemu_machine_class_init,
|
||||
.class_data = (void *)m,
|
||||
};
|
||||
|
||||
type_register(&ti);
|
||||
g_free(name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static MachineClass *find_machine(const char *name)
|
||||
{
|
||||
GSList *el, *machines = object_class_get_list(TYPE_MACHINE, false);
|
||||
|
Loading…
Reference in New Issue
Block a user