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/b... ============================================================================== --- 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/b... ============================================================================== --- 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 */