]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Pei/Image/Image.c
MdeModulePkg: Apply uncrustify changes
[mirror_edk2.git] / MdeModulePkg / Core / Pei / Image / Image.c
index d8f4525c3f0aeca826c597c950cac8b4f81bd6ec..cee9f09c6ea61e31daaae68a01ef6e57ffaf23c7 100644 (file)
@@ -8,13 +8,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 \r
 #include "PeiMain.h"\r
 \r
-\r
-EFI_PEI_LOAD_FILE_PPI   mPeiLoadImagePpi = {\r
+EFI_PEI_LOAD_FILE_PPI  mPeiLoadImagePpi = {\r
   PeiLoadImageLoadImageWrapper\r
 };\r
 \r
-\r
-EFI_PEI_PPI_DESCRIPTOR     gPpiLoadFilePpiList = {\r
+EFI_PEI_PPI_DESCRIPTOR  gPpiLoadFilePpiList = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gEfiPeiLoadFilePpiGuid,\r
   &mPeiLoadImagePpi\r
@@ -36,17 +34,17 @@ EFI_PEI_PPI_DESCRIPTOR     gPpiLoadFilePpiList = {
 EFI_STATUS\r
 EFIAPI\r
 PeiImageRead (\r
-  IN     VOID    *FileHandle,\r
-  IN     UINTN   FileOffset,\r
-  IN     UINTN   *ReadSize,\r
-  OUT    VOID    *Buffer\r
+  IN     VOID   *FileHandle,\r
+  IN     UINTN  FileOffset,\r
+  IN     UINTN  *ReadSize,\r
+  OUT    VOID   *Buffer\r
   )\r
 {\r
-  CHAR8 *Destination8;\r
-  CHAR8 *Source8;\r
+  CHAR8  *Destination8;\r
+  CHAR8  *Source8;\r
 \r
-  Destination8  = Buffer;\r
-  Source8       = (CHAR8 *) ((UINTN) FileHandle + FileOffset);\r
+  Destination8 = Buffer;\r
+  Source8      = (CHAR8 *)((UINTN)FileHandle + FileOffset);\r
   if (Destination8 != Source8) {\r
     CopyMem (Destination8, Source8, *ReadSize);\r
   }\r
@@ -68,59 +66,61 @@ PeiImageRead (
 **/\r
 EFI_STATUS\r
 CheckAndMarkFixLoadingMemoryUsageBitMap (\r
-  IN  PEI_CORE_INSTANCE             *Private,\r
-  IN  EFI_PHYSICAL_ADDRESS          ImageBase,\r
-  IN  UINT32                        ImageSize\r
+  IN  PEI_CORE_INSTANCE     *Private,\r
+  IN  EFI_PHYSICAL_ADDRESS  ImageBase,\r
+  IN  UINT32                ImageSize\r
   )\r
 {\r
-   UINT32                             DxeCodePageNumber;\r
-   UINT64                             ReservedCodeSize;\r
-   EFI_PHYSICAL_ADDRESS               PeiCodeBase;\r
-   UINT32                             BaseOffsetPageNumber;\r
-   UINT32                             TopOffsetPageNumber;\r
-   UINT32                             Index;\r
-   UINT64                             *MemoryUsageBitMap;\r
-\r
-\r
-   //\r
-   // The reserved code range includes RuntimeCodePage range, Boot time code range and PEI code range.\r
-   //\r
-   DxeCodePageNumber = PcdGet32(PcdLoadFixAddressBootTimeCodePageNumber);\r
-   DxeCodePageNumber += PcdGet32(PcdLoadFixAddressRuntimeCodePageNumber);\r
-   ReservedCodeSize  = EFI_PAGES_TO_SIZE(DxeCodePageNumber + PcdGet32(PcdLoadFixAddressPeiCodePageNumber));\r
-   PeiCodeBase       = Private->LoadModuleAtFixAddressTopAddress - ReservedCodeSize;\r
-\r
-   //\r
-   // Test the memory range for loading the image in the PEI code range.\r
-   //\r
-   if ((Private->LoadModuleAtFixAddressTopAddress - EFI_PAGES_TO_SIZE(DxeCodePageNumber)) < (ImageBase + ImageSize) ||\r
-       (PeiCodeBase > ImageBase)) {\r
-     return EFI_NOT_FOUND;\r
-   }\r
-\r
-   //\r
-   // Test if the memory is available or not.\r
-   //\r
-   MemoryUsageBitMap    = Private->PeiCodeMemoryRangeUsageBitMap;\r
-   BaseOffsetPageNumber = EFI_SIZE_TO_PAGES((UINT32)(ImageBase - PeiCodeBase));\r
-   TopOffsetPageNumber  = EFI_SIZE_TO_PAGES((UINT32)(ImageBase + ImageSize - PeiCodeBase));\r
-   for (Index = BaseOffsetPageNumber; Index < TopOffsetPageNumber; Index ++) {\r
-     if ((MemoryUsageBitMap[Index / 64] & LShiftU64(1, (Index % 64))) != 0) {\r
-       //\r
-       // This page is already used.\r
-       //\r
-       return EFI_NOT_FOUND;\r
-     }\r
-   }\r
-\r
-   //\r
-   // Being here means the memory range is available.  So mark the bits for the memory range\r
-   //\r
-   for (Index = BaseOffsetPageNumber; Index < TopOffsetPageNumber; Index ++) {\r
-     MemoryUsageBitMap[Index / 64] |= LShiftU64(1, (Index % 64));\r
-   }\r
-   return  EFI_SUCCESS;\r
+  UINT32                DxeCodePageNumber;\r
+  UINT64                ReservedCodeSize;\r
+  EFI_PHYSICAL_ADDRESS  PeiCodeBase;\r
+  UINT32                BaseOffsetPageNumber;\r
+  UINT32                TopOffsetPageNumber;\r
+  UINT32                Index;\r
+  UINT64                *MemoryUsageBitMap;\r
+\r
+  //\r
+  // The reserved code range includes RuntimeCodePage range, Boot time code range and PEI code range.\r
+  //\r
+  DxeCodePageNumber  = PcdGet32 (PcdLoadFixAddressBootTimeCodePageNumber);\r
+  DxeCodePageNumber += PcdGet32 (PcdLoadFixAddressRuntimeCodePageNumber);\r
+  ReservedCodeSize   = EFI_PAGES_TO_SIZE (DxeCodePageNumber + PcdGet32 (PcdLoadFixAddressPeiCodePageNumber));\r
+  PeiCodeBase        = Private->LoadModuleAtFixAddressTopAddress - ReservedCodeSize;\r
+\r
+  //\r
+  // Test the memory range for loading the image in the PEI code range.\r
+  //\r
+  if (((Private->LoadModuleAtFixAddressTopAddress - EFI_PAGES_TO_SIZE (DxeCodePageNumber)) < (ImageBase + ImageSize)) ||\r
+      (PeiCodeBase > ImageBase))\r
+  {\r
+    return EFI_NOT_FOUND;\r
+  }\r
+\r
+  //\r
+  // Test if the memory is available or not.\r
+  //\r
+  MemoryUsageBitMap    = Private->PeiCodeMemoryRangeUsageBitMap;\r
+  BaseOffsetPageNumber = EFI_SIZE_TO_PAGES ((UINT32)(ImageBase - PeiCodeBase));\r
+  TopOffsetPageNumber  = EFI_SIZE_TO_PAGES ((UINT32)(ImageBase + ImageSize - PeiCodeBase));\r
+  for (Index = BaseOffsetPageNumber; Index < TopOffsetPageNumber; Index++) {\r
+    if ((MemoryUsageBitMap[Index / 64] & LShiftU64 (1, (Index % 64))) != 0) {\r
+      //\r
+      // This page is already used.\r
+      //\r
+      return EFI_NOT_FOUND;\r
+    }\r
+  }\r
+\r
+  //\r
+  // Being here means the memory range is available.  So mark the bits for the memory range\r
+  //\r
+  for (Index = BaseOffsetPageNumber; Index < TopOffsetPageNumber; Index++) {\r
+    MemoryUsageBitMap[Index / 64] |= LShiftU64 (1, (Index % 64));\r
+  }\r
+\r
+  return EFI_SUCCESS;\r
 }\r
+\r
 /**\r
 \r
   Get the fixed loading address from image header assigned by build tool. This function only be called\r
@@ -135,109 +135,114 @@ CheckAndMarkFixLoadingMemoryUsageBitMap (
 \r
 **/\r
 EFI_STATUS\r
-GetPeCoffImageFixLoadingAssignedAddress(\r
+GetPeCoffImageFixLoadingAssignedAddress (\r
   IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext,\r
   IN     PEI_CORE_INSTANCE             *Private\r
   )\r
 {\r
-   UINTN                              SectionHeaderOffset;\r
-   EFI_STATUS                         Status;\r
-   EFI_IMAGE_SECTION_HEADER           SectionHeader;\r
-   EFI_IMAGE_OPTIONAL_HEADER_UNION    *ImgHdr;\r
-   EFI_PHYSICAL_ADDRESS               FixLoadingAddress;\r
-   UINT16                             Index;\r
-   UINTN                              Size;\r
-   UINT16                             NumberOfSections;\r
-   UINT64                             ValueInSectionHeader;\r
-\r
-\r
-   FixLoadingAddress = 0;\r
-   Status = EFI_NOT_FOUND;\r
-\r
-   //\r
-   // Get PeHeader pointer\r
-   //\r
-   ImgHdr = (EFI_IMAGE_OPTIONAL_HEADER_UNION *)((CHAR8* )ImageContext->Handle + ImageContext->PeCoffHeaderOffset);\r
-   if (ImageContext->IsTeImage) {\r
-     //\r
-     // for TE image, the fix loading address is saved in first section header that doesn't point\r
-     // to code section.\r
-     //\r
-     SectionHeaderOffset = sizeof (EFI_TE_IMAGE_HEADER);\r
-     NumberOfSections = ImgHdr->Te.NumberOfSections;\r
-   } else {\r
-     SectionHeaderOffset = ImageContext->PeCoffHeaderOffset +\r
-                           sizeof (UINT32) +\r
-                           sizeof (EFI_IMAGE_FILE_HEADER) +\r
-                           ImgHdr->Pe32.FileHeader.SizeOfOptionalHeader;\r
-      NumberOfSections = ImgHdr->Pe32.FileHeader.NumberOfSections;\r
-   }\r
-   //\r
-   // Get base address from the first section header that doesn't point to code section.\r
-   //\r
-   for (Index = 0; Index < NumberOfSections; Index++) {\r
-     //\r
-     // Read section header from file\r
-     //\r
-     Size = sizeof (EFI_IMAGE_SECTION_HEADER);\r
-     Status = ImageContext->ImageRead (\r
-                              ImageContext->Handle,\r
-                              SectionHeaderOffset,\r
-                              &Size,\r
-                              &SectionHeader\r
-                              );\r
-     if (EFI_ERROR (Status)) {\r
-       return Status;\r
-     }\r
-\r
-     Status = EFI_NOT_FOUND;\r
-\r
-     if ((SectionHeader.Characteristics & EFI_IMAGE_SCN_CNT_CODE) == 0) {\r
-       //\r
-       // Build tool will save the address in PointerToRelocations & PointerToLineNumbers fields in the first section header\r
-       // that doesn't point to code section in image header, as well as ImageBase field of image header. A notable thing is\r
-       // that for PEIM, the value in ImageBase field may not be equal to the value in PointerToRelocations & PointerToLineNumbers because\r
-       // for XIP PEIM, ImageBase field holds the image base address running on the Flash. And PointerToRelocations & PointerToLineNumbers\r
-       // hold the image base address when it is shadow to the memory. And there is an assumption that when the feature is enabled, if a\r
-       // module is assigned a loading address by tools, PointerToRelocations & PointerToLineNumbers fields should NOT be Zero, or\r
-       // else, these 2 fields should be set to Zero\r
-       //\r
-       ValueInSectionHeader = ReadUnaligned64((UINT64*)&SectionHeader.PointerToRelocations);\r
-       if (ValueInSectionHeader != 0) {\r
-         //\r
-         // Found first section header that doesn't point to code section.\r
-         //\r
-         if ((INT64)PcdGet64(PcdLoadModuleAtFixAddressEnable) > 0) {\r
-           //\r
-           // When LMFA feature is configured as Load Module at Fixed Absolute Address mode, PointerToRelocations & PointerToLineNumbers field\r
-           // hold the absolute address of image base running in memory\r
-           //\r
-           FixLoadingAddress = ValueInSectionHeader;\r
-         } else {\r
-           //\r
-           // When LMFA feature is configured as Load Module at Fixed offset mode, PointerToRelocations & PointerToLineNumbers field\r
-           // hold the offset relative to a platform-specific top address.\r
-           //\r
-           FixLoadingAddress = (EFI_PHYSICAL_ADDRESS)(Private->LoadModuleAtFixAddressTopAddress + (INT64)ValueInSectionHeader);\r
-         }\r
-         //\r
-         // Check if the memory range is available.\r
-         //\r
-         Status = CheckAndMarkFixLoadingMemoryUsageBitMap (Private, FixLoadingAddress, (UINT32) ImageContext->ImageSize);\r
-         if (!EFI_ERROR(Status)) {\r
-           //\r
-           // The assigned address is valid. Return the specified loading address\r
-           //\r
-           ImageContext->ImageAddress = FixLoadingAddress;\r
-         }\r
-       }\r
-       break;\r
-     }\r
-     SectionHeaderOffset += sizeof (EFI_IMAGE_SECTION_HEADER);\r
-   }\r
-   DEBUG ((DEBUG_INFO|DEBUG_LOAD, "LOADING MODULE FIXED INFO: Loading module at fixed address 0x%11p. Status= %r \n", (VOID *)(UINTN)FixLoadingAddress, Status));\r
-   return Status;\r
+  UINTN                            SectionHeaderOffset;\r
+  EFI_STATUS                       Status;\r
+  EFI_IMAGE_SECTION_HEADER         SectionHeader;\r
+  EFI_IMAGE_OPTIONAL_HEADER_UNION  *ImgHdr;\r
+  EFI_PHYSICAL_ADDRESS             FixLoadingAddress;\r
+  UINT16                           Index;\r
+  UINTN                            Size;\r
+  UINT16                           NumberOfSections;\r
+  UINT64                           ValueInSectionHeader;\r
+\r
+  FixLoadingAddress = 0;\r
+  Status            = EFI_NOT_FOUND;\r
+\r
+  //\r
+  // Get PeHeader pointer\r
+  //\r
+  ImgHdr = (EFI_IMAGE_OPTIONAL_HEADER_UNION *)((CHAR8 *)ImageContext->Handle + ImageContext->PeCoffHeaderOffset);\r
+  if (ImageContext->IsTeImage) {\r
+    //\r
+    // for TE image, the fix loading address is saved in first section header that doesn't point\r
+    // to code section.\r
+    //\r
+    SectionHeaderOffset = sizeof (EFI_TE_IMAGE_HEADER);\r
+    NumberOfSections    = ImgHdr->Te.NumberOfSections;\r
+  } else {\r
+    SectionHeaderOffset = ImageContext->PeCoffHeaderOffset +\r
+                          sizeof (UINT32) +\r
+                          sizeof (EFI_IMAGE_FILE_HEADER) +\r
+                          ImgHdr->Pe32.FileHeader.SizeOfOptionalHeader;\r
+    NumberOfSections = ImgHdr->Pe32.FileHeader.NumberOfSections;\r
+  }\r
+\r
+  //\r
+  // Get base address from the first section header that doesn't point to code section.\r
+  //\r
+  for (Index = 0; Index < NumberOfSections; Index++) {\r
+    //\r
+    // Read section header from file\r
+    //\r
+    Size   = sizeof (EFI_IMAGE_SECTION_HEADER);\r
+    Status = ImageContext->ImageRead (\r
+                             ImageContext->Handle,\r
+                             SectionHeaderOffset,\r
+                             &Size,\r
+                             &SectionHeader\r
+                             );\r
+    if (EFI_ERROR (Status)) {\r
+      return Status;\r
+    }\r
+\r
+    Status = EFI_NOT_FOUND;\r
+\r
+    if ((SectionHeader.Characteristics & EFI_IMAGE_SCN_CNT_CODE) == 0) {\r
+      //\r
+      // Build tool will save the address in PointerToRelocations & PointerToLineNumbers fields in the first section header\r
+      // that doesn't point to code section in image header, as well as ImageBase field of image header. A notable thing is\r
+      // that for PEIM, the value in ImageBase field may not be equal to the value in PointerToRelocations & PointerToLineNumbers because\r
+      // for XIP PEIM, ImageBase field holds the image base address running on the Flash. And PointerToRelocations & PointerToLineNumbers\r
+      // hold the image base address when it is shadow to the memory. And there is an assumption that when the feature is enabled, if a\r
+      // module is assigned a loading address by tools, PointerToRelocations & PointerToLineNumbers fields should NOT be Zero, or\r
+      // else, these 2 fields should be set to Zero\r
+      //\r
+      ValueInSectionHeader = ReadUnaligned64 ((UINT64 *)&SectionHeader.PointerToRelocations);\r
+      if (ValueInSectionHeader != 0) {\r
+        //\r
+        // Found first section header that doesn't point to code section.\r
+        //\r
+        if ((INT64)PcdGet64 (PcdLoadModuleAtFixAddressEnable) > 0) {\r
+          //\r
+          // When LMFA feature is configured as Load Module at Fixed Absolute Address mode, PointerToRelocations & PointerToLineNumbers field\r
+          // hold the absolute address of image base running in memory\r
+          //\r
+          FixLoadingAddress = ValueInSectionHeader;\r
+        } else {\r
+          //\r
+          // When LMFA feature is configured as Load Module at Fixed offset mode, PointerToRelocations & PointerToLineNumbers field\r
+          // hold the offset relative to a platform-specific top address.\r
+          //\r
+          FixLoadingAddress = (EFI_PHYSICAL_ADDRESS)(Private->LoadModuleAtFixAddressTopAddress + (INT64)ValueInSectionHeader);\r
+        }\r
+\r
+        //\r
+        // Check if the memory range is available.\r
+        //\r
+        Status = CheckAndMarkFixLoadingMemoryUsageBitMap (Private, FixLoadingAddress, (UINT32)ImageContext->ImageSize);\r
+        if (!EFI_ERROR (Status)) {\r
+          //\r
+          // The assigned address is valid. Return the specified loading address\r
+          //\r
+          ImageContext->ImageAddress = FixLoadingAddress;\r
+        }\r
+      }\r
+\r
+      break;\r
+    }\r
+\r
+    SectionHeaderOffset += sizeof (EFI_IMAGE_SECTION_HEADER);\r
+  }\r
+\r
+  DEBUG ((DEBUG_INFO|DEBUG_LOAD, "LOADING MODULE FIXED INFO: Loading module at fixed address 0x%11p. Status= %r \n", (VOID *)(UINTN)FixLoadingAddress, Status));\r
+  return Status;\r
 }\r
+\r
 /**\r
 \r
   Loads and relocates a PE/COFF image into memory.\r
@@ -258,30 +263,30 @@ GetPeCoffImageFixLoadingAssignedAddress(
 **/\r
 EFI_STATUS\r
 LoadAndRelocatePeCoffImage (\r
-  IN  EFI_PEI_FILE_HANDLE                       FileHandle,\r
-  IN  VOID                                      *Pe32Data,\r
-  OUT EFI_PHYSICAL_ADDRESS                      *ImageAddress,\r
-  OUT UINT64                                    *ImageSize,\r
-  OUT EFI_PHYSICAL_ADDRESS                      *EntryPoint\r
+  IN  EFI_PEI_FILE_HANDLE   FileHandle,\r
+  IN  VOID                  *Pe32Data,\r
+  OUT EFI_PHYSICAL_ADDRESS  *ImageAddress,\r
+  OUT UINT64                *ImageSize,\r
+  OUT EFI_PHYSICAL_ADDRESS  *EntryPoint\r
   )\r
 {\r
-  EFI_STATUS                            Status;\r
-  PE_COFF_LOADER_IMAGE_CONTEXT          ImageContext;\r
-  PEI_CORE_INSTANCE                     *Private;\r
-  UINT64                                AlignImageSize;\r
-  BOOLEAN                               IsXipImage;\r
-  EFI_STATUS                            ReturnStatus;\r
-  BOOLEAN                               IsS3Boot;\r
-  BOOLEAN                               IsPeiModule;\r
-  BOOLEAN                               IsRegisterForShadow;\r
-  EFI_FV_FILE_INFO                      FileInfo;\r
+  EFI_STATUS                    Status;\r
+  PE_COFF_LOADER_IMAGE_CONTEXT  ImageContext;\r
+  PEI_CORE_INSTANCE             *Private;\r
+  UINT64                        AlignImageSize;\r
+  BOOLEAN                       IsXipImage;\r
+  EFI_STATUS                    ReturnStatus;\r
+  BOOLEAN                       IsS3Boot;\r
+  BOOLEAN                       IsPeiModule;\r
+  BOOLEAN                       IsRegisterForShadow;\r
+  EFI_FV_FILE_INFO              FileInfo;\r
 \r
   Private = PEI_CORE_INSTANCE_FROM_PS_THIS (GetPeiServicesTablePointer ());\r
 \r
   ReturnStatus = EFI_SUCCESS;\r
   IsXipImage   = FALSE;\r
   ZeroMem (&ImageContext, sizeof (ImageContext));\r
-  ImageContext.Handle = Pe32Data;\r
+  ImageContext.Handle    = Pe32Data;\r
   ImageContext.ImageRead = PeiImageRead;\r
 \r
   Status = PeCoffLoaderGetImageInfo (&ImageContext);\r
@@ -296,16 +301,18 @@ LoadAndRelocatePeCoffImage (
   if (Private->HobList.HandoffInformationTable->BootMode == BOOT_ON_S3_RESUME) {\r
     IsS3Boot = TRUE;\r
   }\r
+\r
   IsRegisterForShadow = FALSE;\r
-  if ((Private->CurrentFileHandle == FileHandle)\r
-    && (Private->Fv[Private->CurrentPeimFvCount].PeimState[Private->CurrentPeimCount] == PEIM_STATE_REGISTER_FOR_SHADOW)) {\r
+  if (  (Private->CurrentFileHandle == FileHandle)\r
+     && (Private->Fv[Private->CurrentPeimFvCount].PeimState[Private->CurrentPeimCount] == PEIM_STATE_REGISTER_FOR_SHADOW))\r
+  {\r
     IsRegisterForShadow = TRUE;\r
   }\r
 \r
   //\r
   // XIP image that ImageAddress is same to Image handle.\r
   //\r
-  if (ImageContext.ImageAddress == (EFI_PHYSICAL_ADDRESS)(UINTN) Pe32Data) {\r
+  if (ImageContext.ImageAddress == (EFI_PHYSICAL_ADDRESS)(UINTN)Pe32Data) {\r
     IsXipImage = TRUE;\r
   }\r
 \r
@@ -319,9 +326,10 @@ LoadAndRelocatePeCoffImage (
   // Check whether the file type is PEI module.\r
   //\r
   IsPeiModule = FALSE;\r
-  if (FileInfo.FileType == EFI_FV_FILETYPE_PEI_CORE ||\r
-      FileInfo.FileType == EFI_FV_FILETYPE_PEIM ||\r
-      FileInfo.FileType == EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER) {\r
+  if ((FileInfo.FileType == EFI_FV_FILETYPE_PEI_CORE) ||\r
+      (FileInfo.FileType == EFI_FV_FILETYPE_PEIM) ||\r
+      (FileInfo.FileType == EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER))\r
+  {\r
     IsPeiModule = TRUE;\r
   }\r
 \r
@@ -332,14 +340,15 @@ LoadAndRelocatePeCoffImage (
       ((!IsPeiModule) || PcdGetBool (PcdMigrateTemporaryRamFirmwareVolumes) ||\r
        (!IsS3Boot && (PcdGetBool (PcdShadowPeimOnBoot) || IsRegisterForShadow)) ||\r
        (IsS3Boot && PcdGetBool (PcdShadowPeimOnS3Boot)))\r
-     ) {\r
-    DEBUG ((DEBUG_INFO|DEBUG_LOAD, "The image at 0x%08x without reloc section can't be loaded into memory\n", (UINTN) Pe32Data));\r
+      )\r
+  {\r
+    DEBUG ((DEBUG_INFO|DEBUG_LOAD, "The image at 0x%08x without reloc section can't be loaded into memory\n", (UINTN)Pe32Data));\r
   }\r
 \r
   //\r
   // Set default base address to current image address.\r
   //\r
-  ImageContext.ImageAddress = (EFI_PHYSICAL_ADDRESS)(UINTN) Pe32Data;\r
+  ImageContext.ImageAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)Pe32Data;\r
 \r
   //\r
   // Allocate Memory for the image when memory is ready, and image is relocatable.\r
@@ -350,12 +359,13 @@ LoadAndRelocatePeCoffImage (
       ((!IsPeiModule) || PcdGetBool (PcdMigrateTemporaryRamFirmwareVolumes) ||\r
        (!IsS3Boot && (PcdGetBool (PcdShadowPeimOnBoot) || IsRegisterForShadow)) ||\r
        (IsS3Boot && PcdGetBool (PcdShadowPeimOnS3Boot)))\r
-     ) {\r
+      )\r
+  {\r
     //\r
     // Allocate more buffer to avoid buffer overflow.\r
     //\r
     if (ImageContext.IsTeImage) {\r
-      AlignImageSize = ImageContext.ImageSize + ((EFI_TE_IMAGE_HEADER *) Pe32Data)->StrippedSize - sizeof (EFI_TE_IMAGE_HEADER);\r
+      AlignImageSize = ImageContext.ImageSize + ((EFI_TE_IMAGE_HEADER *)Pe32Data)->StrippedSize - sizeof (EFI_TE_IMAGE_HEADER);\r
     } else {\r
       AlignImageSize = ImageContext.ImageSize;\r
     }\r
@@ -364,38 +374,44 @@ LoadAndRelocatePeCoffImage (
       AlignImageSize += ImageContext.SectionAlignment;\r
     }\r
 \r
-    if (PcdGet64(PcdLoadModuleAtFixAddressEnable) != 0 && (Private->HobList.HandoffInformationTable->BootMode != BOOT_ON_S3_RESUME)) {\r
-      Status = GetPeCoffImageFixLoadingAssignedAddress(&ImageContext, Private);\r
-      if (EFI_ERROR (Status)){\r
+    if ((PcdGet64 (PcdLoadModuleAtFixAddressEnable) != 0) && (Private->HobList.HandoffInformationTable->BootMode != BOOT_ON_S3_RESUME)) {\r
+      Status = GetPeCoffImageFixLoadingAssignedAddress (&ImageContext, Private);\r
+      if (EFI_ERROR (Status)) {\r
         DEBUG ((DEBUG_INFO|DEBUG_LOAD, "LOADING MODULE FIXED ERROR: Failed to load module at fixed address. \n"));\r
         //\r
         // The PEIM is not assigned valid address, try to allocate page to load it.\r
         //\r
-        Status = PeiServicesAllocatePages (EfiBootServicesCode,\r
-                                           EFI_SIZE_TO_PAGES ((UINT32) AlignImageSize),\r
-                                           &ImageContext.ImageAddress);\r
+        Status = PeiServicesAllocatePages (\r
+                   EfiBootServicesCode,\r
+                   EFI_SIZE_TO_PAGES ((UINT32)AlignImageSize),\r
+                   &ImageContext.ImageAddress\r
+                   );\r
       }\r
     } else {\r
-      Status = PeiServicesAllocatePages (EfiBootServicesCode,\r
-                                         EFI_SIZE_TO_PAGES ((UINT32) AlignImageSize),\r
-                                         &ImageContext.ImageAddress);\r
+      Status = PeiServicesAllocatePages (\r
+                 EfiBootServicesCode,\r
+                 EFI_SIZE_TO_PAGES ((UINT32)AlignImageSize),\r
+                 &ImageContext.ImageAddress\r
+                 );\r
     }\r
+\r
     if (!EFI_ERROR (Status)) {\r
       //\r
       // Adjust the Image Address to make sure it is section alignment.\r
       //\r
       if (ImageContext.SectionAlignment > EFI_PAGE_SIZE) {\r
         ImageContext.ImageAddress =\r
-            (ImageContext.ImageAddress + ImageContext.SectionAlignment - 1) &\r
-            ~((UINTN)ImageContext.SectionAlignment - 1);\r
+          (ImageContext.ImageAddress + ImageContext.SectionAlignment - 1) &\r
+          ~((UINTN)ImageContext.SectionAlignment - 1);\r
       }\r
+\r
       //\r
       // Fix alignment requirement when Load IPF TeImage into memory.\r
       // Skip the reserved space for the stripped PeHeader when load TeImage into memory.\r
       //\r
       if (ImageContext.IsTeImage) {\r
         ImageContext.ImageAddress = ImageContext.ImageAddress +\r
-                                    ((EFI_TE_IMAGE_HEADER *) Pe32Data)->StrippedSize -\r
+                                    ((EFI_TE_IMAGE_HEADER *)Pe32Data)->StrippedSize -\r
                                     sizeof (EFI_TE_IMAGE_HEADER);\r
       }\r
     } else {\r
@@ -406,8 +422,8 @@ LoadAndRelocatePeCoffImage (
         //\r
         // XIP image can still be invoked.\r
         //\r
-        ImageContext.ImageAddress = (EFI_PHYSICAL_ADDRESS)(UINTN) Pe32Data;\r
-        ReturnStatus = EFI_WARN_BUFFER_TOO_SMALL;\r
+        ImageContext.ImageAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)Pe32Data;\r
+        ReturnStatus              = EFI_WARN_BUFFER_TOO_SMALL;\r
       } else {\r
         //\r
         // Non XIP image can't be loaded because no enough memory is allocated.\r
@@ -424,10 +440,12 @@ LoadAndRelocatePeCoffImage (
   Status = PeCoffLoaderLoadImage (&ImageContext);\r
   if (EFI_ERROR (Status)) {\r
     if (ImageContext.ImageError == IMAGE_ERROR_INVALID_SECTION_ALIGNMENT) {\r
-      DEBUG ((DEBUG_ERROR, "PEIM Image Address 0x%11p doesn't meet with section alignment 0x%x.\n", (VOID*)(UINTN)ImageContext.ImageAddress, ImageContext.SectionAlignment));\r
+      DEBUG ((DEBUG_ERROR, "PEIM Image Address 0x%11p doesn't meet with section alignment 0x%x.\n", (VOID *)(UINTN)ImageContext.ImageAddress, ImageContext.SectionAlignment));\r
     }\r
+\r
     return Status;\r
   }\r
+\r
   //\r
   // Relocate the image in our new buffer\r
   //\r
@@ -439,7 +457,7 @@ LoadAndRelocatePeCoffImage (
   //\r
   // Flush the instruction cache so the image data is written before we execute it\r
   //\r
-  if (ImageContext.ImageAddress != (EFI_PHYSICAL_ADDRESS)(UINTN) Pe32Data) {\r
+  if (ImageContext.ImageAddress != (EFI_PHYSICAL_ADDRESS)(UINTN)Pe32Data) {\r
     InvalidateInstructionCacheRange ((VOID *)(UINTN)ImageContext.ImageAddress, (UINTN)ImageContext.ImageSize);\r
   }\r
 \r
@@ -462,15 +480,15 @@ LoadAndRelocatePeCoffImage (
 **/\r
 EFI_STATUS\r
 LoadAndRelocatePeCoffImageInPlace (\r
-  IN  VOID    *Pe32Data,\r
-  IN  VOID    *ImageAddress\r
+  IN  VOID  *Pe32Data,\r
+  IN  VOID  *ImageAddress\r
   )\r
 {\r
-  EFI_STATUS                      Status;\r
-  PE_COFF_LOADER_IMAGE_CONTEXT    ImageContext;\r
+  EFI_STATUS                    Status;\r
+  PE_COFF_LOADER_IMAGE_CONTEXT  ImageContext;\r
 \r
   ZeroMem (&ImageContext, sizeof (ImageContext));\r
-  ImageContext.Handle = Pe32Data;\r
+  ImageContext.Handle    = Pe32Data;\r
   ImageContext.ImageRead = PeiImageRead;\r
 \r
   Status = PeCoffLoaderGetImageInfo (&ImageContext);\r
@@ -479,7 +497,7 @@ LoadAndRelocatePeCoffImageInPlace (
     return Status;\r
   }\r
 \r
-  ImageContext.ImageAddress   = (PHYSICAL_ADDRESS)(UINTN) ImageAddress;\r
+  ImageContext.ImageAddress = (PHYSICAL_ADDRESS)(UINTN)ImageAddress;\r
 \r
   //\r
   // Load the image in place\r
@@ -502,7 +520,7 @@ LoadAndRelocatePeCoffImageInPlace (
   //\r
   // Flush the instruction cache so the image data is written before we execute it\r
   //\r
-  if (ImageContext.ImageAddress != (EFI_PHYSICAL_ADDRESS)(UINTN) Pe32Data) {\r
+  if (ImageContext.ImageAddress != (EFI_PHYSICAL_ADDRESS)(UINTN)Pe32Data) {\r
     InvalidateInstructionCacheRange ((VOID *)(UINTN)ImageContext.ImageAddress, (UINTN)ImageContext.ImageSize);\r
   }\r
 \r
@@ -525,10 +543,10 @@ PeiGetPe32Data (
   OUT    VOID                 **Pe32Data\r
   )\r
 {\r
-  EFI_STATUS                  Status;\r
-  EFI_SECTION_TYPE            SearchType1;\r
-  EFI_SECTION_TYPE            SearchType2;\r
-  UINT32                      AuthenticationState;\r
+  EFI_STATUS        Status;\r
+  EFI_SECTION_TYPE  SearchType1;\r
+  EFI_SECTION_TYPE  SearchType2;\r
+  UINT32            AuthenticationState;\r
 \r
   *Pe32Data = NULL;\r
 \r
@@ -563,6 +581,7 @@ PeiGetPe32Data (
                &AuthenticationState\r
                );\r
   }\r
+\r
   return Status;\r
 }\r
 \r
@@ -588,22 +607,22 @@ PeiGetPe32Data (
 **/\r
 EFI_STATUS\r
 PeiLoadImageLoadImage (\r
-  IN     CONST EFI_PEI_SERVICES       **PeiServices,\r
-  IN     EFI_PEI_FILE_HANDLE          FileHandle,\r
-  OUT    EFI_PHYSICAL_ADDRESS         *ImageAddressArg   OPTIONAL,\r
-  OUT    UINT64                       *ImageSizeArg      OPTIONAL,\r
-  OUT    EFI_PHYSICAL_ADDRESS         *EntryPoint,\r
-  OUT    UINT32                       *AuthenticationState\r
+  IN     CONST EFI_PEI_SERVICES  **PeiServices,\r
+  IN     EFI_PEI_FILE_HANDLE     FileHandle,\r
+  OUT    EFI_PHYSICAL_ADDRESS    *ImageAddressArg   OPTIONAL,\r
+  OUT    UINT64                  *ImageSizeArg      OPTIONAL,\r
+  OUT    EFI_PHYSICAL_ADDRESS    *EntryPoint,\r
+  OUT    UINT32                  *AuthenticationState\r
   )\r
 {\r
-  EFI_STATUS                  Status;\r
-  VOID                        *Pe32Data;\r
-  EFI_PHYSICAL_ADDRESS        ImageAddress;\r
-  UINT64                      ImageSize;\r
-  EFI_PHYSICAL_ADDRESS        ImageEntryPoint;\r
-  UINT16                      Machine;\r
-  EFI_SECTION_TYPE            SearchType1;\r
-  EFI_SECTION_TYPE            SearchType2;\r
+  EFI_STATUS            Status;\r
+  VOID                  *Pe32Data;\r
+  EFI_PHYSICAL_ADDRESS  ImageAddress;\r
+  UINT64                ImageSize;\r
+  EFI_PHYSICAL_ADDRESS  ImageEntryPoint;\r
+  UINT16                Machine;\r
+  EFI_SECTION_TYPE      SearchType1;\r
+  EFI_SECTION_TYPE      SearchType2;\r
 \r
   *EntryPoint          = 0;\r
   ImageSize            = 0;\r
@@ -654,12 +673,12 @@ PeiLoadImageLoadImage (
   // If memory is installed, perform the shadow operations\r
   //\r
   Status = LoadAndRelocatePeCoffImage (\r
-    FileHandle,\r
-    Pe32Data,\r
-    &ImageAddress,\r
-    &ImageSize,\r
-    &ImageEntryPoint\r
-  );\r
+             FileHandle,\r
+             Pe32Data,\r
+             &ImageAddress,\r
+             &ImageSize,\r
+             &ImageEntryPoint\r
+             );\r
 \r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
@@ -668,7 +687,7 @@ PeiLoadImageLoadImage (
   //\r
   // Got the entry point from the loaded Pe32Data\r
   //\r
-  Pe32Data    = (VOID *) ((UINTN) ImageAddress);\r
+  Pe32Data    = (VOID *)((UINTN)ImageAddress);\r
   *EntryPoint = ImageEntryPoint;\r
 \r
   Machine = PeCoffLoaderGetMachineType (Pe32Data);\r
@@ -688,71 +707,70 @@ PeiLoadImageLoadImage (
   }\r
 \r
   DEBUG_CODE_BEGIN ();\r
-    CHAR8                              *AsciiString;\r
-    CHAR8                              EfiFileName[512];\r
-    INT32                              Index;\r
-    INT32                              StartIndex;\r
+  CHAR8  *AsciiString;\r
+  CHAR8  EfiFileName[512];\r
+  INT32  Index;\r
+  INT32  StartIndex;\r
 \r
+  //\r
+  // Print debug message: Loading PEIM at 0x12345678 EntryPoint=0x12345688 Driver.efi\r
+  //\r
+  if (Machine != EFI_IMAGE_MACHINE_IA64) {\r
+    DEBUG ((DEBUG_INFO | DEBUG_LOAD, "Loading PEIM at 0x%11p EntryPoint=0x%11p ", (VOID *)(UINTN)ImageAddress, (VOID *)(UINTN)*EntryPoint));\r
+  } else {\r
     //\r
-    // Print debug message: Loading PEIM at 0x12345678 EntryPoint=0x12345688 Driver.efi\r
+    // For IPF Image, the real entry point should be print.\r
     //\r
-    if (Machine != EFI_IMAGE_MACHINE_IA64) {\r
-      DEBUG ((DEBUG_INFO | DEBUG_LOAD, "Loading PEIM at 0x%11p EntryPoint=0x%11p ", (VOID *)(UINTN)ImageAddress, (VOID *)(UINTN)*EntryPoint));\r
-    } else {\r
-      //\r
-      // For IPF Image, the real entry point should be print.\r
-      //\r
-      DEBUG ((DEBUG_INFO | DEBUG_LOAD, "Loading PEIM at 0x%11p EntryPoint=0x%11p ", (VOID *)(UINTN)ImageAddress, (VOID *)(UINTN)(*(UINT64 *)(UINTN)*EntryPoint)));\r
-    }\r
+    DEBUG ((DEBUG_INFO | DEBUG_LOAD, "Loading PEIM at 0x%11p EntryPoint=0x%11p ", (VOID *)(UINTN)ImageAddress, (VOID *)(UINTN)(*(UINT64 *)(UINTN)*EntryPoint)));\r
+  }\r
 \r
-    //\r
-    // Print Module Name by PeImage PDB file name.\r
-    //\r
-    AsciiString = PeCoffLoaderGetPdbPointer (Pe32Data);\r
+  //\r
+  // Print Module Name by PeImage PDB file name.\r
+  //\r
+  AsciiString = PeCoffLoaderGetPdbPointer (Pe32Data);\r
 \r
-    if (AsciiString != NULL) {\r
-      StartIndex = 0;\r
-      for (Index = 0; AsciiString[Index] != 0; Index++) {\r
-        if (AsciiString[Index] == '\\' || AsciiString[Index] == '/') {\r
-          StartIndex = Index + 1;\r
-        }\r
+  if (AsciiString != NULL) {\r
+    StartIndex = 0;\r
+    for (Index = 0; AsciiString[Index] != 0; Index++) {\r
+      if ((AsciiString[Index] == '\\') || (AsciiString[Index] == '/')) {\r
+        StartIndex = Index + 1;\r
       }\r
+    }\r
 \r
-      //\r
-      // Copy the PDB file name to our temporary string, and replace .pdb with .efi\r
-      // The PDB file name is limited in the range of 0~511.\r
-      // If the length is bigger than 511, trim the redundant characters to avoid overflow in array boundary.\r
-      //\r
-      for (Index = 0; Index < sizeof (EfiFileName) - 4; Index++) {\r
-        EfiFileName[Index] = AsciiString[Index + StartIndex];\r
-        if (EfiFileName[Index] == 0) {\r
-          EfiFileName[Index] = '.';\r
-        }\r
-        if (EfiFileName[Index] == '.') {\r
-          EfiFileName[Index + 1] = 'e';\r
-          EfiFileName[Index + 2] = 'f';\r
-          EfiFileName[Index + 3] = 'i';\r
-          EfiFileName[Index + 4] = 0;\r
-          break;\r
-        }\r
+    //\r
+    // Copy the PDB file name to our temporary string, and replace .pdb with .efi\r
+    // The PDB file name is limited in the range of 0~511.\r
+    // If the length is bigger than 511, trim the redundant characters to avoid overflow in array boundary.\r
+    //\r
+    for (Index = 0; Index < sizeof (EfiFileName) - 4; Index++) {\r
+      EfiFileName[Index] = AsciiString[Index + StartIndex];\r
+      if (EfiFileName[Index] == 0) {\r
+        EfiFileName[Index] = '.';\r
       }\r
 \r
-      if (Index == sizeof (EfiFileName) - 4) {\r
-        EfiFileName[Index] = 0;\r
+      if (EfiFileName[Index] == '.') {\r
+        EfiFileName[Index + 1] = 'e';\r
+        EfiFileName[Index + 2] = 'f';\r
+        EfiFileName[Index + 3] = 'i';\r
+        EfiFileName[Index + 4] = 0;\r
+        break;\r
       }\r
+    }\r
 \r
-      DEBUG ((DEBUG_INFO | DEBUG_LOAD, "%a", EfiFileName));\r
+    if (Index == sizeof (EfiFileName) - 4) {\r
+      EfiFileName[Index] = 0;\r
     }\r
 \r
+    DEBUG ((DEBUG_INFO | DEBUG_LOAD, "%a", EfiFileName));\r
+  }\r
+\r
   DEBUG_CODE_END ();\r
 \r
   DEBUG ((DEBUG_INFO | DEBUG_LOAD, "\n"));\r
 \r
   return EFI_SUCCESS;\r
-\r
 }\r
 \r
-\r
 /**\r
   The wrapper function of PeiLoadImageLoadImage().\r
 \r
@@ -811,7 +829,7 @@ RelocationIsStrip (
     //\r
     // DOS image header is present, so read the PE header after the DOS image header.\r
     //\r
-    Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN) Pe32Data + (UINTN) ((DosHdr->e_lfanew) & 0x0ffff));\r
+    Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN)Pe32Data + (UINTN)((DosHdr->e_lfanew) & 0x0ffff));\r
   } else {\r
     //\r
     // DOS image header is not present, so PE header is at the image base.\r
@@ -836,7 +854,7 @@ RelocationIsStrip (
     } else {\r
       return FALSE;\r
     }\r
-  } else if (Hdr.Pe32->Signature == EFI_IMAGE_NT_SIGNATURE)  {\r
+  } else if (Hdr.Pe32->Signature == EFI_IMAGE_NT_SIGNATURE) {\r
     if ((Hdr.Pe32->FileHeader.Characteristics & EFI_IMAGE_FILE_RELOCS_STRIPPED) != 0) {\r
       return TRUE;\r
     } else {\r
@@ -865,20 +883,20 @@ RelocationIsStrip (
 **/\r
 EFI_STATUS\r
 PeiLoadImage (\r
-  IN     CONST EFI_PEI_SERVICES       **PeiServices,\r
-  IN     EFI_PEI_FILE_HANDLE          FileHandle,\r
-  IN     UINT8                        PeimState,\r
-  OUT    EFI_PHYSICAL_ADDRESS         *EntryPoint,\r
-  OUT    UINT32                       *AuthenticationState\r
+  IN     CONST EFI_PEI_SERVICES  **PeiServices,\r
+  IN     EFI_PEI_FILE_HANDLE     FileHandle,\r
+  IN     UINT8                   PeimState,\r
+  OUT    EFI_PHYSICAL_ADDRESS    *EntryPoint,\r
+  OUT    UINT32                  *AuthenticationState\r
   )\r
 {\r
-  EFI_STATUS              PpiStatus;\r
-  EFI_STATUS              Status;\r
-  UINTN                   Index;\r
-  EFI_PEI_LOAD_FILE_PPI   *LoadFile;\r
-  EFI_PHYSICAL_ADDRESS    ImageAddress;\r
-  UINT64                  ImageSize;\r
-  BOOLEAN                 IsStrip;\r
+  EFI_STATUS             PpiStatus;\r
+  EFI_STATUS             Status;\r
+  UINTN                  Index;\r
+  EFI_PEI_LOAD_FILE_PPI  *LoadFile;\r
+  EFI_PHYSICAL_ADDRESS   ImageAddress;\r
+  UINT64                 ImageSize;\r
+  BOOLEAN                IsStrip;\r
 \r
   IsStrip = FALSE;\r
   //\r
@@ -895,19 +913,19 @@ PeiLoadImage (
                   );\r
     if (!EFI_ERROR (PpiStatus)) {\r
       Status = LoadFile->LoadFile (\r
-                          LoadFile,\r
-                          FileHandle,\r
-                          &ImageAddress,\r
-                          &ImageSize,\r
-                          EntryPoint,\r
-                          AuthenticationState\r
-                          );\r
-      if (!EFI_ERROR (Status) || Status == EFI_WARN_BUFFER_TOO_SMALL) {\r
+                           LoadFile,\r
+                           FileHandle,\r
+                           &ImageAddress,\r
+                           &ImageSize,\r
+                           EntryPoint,\r
+                           AuthenticationState\r
+                           );\r
+      if (!EFI_ERROR (Status) || (Status == EFI_WARN_BUFFER_TOO_SMALL)) {\r
         //\r
         // The shadowed PEIM must be relocatable.\r
         //\r
         if (PeimState == PEIM_STATE_REGISTER_FOR_SHADOW) {\r
-          IsStrip = RelocationIsStrip ((VOID *) (UINTN) ImageAddress);\r
+          IsStrip = RelocationIsStrip ((VOID *)(UINTN)ImageAddress);\r
           ASSERT (!IsStrip);\r
           if (IsStrip) {\r
             return EFI_UNSUPPORTED;\r
@@ -917,20 +935,21 @@ PeiLoadImage (
         //\r
         // The image to be started must have the machine type supported by PeiCore.\r
         //\r
-        ASSERT (EFI_IMAGE_MACHINE_TYPE_SUPPORTED (PeCoffLoaderGetMachineType ((VOID *) (UINTN) ImageAddress)));\r
-        if (!EFI_IMAGE_MACHINE_TYPE_SUPPORTED (PeCoffLoaderGetMachineType ((VOID *) (UINTN) ImageAddress))) {\r
+        ASSERT (EFI_IMAGE_MACHINE_TYPE_SUPPORTED (PeCoffLoaderGetMachineType ((VOID *)(UINTN)ImageAddress)));\r
+        if (!EFI_IMAGE_MACHINE_TYPE_SUPPORTED (PeCoffLoaderGetMachineType ((VOID *)(UINTN)ImageAddress))) {\r
           return EFI_UNSUPPORTED;\r
         }\r
+\r
         return EFI_SUCCESS;\r
       }\r
     }\r
+\r
     Index++;\r
   } while (!EFI_ERROR (PpiStatus));\r
 \r
   return PpiStatus;\r
 }\r
 \r
-\r
 /**\r
 \r
   Install Pei Load File PPI.\r
@@ -942,8 +961,8 @@ PeiLoadImage (
 **/\r
 VOID\r
 InitializeImageServices (\r
-  IN  PEI_CORE_INSTANCE   *PrivateData,\r
-  IN  PEI_CORE_INSTANCE   *OldCoreData\r
+  IN  PEI_CORE_INSTANCE  *PrivateData,\r
+  IN  PEI_CORE_INSTANCE  *OldCoreData\r
   )\r
 {\r
   if (OldCoreData == NULL) {\r