return LShiftU64 (Size, 16);\r
}\r
\r
+/**\r
+ Publish PEI core memory\r
+\r
+ @return EFI_SUCCESS The PEIM initialized successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+PublishPeiMemory (\r
+ VOID\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ EFI_PHYSICAL_ADDRESS MemoryBase;\r
+ UINT64 MemorySize;\r
+ UINT64 LowerMemorySize;\r
+\r
+ LowerMemorySize = GetSystemMemorySizeBelow4gb ();\r
+\r
+ MemoryBase = PcdGet32 (PcdOvmfMemFvBase) + PcdGet32 (PcdOvmfMemFvSize);\r
+ MemorySize = LowerMemorySize - MemoryBase;\r
+ if (MemorySize > SIZE_64MB) {\r
+ MemoryBase = LowerMemorySize - SIZE_64MB;\r
+ MemorySize = SIZE_64MB;\r
+ }\r
+\r
+ //\r
+ // Publish this memory to the PEI Core\r
+ //\r
+ Status = PublishSystemMemory(MemoryBase, MemorySize);\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ return Status;\r
+}\r
+\r
\r
/**\r
Peform Memory Detection\r
\r
- @return EFI_SUCCESS The PEIM initialized successfully.\r
+ @return Top of memory\r
\r
**/\r
EFI_PHYSICAL_ADDRESS\r