Author: cgutman
Date: Tue Oct 12 20:02:15 2010
New Revision: 49127
URL:
http://svn.reactos.org/svn/reactos?rev=49127&view=rev
Log:
[HAL]
- Check that the interrupt line is not 255
- Check that the interrupt pin is not 0
- Fixes a failed assertion that Caemyr experienced with an ATI Rage graphics card
Modified:
trunk/reactos/hal/halx86/generic/legacy/bus/pcibus.c
trunk/reactos/hal/halx86/generic/legacy/bussupp.c
Modified: trunk/reactos/hal/halx86/generic/legacy/bus/pcibus.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/legacy/…
==============================================================================
--- trunk/reactos/hal/halx86/generic/legacy/bus/pcibus.c [iso-8859-1] (original)
+++ trunk/reactos/hal/halx86/generic/legacy/bus/pcibus.c [iso-8859-1] Tue Oct 12 20:02:15
2010
@@ -753,7 +753,9 @@
}
/* Interrupt resource */
- if (0 != PciConfig.u.type0.InterruptLine)
+ if (0 != PciConfig.u.type0.InterruptPin &&
+ 0 != PciConfig.u.type0.InterruptLine &&
+ 0xFF != PciConfig.u.type0.InterruptLine)
ResourceCount++;
/* Allocate output buffer and initialize */
@@ -806,7 +808,9 @@
}
}
- if (0 != PciConfig.u.type0.InterruptLine)
+ if (0 != PciConfig.u.type0.InterruptPin &&
+ 0 != PciConfig.u.type0.InterruptLine &&
+ 0xFF != PciConfig.u.type0.InterruptLine)
{
Descriptor->Type = CmResourceTypeInterrupt;
Descriptor->ShareDisposition = CmResourceShareShared; /* FIXME Just a
guess */
Modified: trunk/reactos/hal/halx86/generic/legacy/bussupp.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/legacy/…
==============================================================================
--- trunk/reactos/hal/halx86/generic/legacy/bussupp.c [iso-8859-1] (original)
+++ trunk/reactos/hal/halx86/generic/legacy/bussupp.c [iso-8859-1] Tue Oct 12 20:02:15
2010
@@ -785,7 +785,9 @@
if ((PciData->Status & PCI_STATUS_DEVSEL) == 0x200) DbgPrint(" medium
devsel,");
if ((PciData->Status & PCI_STATUS_DEVSEL) == 0x400) DbgPrint(" fast
devsel,");
DbgPrint(" latency %d", PciData->LatencyTimer);
- if (PciData->u.type0.InterruptLine) DbgPrint(", IRQ %02d",
PciData->u.type0.InterruptLine);
+ if (PciData->u.type0.InterruptPin != 0 &&
+ PciData->u.type0.InterruptLine != 0 &&
+ PciData->u.type0.InterruptLine != 0xFF) DbgPrint(", IRQ %02d",
PciData->u.type0.InterruptLine);
DbgPrint("\n");
/* Scan addresses */