|
@@ -131,24 +131,20 @@ void isa_register_ioport(ISADevice *dev, MemoryRegion *io, uint16_t start)
|
|
|
isa_init_ioport(dev, start);
|
|
|
}
|
|
|
|
|
|
-void isa_register_portio_list(ISADevice *dev, uint16_t start,
|
|
|
+void isa_register_portio_list(ISADevice *dev,
|
|
|
+ PortioList *piolist, uint16_t start,
|
|
|
const MemoryRegionPortio *pio_start,
|
|
|
void *opaque, const char *name)
|
|
|
{
|
|
|
- PortioList piolist;
|
|
|
+ assert(piolist && !piolist->owner);
|
|
|
|
|
|
/* START is how we should treat DEV, regardless of the actual
|
|
|
contents of the portio array. This is how the old code
|
|
|
actually handled e.g. the FDC device. */
|
|
|
isa_init_ioport(dev, start);
|
|
|
|
|
|
- /* FIXME: the device should store created PortioList in its state. Note
|
|
|
- that DEV can be NULL here and that single device can register several
|
|
|
- portio lists. Current implementation is leaking memory allocated
|
|
|
- in portio_list_init. The leak is not critical because it happens only
|
|
|
- at initialization time. */
|
|
|
- portio_list_init(&piolist, OBJECT(dev), pio_start, opaque, name);
|
|
|
- portio_list_add(&piolist, isabus->address_space_io, start);
|
|
|
+ portio_list_init(piolist, OBJECT(dev), pio_start, opaque, name);
|
|
|
+ portio_list_add(piolist, isabus->address_space_io, start);
|
|
|
}
|
|
|
|
|
|
static void isa_device_init(Object *obj)
|