]> git.proxmox.com Git - mirror_edk2.git/blobdiff - StandaloneMmPkg/Library/StandaloneMmMemLib/StandaloneMmMemLib.c
StandaloneMmPkg: StandaloneMmMemLib: Extends support for X64 architecture
[mirror_edk2.git] / StandaloneMmPkg / Library / StandaloneMmMemLib / StandaloneMmMemLib.c
index b533bd8390cd1efe90bd447a8987c5eee491f6c0..2737f95315eb6f39e9fc06668812f1e7be406a23 100644 (file)
@@ -37,6 +37,27 @@ MmMemLibInternalCalculateMaximumSupportAddress (
   VOID\r
   );\r
 \r
+/**\r
+  Initialize cached Mmram Ranges from HOB.\r
+\r
+  @retval EFI_UNSUPPORTED   The routine is unable to extract MMRAM information.\r
+  @retval EFI_SUCCESS       MmRanges are populated successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+MmMemLibInternalPopulateMmramRanges (\r
+  VOID\r
+  );\r
+\r
+/**\r
+  Deinitialize cached Mmram Ranges.\r
+\r
+**/\r
+VOID\r
+MmMemLibInternalFreeMmramRanges (\r
+  VOID\r
+  );\r
+\r
 /**\r
   This function check if the buffer is valid per processor architecture and not overlap with MMRAM.\r
 \r
@@ -253,11 +274,42 @@ MemLibConstructor (
   IN EFI_MM_SYSTEM_TABLE    *MmSystemTable\r
   )\r
 {\r
+  EFI_STATUS Status;\r
 \r
   //\r
   // Calculate and save maximum support address\r
   //\r
   MmMemLibInternalCalculateMaximumSupportAddress ();\r
 \r
+  //\r
+  // Initialize cached Mmram Ranges from HOB.\r
+  //\r
+  Status = MmMemLibInternalPopulateMmramRanges ();\r
+\r
+  return Status;\r
+}\r
+\r
+/**\r
+  Destructor for Mm Mem library.\r
+\r
+  @param ImageHandle    The image handle of the process.\r
+  @param MmSystemTable  The EFI System Table pointer.\r
+\r
+  @retval EFI_SUCCESS   The constructor always returns EFI_SUCCESS.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+MemLibDestructor (\r
+  IN EFI_HANDLE             ImageHandle,\r
+  IN EFI_MM_SYSTEM_TABLE    *MmSystemTable\r
+  )\r
+{\r
+\r
+  //\r
+  // Deinitialize cached Mmram Ranges.\r
+  //\r
+  MmMemLibInternalFreeMmramRanges ();\r
+\r
   return EFI_SUCCESS;\r
 }\r