[ros-diffs] [cgutman] 53247: [HALACPI] - Fix several bugs involving garbage data in a PHYSICAL_ADDRESS struct

cgutman at svn.reactos.org cgutman at svn.reactos.org
Mon Aug 15 01:19:21 UTC 2011


Author: cgutman
Date: Mon Aug 15 01:19:20 2011
New Revision: 53247

URL: http://svn.reactos.org/svn/reactos?rev=53247&view=rev
Log:
[HALACPI]
- Fix several bugs involving garbage data in a PHYSICAL_ADDRESS struct

Modified:
    trunk/reactos/hal/halx86/generic/acpi/halacpi.c

Modified: trunk/reactos/hal/halx86/generic/acpi/halacpi.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/acpi/halacpi.c?rev=53247&r1=53246&r2=53247&view=diff
==============================================================================
--- trunk/reactos/hal/halx86/generic/acpi/halacpi.c [iso-8859-1] (original)
+++ trunk/reactos/hal/halx86/generic/acpi/halacpi.c [iso-8859-1] Mon Aug 15 01:19:20 2011
@@ -166,6 +166,7 @@
         if (Fadt)
         {
             /* Grab the DSDT address and assume 2 pages */
+            PhysicalAddress.HighPart = 0;
             PhysicalAddress.LowPart = Fadt->dsdt;
             TableLength = 2 * PAGE_SIZE;
             
@@ -263,6 +264,7 @@
             {
                 /* Read the 32-bit physical address */
                 PhysicalAddress.LowPart = Rsdt->Tables[CurrentEntry];
+                PhysicalAddress.HighPart = 0;
             }
             else
             {
@@ -603,6 +605,7 @@
     PageCount = BYTES_TO_PAGES(NodeLength);
 
     /* Allocate the memory */
+    PhysicalAddress.HighPart = 0;
     PhysicalAddress.LowPart = HalpAllocPhysicalMemory(LoaderBlock,
                                                       0x1000000,
                                                       PageCount,
@@ -652,12 +655,13 @@
     /* Find the RSDT */
     Status = HalpAcpiFindRsdtPhase0(LoaderBlock, &AcpiMultiNode);
     if (!NT_SUCCESS(Status)) return Status;
+
+    PhysicalAddress.QuadPart = AcpiMultiNode->RsdtAddress.QuadPart;
    
     /* Map the RSDT */
     if (LoaderBlock)
     {
         /* Phase0: Use HAL Heap to map the RSDT, we assume it's about 2 pages */
-        PhysicalAddress.QuadPart = AcpiMultiNode->RsdtAddress.QuadPart;
         MappedAddress = HalpMapPhysicalMemory64(PhysicalAddress, 2);
     }
     else




More information about the Ros-diffs mailing list