Author: dgorbachev
Date: Thu Sep 29 13:20:24 2011
New Revision: 53891
URL:
http://svn.reactos.org/svn/reactos?rev=53891&view=rev
Log:
[FREELDR]
- Silence an error about unsupported PnP BIOS function.
- Do not share edge-triggered interrupts (not implemented). Bug #6508.
Modified:
trunk/reactos/boot/freeldr/freeldr/arch/i386/hardware.c
Modified: trunk/reactos/boot/freeldr/freeldr/arch/i386/hardware.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/arch/…
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/arch/i386/hardware.c [iso-8859-1] (original)
+++ trunk/reactos/boot/freeldr/freeldr/arch/i386/hardware.c [iso-8859-1] Thu Sep 29
13:20:24 2011
@@ -221,12 +221,19 @@
TRACE("PnP-BIOS not supported\n");
return;
}
+
+ TRACE("PnP-BIOS supported\n");
TRACE("Signature '%c%c%c%c'\n",
- InstData->Signature[0], InstData->Signature[1],
- InstData->Signature[2], InstData->Signature[3]);
-
+ InstData->Signature[0], InstData->Signature[1],
+ InstData->Signature[2], InstData->Signature[3]);
x = PnpBiosGetDeviceNodeCount(&NodeSize, &NodeCount);
+ if (x == 0x82)
+ {
+ TRACE("PnP-BIOS function 'Get Number of System Device Nodes' not
supported\n");
+ return;
+ }
+
NodeCount &= 0xFF; // needed since some fscked up BIOSes return
// wrong info (e.g. Mac Virtual PC)
// e.g. look:
http://my.execpc.com/~geezer/osd/pnp/pnp16.c
@@ -235,7 +242,6 @@
ERR("PnP-BIOS failed to enumerate device nodes\n");
return;
}
- TRACE("PnP-BIOS supported\n");
TRACE("MaxNodeSize %u NodeCount %u\n", NodeSize, NodeCount);
TRACE("Estimated buffer size %u\n", NodeSize * NodeCount);
@@ -1354,7 +1360,7 @@
ControllerNumber = 0;
BasePtr = (PUSHORT)0x400;
- for (i = 0; i < 4; i++, BasePtr++)
+ for (i = 0; i < 2; i++, BasePtr++)
{
Base = (ULONG)*BasePtr;
if (Base == 0)
@@ -1394,7 +1400,7 @@
/* Set Interrupt */
PartialDescriptor = &PartialResourceList->PartialDescriptors[1];
PartialDescriptor->Type = CmResourceTypeInterrupt;
- PartialDescriptor->ShareDisposition = CmResourceShareShared;
+ PartialDescriptor->ShareDisposition = CmResourceShareUndetermined;
PartialDescriptor->Flags = CM_RESOURCE_INTERRUPT_LATCHED;
PartialDescriptor->u.Interrupt.Level = Irq[i];
PartialDescriptor->u.Interrupt.Vector = Irq[i];