mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
hw/isa/isa-bus: cleanup irq functions
The irq number is unsigned; we reject negative values. But -1 is used for the isairq array, which is declared unsigned! And since we have a definition for the number of ISA IRQs, use it. Based on a patch by Philippe Mathieu-Daudé. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
14a1bb48ea
commit
3c29e18841
2 changed files with 11 additions and 8 deletions
|
@ -82,24 +82,27 @@ void isa_bus_irqs(ISABus *bus, qemu_irq *irqs)
|
|||
* This function is only for special cases such as the 'ferr', and
|
||||
* temporary use for normal devices until they are converted to qdev.
|
||||
*/
|
||||
qemu_irq isa_get_irq(ISADevice *dev, int isairq)
|
||||
qemu_irq isa_get_irq(ISADevice *dev, unsigned isairq)
|
||||
{
|
||||
assert(!dev || ISA_BUS(qdev_get_parent_bus(DEVICE(dev))) == isabus);
|
||||
if (isairq < 0 || isairq > 15) {
|
||||
if (isairq >= ISA_NUM_IRQS) {
|
||||
hw_error("isa irq %d invalid", isairq);
|
||||
}
|
||||
return isabus->irqs[isairq];
|
||||
}
|
||||
|
||||
void isa_init_irq(ISADevice *dev, qemu_irq *p, int isairq)
|
||||
void isa_init_irq(ISADevice *dev, qemu_irq *p, unsigned isairq)
|
||||
{
|
||||
assert(dev->nirqs < ARRAY_SIZE(dev->isairq));
|
||||
if (isairq >= ISA_NUM_IRQS) {
|
||||
hw_error("isa irq %d invalid", isairq);
|
||||
}
|
||||
dev->isairq[dev->nirqs] = isairq;
|
||||
*p = isa_get_irq(dev, isairq);
|
||||
dev->nirqs++;
|
||||
}
|
||||
|
||||
void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, int isairq)
|
||||
void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, unsigned isairq)
|
||||
{
|
||||
qemu_irq irq;
|
||||
isa_init_irq(isadev, &irq, isairq);
|
||||
|
|
|
@ -88,7 +88,7 @@ struct ISADevice {
|
|||
DeviceState parent_obj;
|
||||
/*< public >*/
|
||||
|
||||
uint32_t isairq[2];
|
||||
int8_t isairq[2]; /* -1 = unassigned */
|
||||
int nirqs;
|
||||
int ioport_id;
|
||||
};
|
||||
|
@ -96,9 +96,9 @@ struct ISADevice {
|
|||
ISABus *isa_bus_new(DeviceState *dev, MemoryRegion *address_space,
|
||||
MemoryRegion *address_space_io, Error **errp);
|
||||
void isa_bus_irqs(ISABus *bus, qemu_irq *irqs);
|
||||
qemu_irq isa_get_irq(ISADevice *dev, int isairq);
|
||||
void isa_init_irq(ISADevice *dev, qemu_irq *p, int isairq);
|
||||
void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, int isairq);
|
||||
qemu_irq isa_get_irq(ISADevice *dev, unsigned isairq);
|
||||
void isa_init_irq(ISADevice *dev, qemu_irq *p, unsigned isairq);
|
||||
void isa_connect_gpio_out(ISADevice *isadev, int gpioirq, unsigned isairq);
|
||||
void isa_bus_dma(ISABus *bus, IsaDma *dma8, IsaDma *dma16);
|
||||
IsaDma *isa_get_dma(ISABus *bus, int nchan);
|
||||
MemoryRegion *isa_address_space(ISADevice *dev);
|
||||
|
|
Loading…
Reference in a new issue