98 |
98 |
}
|
99 |
99 |
}
|
100 |
100 |
|
101 |
|
PCIBus *pci_register_bus(DeviceState *parent, const char *name,
|
102 |
|
pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
|
103 |
|
void *irq_opaque, int devfn_min, int nirq)
|
|
101 |
void pci_bus_new_inplace(PCIBus *bus, DeviceState *parent,
|
|
102 |
const char *name, int devfn_min)
|
104 |
103 |
{
|
105 |
|
PCIBus *bus;
|
106 |
104 |
static int nbus = 0;
|
107 |
105 |
|
108 |
|
bus = FROM_QBUS(PCIBus, qbus_create(&pci_bus_info, parent, name));
|
109 |
|
bus->set_irq = set_irq;
|
110 |
|
bus->map_irq = map_irq;
|
111 |
|
bus->irq_opaque = irq_opaque;
|
|
106 |
qbus_create_inplace(&bus->qbus, &pci_bus_info, parent, name);
|
112 |
107 |
bus->devfn_min = devfn_min;
|
113 |
|
bus->nirq = nirq;
|
114 |
|
bus->irq_count = qemu_mallocz(nirq * sizeof(bus->irq_count[0]));
|
115 |
108 |
bus->next = first_bus;
|
116 |
109 |
first_bus = bus;
|
117 |
110 |
vmstate_register(nbus++, &vmstate_pcibus, bus);
|
118 |
111 |
qemu_register_reset(pci_bus_reset, bus);
|
|
112 |
}
|
|
113 |
|
|
114 |
PCIBus *pci_bus_new(DeviceState *parent, const char *name, int devfn_min)
|
|
115 |
{
|
|
116 |
PCIBus *bus;
|
|
117 |
|
|
118 |
bus = qemu_mallocz(sizeof(*bus));
|
|
119 |
bus->qbus.qdev_allocated = 1;
|
|
120 |
pci_bus_new_inplace(bus, parent, name, devfn_min);
|
|
121 |
return bus;
|
|
122 |
}
|
|
123 |
|
|
124 |
void pci_bus_irqs(PCIBus *bus, pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
|
|
125 |
void *irq_opaque, int nirq)
|
|
126 |
{
|
|
127 |
bus->set_irq = set_irq;
|
|
128 |
bus->map_irq = map_irq;
|
|
129 |
bus->irq_opaque = irq_opaque;
|
|
130 |
bus->nirq = nirq;
|
|
131 |
bus->irq_count = qemu_mallocz(nirq * sizeof(bus->irq_count[0]));
|
|
132 |
}
|
|
133 |
|
|
134 |
PCIBus *pci_register_bus(DeviceState *parent, const char *name,
|
|
135 |
pci_set_irq_fn set_irq, pci_map_irq_fn map_irq,
|
|
136 |
void *irq_opaque, int devfn_min, int nirq)
|
|
137 |
{
|
|
138 |
PCIBus *bus;
|
|
139 |
|
|
140 |
bus = pci_bus_new(parent, name, devfn_min);
|
|
141 |
pci_bus_irqs(bus, set_irq, map_irq, irq_opaque, nirq);
|
119 |
142 |
return bus;
|
120 |
143 |
}
|
121 |
144 |
|