diff options
| author | Stefan Eßer <se@FreeBSD.org> | 1997-01-25 01:57:30 +0000 |
|---|---|---|
| committer | Stefan Eßer <se@FreeBSD.org> | 1997-01-25 01:57:30 +0000 |
| commit | e8bfed6d98179520f29ad1591ba2bf7e9235be69 (patch) | |
| tree | dde0bfb82b2bdc2075fd5097def19a2bed04e5c0 /sys/dev | |
| parent | 098415100bcf0541b409aa098a67db94540e9355 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/pci/pci.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 23c110909df6..d8b134c6cf84 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -1256,14 +1256,15 @@ getirq (pcici_t tag) irq = PCI_INTERRUPT_LINE_EXTRACT( pci_conf_read (tag, PCI_INTERRUPT_REG)); - if (irq <= 0) { + if (irq == 0 || irq == 0xff) { printf ("\tint line register not set by bios\n"); - return (0); + return (0xff); } - if (irq >= pcibus->pb_maxirq || irq >= PCI_MAX_IRQ) { - printf ("\tirq %d invalid.\n", irq); - return (0); + if (irq >= PCI_MAX_IRQ) { + printf ("\tirq %d out of bounds (must be < %d).\n", + irq, PCI_MAX_IRQ); + return (0xff); } return (irq); @@ -1315,8 +1316,7 @@ int pci_map_int (pcici_t tag, pci_inthand_t *func, void *arg, unsigned *maskptr) */ irq = getirq (tag); - if ((irq == 0) || (irq >= PCI_MAX_IRQ)) { - printf ("\tillegal irq %d.\n", irq); + if (irq == 0xff) { return (0); }; mask= 1ul << irq; @@ -1455,8 +1455,7 @@ int pci_unmap_int (pcici_t tag) */ irq = getirq (tag); - if (irq >= PCI_MAX_IRQ) { - printf ("\tillegal irq %d.\n", irq); + if (irq == 0xff) { return (0); }; |
