mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
Keep track of ISA ports ISA device is using in qdev.
Store all io ports used by device in ISADevice structure. Signed-off-by: Gleb Natapov <gleb@redhat.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
21150814d9
commit
dee41d58ef
13 changed files with 57 additions and 0 deletions
25
hw/isa-bus.c
25
hw/isa-bus.c
|
@ -89,6 +89,31 @@ void isa_init_irq(ISADevice *dev, qemu_irq *p, int isairq)
|
|||
dev->nirqs++;
|
||||
}
|
||||
|
||||
static void isa_init_ioport_one(ISADevice *dev, uint16_t ioport)
|
||||
{
|
||||
assert(dev->nioports < ARRAY_SIZE(dev->ioports));
|
||||
dev->ioports[dev->nioports++] = ioport;
|
||||
}
|
||||
|
||||
static int isa_cmp_ports(const void *p1, const void *p2)
|
||||
{
|
||||
return *(uint16_t*)p1 - *(uint16_t*)p2;
|
||||
}
|
||||
|
||||
void isa_init_ioport_range(ISADevice *dev, uint16_t start, uint16_t length)
|
||||
{
|
||||
int i;
|
||||
for (i = start; i < start + length; i++) {
|
||||
isa_init_ioport_one(dev, i);
|
||||
}
|
||||
qsort(dev->ioports, dev->nioports, sizeof(dev->ioports[0]), isa_cmp_ports);
|
||||
}
|
||||
|
||||
void isa_init_ioport(ISADevice *dev, uint16_t ioport)
|
||||
{
|
||||
isa_init_ioport_range(dev, ioport, 1);
|
||||
}
|
||||
|
||||
static int isa_qdev_init(DeviceState *qdev, DeviceInfo *base)
|
||||
{
|
||||
ISADevice *dev = DO_UPCAST(ISADevice, qdev, qdev);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue