]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
CorebootPayloadPkg: Use extra braces to prevent gcc compile fail
[mirror_edk2.git] / ArmPlatformPkg / MemoryInitPei / MemoryInitPeiLib.c
index fa24c45ea8e3ff8b7f2ffaa18454e051b9f3d9a2..577b288400fbfd87f0de72438c3aebd49dcc9230 100755 (executable)
@@ -1,6 +1,6 @@
 /** @file\r
 *\r
-*  Copyright (c) 2011, ARM Limited. All rights reserved.\r
+*  Copyright (c) 2011-2014, ARM Limited. All rights reserved.\r
 *\r
 *  This program and the accompanying materials\r
 *  are licensed and made available under the terms and conditions of the BSD License\r
@@ -33,13 +33,17 @@ InitMmu (
   ARM_MEMORY_REGION_DESCRIPTOR  *MemoryTable;\r
   VOID                          *TranslationTableBase;\r
   UINTN                         TranslationTableSize;\r
+  RETURN_STATUS                 Status;\r
 \r
   // Get Virtual Memory Map from the Platform Library\r
   ArmPlatformGetVirtualMemoryMap (&MemoryTable);\r
 \r
   //Note: Because we called PeiServicesInstallPeiMemory() before to call InitMmu() the MMU Page Table resides in\r
   //      DRAM (even at the top of DRAM as it is the first permanent memory allocation)\r
-  ArmConfigureMmu (MemoryTable, &TranslationTableBase, &TranslationTableSize);\r
+  Status = ArmConfigureMmu (MemoryTable, &TranslationTableBase, &TranslationTableSize);\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((EFI_D_ERROR, "Error: Failed to enable MMU\n"));\r
+  }\r
 }\r
 \r
 /*++\r
@@ -74,7 +78,7 @@ MemoryPeim (
   BOOLEAN                     Found;\r
 \r
   // Ensure PcdSystemMemorySize has been set\r
-  ASSERT (PcdGet32 (PcdSystemMemorySize) != 0);\r
+  ASSERT (PcdGet64 (PcdSystemMemorySize) != 0);\r
 \r
   //\r
   // Now, the permanent memory has been installed, we can call AllocatePages()\r
@@ -93,38 +97,38 @@ MemoryPeim (
   BuildResourceDescriptorHob (\r
       EFI_RESOURCE_SYSTEM_MEMORY,\r
       ResourceAttributes,\r
-      PcdGet32 (PcdSystemMemoryBase),\r
-      PcdGet32 (PcdSystemMemorySize)\r
+      PcdGet64 (PcdSystemMemoryBase),\r
+      PcdGet64 (PcdSystemMemorySize)\r
   );\r
 \r
-  SystemMemoryTop = PcdGet32 (PcdSystemMemoryBase) + PcdGet32 (PcdSystemMemorySize);\r
-  FdTop = PcdGet32(PcdFdBaseAddress) + PcdGet32(PcdFdSize);\r
+  SystemMemoryTop = (EFI_PHYSICAL_ADDRESS)PcdGet64 (PcdSystemMemoryBase) + (EFI_PHYSICAL_ADDRESS)PcdGet64 (PcdSystemMemorySize);\r
+  FdTop = (EFI_PHYSICAL_ADDRESS)PcdGet64 (PcdFdBaseAddress) + (EFI_PHYSICAL_ADDRESS)PcdGet32 (PcdFdSize);\r
 \r
   // EDK2 does not have the concept of boot firmware copied into DRAM. To avoid the DXE\r
   // core to overwrite this area we must mark the region with the attribute non-present\r
-  if ((PcdGet32 (PcdFdBaseAddress) >= PcdGet32 (PcdSystemMemoryBase)) && (FdTop <= SystemMemoryTop)) {\r
+  if ((PcdGet64 (PcdFdBaseAddress) >= PcdGet64 (PcdSystemMemoryBase)) && (FdTop <= SystemMemoryTop)) {\r
     Found = FALSE;\r
 \r
     // Search for System Memory Hob that contains the firmware\r
     NextHob.Raw = GetHobList ();\r
     while ((NextHob.Raw = GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, NextHob.Raw)) != NULL) {\r
       if ((NextHob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) &&\r
-          (PcdGet32(PcdFdBaseAddress) >= NextHob.ResourceDescriptor->PhysicalStart) &&\r
+          (PcdGet64 (PcdFdBaseAddress) >= NextHob.ResourceDescriptor->PhysicalStart) &&\r
           (FdTop <= NextHob.ResourceDescriptor->PhysicalStart + NextHob.ResourceDescriptor->ResourceLength))\r
       {\r
         ResourceAttributes = NextHob.ResourceDescriptor->ResourceAttribute;\r
         ResourceLength = NextHob.ResourceDescriptor->ResourceLength;\r
         ResourceTop = NextHob.ResourceDescriptor->PhysicalStart + ResourceLength;\r
 \r
-        if (PcdGet32(PcdFdBaseAddress) == NextHob.ResourceDescriptor->PhysicalStart) {\r
+        if (PcdGet64 (PcdFdBaseAddress) == NextHob.ResourceDescriptor->PhysicalStart) {\r
           if (SystemMemoryTop == FdTop) {\r
             NextHob.ResourceDescriptor->ResourceAttribute = ResourceAttributes & ~EFI_RESOURCE_ATTRIBUTE_PRESENT;\r
           } else {\r
             // Create the System Memory HOB for the firmware with the non-present attribute\r
             BuildResourceDescriptorHob (EFI_RESOURCE_SYSTEM_MEMORY,\r
                                         ResourceAttributes & ~EFI_RESOURCE_ATTRIBUTE_PRESENT,\r
-                                        PcdGet32(PcdFdBaseAddress),\r
-                                        PcdGet32(PcdFdSize));\r
+                                        PcdGet64 (PcdFdBaseAddress),\r
+                                        PcdGet32 (PcdFdSize));\r
 \r
             // Top of the FD is system memory available for UEFI\r
             NextHob.ResourceDescriptor->PhysicalStart += PcdGet32(PcdFdSize);\r
@@ -134,11 +138,11 @@ MemoryPeim (
           // Create the System Memory HOB for the firmware with the non-present attribute\r
           BuildResourceDescriptorHob (EFI_RESOURCE_SYSTEM_MEMORY,\r
                                       ResourceAttributes & ~EFI_RESOURCE_ATTRIBUTE_PRESENT,\r
-                                      PcdGet32(PcdFdBaseAddress),\r
-                                      PcdGet32(PcdFdSize));\r
+                                      PcdGet64 (PcdFdBaseAddress),\r
+                                      PcdGet32 (PcdFdSize));\r
 \r
           // Update the HOB\r
-          NextHob.ResourceDescriptor->ResourceLength = PcdGet32(PcdFdBaseAddress) - NextHob.ResourceDescriptor->PhysicalStart;\r
+          NextHob.ResourceDescriptor->ResourceLength = PcdGet64 (PcdFdBaseAddress) - NextHob.ResourceDescriptor->PhysicalStart;\r
 \r
           // If there is some memory available on the top of the FD then create a HOB\r
           if (FdTop < NextHob.ResourceDescriptor->PhysicalStart + ResourceLength) {\r