Revision ee951a37

b/hw/hpet.c
713 713
    s->capability |= (s->num_timers - 1) << HPET_ID_NUM_TIM_SHIFT;
714 714
    s->capability |= ((HPET_CLK_PERIOD) << 32);
715 715

  
716
    isa_reserve_irq(RTC_ISA_IRQ);
717 716
    qdev_init_gpio_in(&dev->qdev, hpet_handle_rtc_irq, 1);
718 717

  
719 718
    /* HPET Area */
b/hw/i8254.c
514 514
    s = &pit->channels[0];
515 515
    /* the timer 0 is connected to an IRQ */
516 516
    s->irq_timer = qemu_new_timer(vm_clock, pit_irq_timer, s);
517
    s->irq = isa_reserve_irq(pit->irq);
517
    s->irq = isa_get_irq(pit->irq);
518 518

  
519 519
    register_ioport_write(pit->iobase, 4, 1, pit_ioport_write, pit);
520 520
    register_ioport_read(pit->iobase, 3, 1, pit_ioport_read, pit);
b/hw/ide/piix.c
122 122
    for (i = 0; i < 2; i++) {
123 123
        ide_bus_new(&d->bus[i], &d->dev.qdev, i);
124 124
        ide_init_ioport(&d->bus[i], port_info[i].iobase, port_info[i].iobase2);
125
        ide_init2(&d->bus[i], isa_reserve_irq(port_info[i].isairq));
125
        ide_init2(&d->bus[i], isa_get_irq(port_info[i].isairq));
126 126

  
127 127
        bmdma_init(&d->bus[i], &d->bmdma[i]);
128 128
        d->bmdma[i].bus = &d->bus[i];
b/hw/ide/via.c
145 145
    for (i = 0; i < 2; i++) {
146 146
        ide_bus_new(&d->bus[i], &d->dev.qdev, i);
147 147
        ide_init_ioport(&d->bus[i], port_info[i].iobase, port_info[i].iobase2);
148
        ide_init2(&d->bus[i], isa_reserve_irq(port_info[i].isairq));
148
        ide_init2(&d->bus[i], isa_get_irq(port_info[i].isairq));
149 149

  
150 150
        bmdma_init(&d->bus[i], &d->bmdma[i]);
151 151
        d->bmdma[i].bus = &d->bus[i];
b/hw/isa-bus.c
25 25
struct ISABus {
26 26
    BusState qbus;
27 27
    qemu_irq *irqs;
28
    uint32_t assigned;
29 28
};
30 29
static ISABus *isabus;
31 30
target_phys_addr_t isa_mem_base = 0;
......
61 60
}
62 61

  
63 62
/*
64
 * isa_reserve_irq() reserves the ISA irq and returns the corresponding
65
 * qemu_irq entry for the i8259.
63
 * isa_get_irq() returns the corresponding qemu_irq entry for the i8259.
66 64
 *
67 65
 * This function is only for special cases such as the 'ferr', and
68 66
 * temporary use for normal devices until they are converted to qdev.
69 67
 */
70
qemu_irq isa_reserve_irq(int isairq)
68
qemu_irq isa_get_irq(int isairq)
71 69
{
72 70
    if (isairq < 0 || isairq > 15) {
73 71
        hw_error("isa irq %d invalid", isairq);
74 72
    }
75
    if (isabus->assigned & (1 << isairq)) {
76
        hw_error("isa irq %d already assigned", isairq);
77
    }
78
    isabus->assigned |= (1 << isairq);
79 73
    return isabus->irqs[isairq];
80 74
}
81 75

  
82 76
void isa_init_irq(ISADevice *dev, qemu_irq *p, int isairq)
83 77
{
84 78
    assert(dev->nirqs < ARRAY_SIZE(dev->isairq));
85
    if (isabus->assigned & (1 << isairq)) {
86
        hw_error("isa irq %d already assigned", isairq);
87
    }
88
    isabus->assigned |= (1 << isairq);
89 79
    dev->isairq[dev->nirqs] = isairq;
90
    *p = isabus->irqs[isairq];
80
    *p = isa_get_irq(isairq);
91 81
    dev->nirqs++;
92 82
}
93 83

  
b/hw/isa.h
26 26

  
27 27
ISABus *isa_bus_new(DeviceState *dev);
28 28
void isa_bus_irqs(qemu_irq *irqs);
29
qemu_irq isa_reserve_irq(int isairq);
29
qemu_irq isa_get_irq(int isairq);
30 30
void isa_init_irq(ISADevice *dev, qemu_irq *p, int isairq);
31 31
void isa_init_ioport(ISADevice *dev, uint16_t ioport);
32 32
void isa_init_ioport_range(ISADevice *dev, uint16_t start, uint16_t length);
b/hw/mips_malta.c
919 919
    isa_bus_irqs(i8259);
920 920
    pci_piix4_ide_init(pci_bus, hd, piix4_devfn + 1);
921 921
    usb_uhci_piix4_init(pci_bus, piix4_devfn + 2);
922
    smbus = piix4_pm_init(pci_bus, piix4_devfn + 3, 0x1100, isa_reserve_irq(9),
922
    smbus = piix4_pm_init(pci_bus, piix4_devfn + 3, 0x1100, isa_get_irq(9),
923 923
                          NULL, NULL, 0);
924 924
    eeprom_buf = qemu_mallocz(8 * 256); /* XXX: make this persistent */
925 925
    for (i = 0; i < 8; i++) {
b/hw/pc_piix.c
113 113
    }
114 114
    isa_bus_irqs(isa_irq);
115 115

  
116
    pc_register_ferr_irq(isa_reserve_irq(13));
116
    pc_register_ferr_irq(isa_get_irq(13));
117 117

  
118 118
    pc_vga_init(pci_enabled? pci_bus: NULL);
119 119

  
......
169 169
        smi_irq = qemu_allocate_irqs(pc_acpi_smi_interrupt, first_cpu, 1);
170 170
        /* TODO: Populate SPD eeprom data.  */
171 171
        smbus = piix4_pm_init(pci_bus, piix3_devfn + 3, 0xb100,
172
                              isa_reserve_irq(9), *cmos_s3, *smi_irq,
172
                              isa_get_irq(9), *cmos_s3, *smi_irq,
173 173
                              kvm_enabled());
174 174
        for (i = 0; i < 8; i++) {
175 175
            DeviceState *eeprom;

Also available in: Unified diff