\r
#include <PiPei.h>\r
\r
-#include <Library/ArmPlatformLib.h>\r
+#include <Library/ArmMmuLib.h>\r
+#include <Library/ArmVirtMemInfoLib.h>\r
#include <Library/DebugLib.h>\r
#include <Library/HobLib.h>\r
#include <Library/MemoryAllocationLib.h>\r
RETURN_STATUS Status;\r
\r
// Get Virtual Memory Map from the Platform Library\r
- ArmPlatformGetVirtualMemoryMap (&MemoryTable);\r
+ ArmVirtGetMemoryMap (&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
)\r
{\r
EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttributes;\r
+ UINT64 SystemMemoryTop;\r
\r
// Ensure PcdSystemMemorySize has been set\r
ASSERT (PcdGet64 (PcdSystemMemorySize) != 0);\r
ResourceAttributes = (\r
EFI_RESOURCE_ATTRIBUTE_PRESENT |\r
EFI_RESOURCE_ATTRIBUTE_INITIALIZED |\r
- EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE |\r
- EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE |\r
- EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE |\r
EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE |\r
EFI_RESOURCE_ATTRIBUTE_TESTED\r
);\r
\r
- BuildResourceDescriptorHob (\r
- EFI_RESOURCE_SYSTEM_MEMORY,\r
- ResourceAttributes,\r
- PcdGet64 (PcdSystemMemoryBase),\r
- PcdGet64 (PcdSystemMemorySize)\r
- );\r
+ SystemMemoryTop = PcdGet64 (PcdSystemMemoryBase) +\r
+ PcdGet64 (PcdSystemMemorySize);\r
+\r
+ if (SystemMemoryTop - 1 > MAX_ALLOC_ADDRESS) {\r
+ BuildResourceDescriptorHob (\r
+ EFI_RESOURCE_SYSTEM_MEMORY,\r
+ ResourceAttributes,\r
+ PcdGet64 (PcdSystemMemoryBase),\r
+ (UINT64)MAX_ALLOC_ADDRESS - PcdGet64 (PcdSystemMemoryBase) + 1\r
+ );\r
+ BuildResourceDescriptorHob (\r
+ EFI_RESOURCE_SYSTEM_MEMORY,\r
+ ResourceAttributes,\r
+ (UINT64)MAX_ALLOC_ADDRESS + 1,\r
+ SystemMemoryTop - MAX_ALLOC_ADDRESS - 1\r
+ );\r
+ } else {\r
+ BuildResourceDescriptorHob (\r
+ EFI_RESOURCE_SYSTEM_MEMORY,\r
+ ResourceAttributes,\r
+ PcdGet64 (PcdSystemMemoryBase),\r
+ PcdGet64 (PcdSystemMemorySize)\r
+ );\r
+ }\r
\r
//\r
// When running under virtualization, the PI/UEFI memory region may be\r