diff --git a/hw/sun4u.c b/hw/sun4u.c index dfe1578b67..9d2a7f59e3 100644 --- a/hw/sun4u.c +++ b/hw/sun4u.c @@ -305,9 +305,12 @@ static void ebus_mmio_mapfunc(PCIDevice *pci_dev, int region_num, static void pci_ebus_init(PCIBus *bus, int devfn) { - PCIDevice *s; + pci_create_simple(bus, devfn, "ebus"); +} - s = pci_register_device(bus, "EBUS", sizeof(*s), devfn, NULL, NULL); +static void +pci_ebus_init1(PCIDevice *s) +{ pci_config_set_vendor_id(s->config, PCI_VENDOR_ID_SUN); pci_config_set_device_id(s->config, PCI_DEVICE_ID_SUN_EBUS); s->config[0x04] = 0x06; // command = bus master, pci mem @@ -326,6 +329,19 @@ pci_ebus_init(PCIBus *bus, int devfn) ebus_mmio_mapfunc); } +static PCIDeviceInfo ebus_info = { + .qdev.name = "ebus", + .qdev.size = sizeof(PCIDevice), + .init = pci_ebus_init1, +}; + +static void pci_ebus_register(void) +{ + pci_qdev_register(&ebus_info); +} + +device_init(pci_ebus_register); + static void sun4uv_init(ram_addr_t RAM_size, const char *boot_devices, const char *kernel_filename, const char *kernel_cmdline,