]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/EfiLdr/EfiLoader.c
1, Use #if defined() to judge the switching macro such as compiler macro.
[mirror_edk2.git] / DuetPkg / EfiLdr / EfiLoader.c
index c8c749ba4d0941ba6d83c6cf6ac50c0b3ba7d4d4..f9804e7ffb35edb12757aa5aa2ddb0619d485464 100644 (file)
@@ -24,7 +24,6 @@ Revision History:
 #include "PeLoader.h"\r
 #include "TianoDecompress.h"\r
 \r
-STATIC\r
 VOID\r
 SystemHang(\r
   VOID\r
@@ -41,7 +40,7 @@ EfiLoader (
   )\r
 {\r
   BIOS_MEMORY_MAP       *BiosMemoryMap;    \r
-  EFILDR_HEADER         *EFILDRHeader;\r
+  //EFILDR_HEADER         *EFILDRHeader;\r
   EFILDR_IMAGE          *EFILDRImage;\r
   EFI_MEMORY_DESCRIPTOR EfiMemoryDescriptor[EFI_MAX_MEMORY_DESCRIPTORS];\r
   EFI_STATUS            Status;\r
@@ -52,7 +51,7 @@ EfiLoader (
   UINTN                 BfvBase;\r
   EFI_MAIN_ENTRYPOINT   EfiMainEntrypoint;\r
   CHAR8                 PrintBuffer[256];\r
-  static EFILDRHANDOFF  Handoff;\r
+  STATIC EFILDRHANDOFF  Handoff;\r
 \r
   ClearScreen();\r
   \r
@@ -79,7 +78,7 @@ EfiLoader (
   // Get information on where the image is in memory\r
   //\r
 \r
-  EFILDRHeader = (EFILDR_HEADER *)(UINTN)(EFILDR_HEADER_ADDRESS);\r
+  //EFILDRHeader = (EFILDR_HEADER *)(UINTN)(EFILDR_HEADER_ADDRESS);\r
   EFILDRImage  = (EFILDR_IMAGE *)(UINTN)(EFILDR_HEADER_ADDRESS + sizeof(EFILDR_HEADER));\r
 \r
 \r
@@ -93,7 +92,7 @@ EfiLoader (
   // Decompress the image\r
   //\r
 \r
-  AsciiSPrint (PrintBuffer, 256, "Decompress BFV image, Image Address=0x%x! Offset=0x%x\n", \r
+  AsciiSPrint (PrintBuffer, 256, "Decompress BFV image, Image Address=0x%x Offset=0x%x\n", \r
                (UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),\r
                EFILDRImage->Offset);\r
   PrintString (PrintBuffer);\r
@@ -110,7 +109,11 @@ EfiLoader (
     PrintString (PrintBuffer);\r
     SystemHang();\r
   }\r
-\r
+  \r
+  AsciiSPrint (PrintBuffer, 256, "BFV decompress: DestinationSize=0x%X, ScratchSize=0x%X!\n",\r
+               DestinationSize, ScratchSize);\r
+  PrintString (PrintBuffer);\r
+  \r
   Status = TianoDecompress (\r
              (VOID *)(UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),\r
              EFILDRImage->Length,\r
@@ -145,9 +148,10 @@ EfiLoader (
   //\r
   // Decompress the image\r
   //\r
-  AsciiSPrint (PrintBuffer, 256, "Decompress DxeIpl image, Image Address=0x%x! Offset=0x%x\n", \r
+  AsciiSPrint (PrintBuffer, 256, "Decompress DxeIpl image, Image Address=0x%x Offset=0x%x\n", \r
                (UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),\r
                EFILDRImage->Offset);\r
+  PrintString (PrintBuffer);\r
 \r
   Status = TianoGetInfo (\r
              (VOID *)(UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),\r
@@ -192,6 +196,9 @@ EfiLoader (
     PrintString (PrintBuffer);\r
     SystemHang();\r
   }\r
+  AsciiSPrint (PrintBuffer, 256, "DxeIpl PE image is successed loaded at 0x%x, entry=0x%x\n",\r
+               (UINTN)DxeIplImage.ImageBasePage, (UINTN)DxeIplImage.EntryPoint);\r
+  PrintString (PrintBuffer);  \r
 \r
 //  PrintString("Image.NoPages = ");   \r
 //  PrintValue(Image.NoPages);\r
@@ -208,6 +215,10 @@ PrintHeader ('C');
   //\r
   // Decompress the image\r
   //\r
+  AsciiSPrint (PrintBuffer, 256, "Decompress DXEMain FV image, Image Address=0x%x! Offset=0x%x\n", \r
+               (UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),\r
+               EFILDRImage->Offset);\r
+  PrintString (PrintBuffer);\r
 \r
   Status = TianoGetInfo (\r
              (VOID *)(UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),\r
@@ -216,6 +227,8 @@ PrintHeader ('C');
              &ScratchSize\r
              );\r
   if (EFI_ERROR (Status)) {\r
+    AsciiSPrint (PrintBuffer, 256, "Fail to get decompress information for DXEMain FV image!\n");\r
+    PrintString (PrintBuffer);\r
     SystemHang();\r
   }\r
 \r
@@ -243,6 +256,9 @@ PrintHeader ('C');
   if (EFI_ERROR (Status)) {\r
     SystemHang();\r
   }\r
+  AsciiSPrint (PrintBuffer, 256, "DxeCore PE image is successed loaded at 0x%x, entry=0x%x\n",\r
+               (UINTN)DxeCoreImage.ImageBasePage, (UINTN)DxeCoreImage.EntryPoint);\r
+  PrintString (PrintBuffer);  \r
 \r
 PrintHeader ('E');\r
 \r
@@ -282,6 +298,9 @@ PrintHeader ('E');
     Handoff.DxeCoreImageSize  = DxeCoreImage.NoPages * EFI_PAGE_SIZE;\r
     Handoff.DxeCoreEntryPoint = (VOID *)(UINTN)DxeCoreImage.EntryPoint;\r
 \r
+    AsciiSPrint (PrintBuffer, 256, "Transfer to DxeIpl ...Address=0x%x\n", (UINTN)DxeIplImage.EntryPoint);\r
+    PrintString (PrintBuffer);\r
+    \r
     EfiMainEntrypoint = (EFI_MAIN_ENTRYPOINT)(UINTN)DxeIplImage.EntryPoint;\r
     EfiMainEntrypoint (&Handoff);\r
   }\r
@@ -295,3 +314,14 @@ PrintHeader ('F');
   SystemHang();\r
 }\r
 \r
+EFI_STATUS\r
+EFIAPI\r
+_ModuleEntryPoint (\r
+  UINT32    BiosMemoryMapBaseAddress\r
+  )\r
+{\r
+  EfiLoader(BiosMemoryMapBaseAddress);\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+\r