diff --git a/src/include/86box/pci.h b/src/include/86box/pci.h index e59268742..210ff1d4e 100644 --- a/src/include/86box/pci.h +++ b/src/include/86box/pci.h @@ -44,6 +44,7 @@ #define PCI_MIRQ0 0 #define PCI_MIRQ1 1 #define PCI_MIRQ2 2 +#define PCI_MIRQ3 3 #define PCI_IRQ_DISABLED -1 diff --git a/src/pci.c b/src/pci.c index a8c76b003..5f1c48f50 100644 --- a/src/pci.c +++ b/src/pci.c @@ -59,7 +59,7 @@ static uint8_t pci_pmc = 0, last_pci_card = 0, last_normal_pci_card = 0, last_p static uint8_t pci_card_to_slot_mapping[256][32], pci_bus_number_to_index_mapping[256]; static uint8_t pci_irqs[16], pci_irq_level[16]; static uint64_t pci_irq_hold[16]; -static pci_mirq_t pci_mirqs[3]; +static pci_mirq_t pci_mirqs[4]; static int pci_type, pci_switch, pci_index, @@ -446,7 +446,7 @@ pci_set_irq(uint8_t card, uint8_t pci_int) } else pci_log("pci_set_irq(%02X, %02X): Using IRQ %i\n", card, pci_int, irq_line); - if (picint_is_level(irq_line) && (pci_irq_hold[irq_line] & (1ULL << slot))) { + if (level && (pci_irq_hold[irq_line] & (1ULL << slot))) { /* IRQ already held, do nothing. */ pci_log("pci_set_irq(%02X, %02X): Card is already holding the IRQ\n", card, pci_int); return;