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/i386/hardware.c?rev=53891&r1=53890&r2=53891&view=diff
==============================================================================
--- 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];


Reply via email to