diff --git a/hw/apb_pci.c b/hw/apb_pci.c index 43be7ceeb5..1ea3e0dc42 100644 --- a/hw/apb_pci.c +++ b/hw/apb_pci.c @@ -261,11 +261,13 @@ PCIBus *pci_apb_init(target_phys_addr_t special_base, 0, 32); pci_create_simple(d->host_state.bus, 0, "pbm"); /* APB secondary busses */ - *bus2 = pci_bridge_init(d->host_state.bus, 8, PCI_VENDOR_ID_SUN, - PCI_DEVICE_ID_SUN_SIMBA, pci_apb_map_irq, + *bus2 = pci_bridge_init(d->host_state.bus, PCI_DEVFN(1, 0), + PCI_VENDOR_ID_SUN, PCI_DEVICE_ID_SUN_SIMBA, + pci_apb_map_irq, "Advanced PCI Bus secondary bridge 1"); - *bus3 = pci_bridge_init(d->host_state.bus, 9, PCI_VENDOR_ID_SUN, - PCI_DEVICE_ID_SUN_SIMBA, pci_apb_map_irq, + *bus3 = pci_bridge_init(d->host_state.bus, PCI_DEVFN(1, 1), + PCI_VENDOR_ID_SUN, PCI_DEVICE_ID_SUN_SIMBA, + pci_apb_map_irq, "Advanced PCI Bus secondary bridge 2"); return d->host_state.bus; diff --git a/hw/pci.c b/hw/pci.c index e21098b8e6..ce3329bf69 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -745,7 +745,7 @@ static void pci_info_device(PCIDevice *d) const pci_class_desc *desc; monitor_printf(mon, " Bus %2d, device %3d, function %d:\n", - d->bus->bus_num, d->devfn >> 3, d->devfn & 7); + d->bus->bus_num, PCI_SLOT(d->devfn), PCI_FUNC(d->devfn)); class = le16_to_cpu(*((uint16_t *)(d->config + PCI_CLASS_DEVICE))); monitor_printf(mon, " "); desc = pci_class_descriptions; @@ -1111,7 +1111,7 @@ static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent) monitor_printf(mon, "%*sclass %s, addr %02x:%02x.%x, " "pci id %04x:%04x (sub %04x:%04x)\n", indent, "", ctxt, - d->bus->bus_num, d->devfn >> 3, d->devfn & 7, + d->bus->bus_num, PCI_SLOT(d->devfn), PCI_FUNC(d->devfn), le16_to_cpu(*((uint16_t *)(d->config + PCI_VENDOR_ID))), le16_to_cpu(*((uint16_t *)(d->config + PCI_DEVICE_ID))), le16_to_cpu(*((uint16_t *)(d->config + PCI_SUBSYSTEM_VENDOR_ID))),