]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/EfiLdr/EfiLoader.c
Update the copyright notice format
[mirror_edk2.git] / DuetPkg / EfiLdr / EfiLoader.c
index c8c749ba4d0941ba6d83c6cf6ac50c0b3ba7d4d4..609e5474832b4bf4ab0033519eb0fb64925b39c4 100644 (file)
@@ -1,7 +1,7 @@
 /*++\r
 \r
-Copyright (c) 2006, Intel Corporation                                                         \r
-All rights reserved. This program and the accompanying materials                          \r
+Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
 which accompanies this distribution.  The full text of the license may be found at        \r
 http://opensource.org/licenses/bsd-license.php                                            \r
@@ -22,9 +22,8 @@ Revision History:
 #include "Support.h"\r
 #include "Debug.h"\r
 #include "PeLoader.h"\r
-#include "TianoDecompress.h"\r
+#include "LzmaDecompress.h"\r
 \r
-STATIC\r
 VOID\r
 SystemHang(\r
   VOID\r
@@ -41,7 +40,6 @@ EfiLoader (
   )\r
 {\r
   BIOS_MEMORY_MAP       *BiosMemoryMap;    \r
-  EFILDR_HEADER         *EFILDRHeader;\r
   EFILDR_IMAGE          *EFILDRImage;\r
   EFI_MEMORY_DESCRIPTOR EfiMemoryDescriptor[EFI_MAX_MEMORY_DESCRIPTORS];\r
   EFI_STATUS            Status;\r
@@ -52,13 +50,13 @@ 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
   PrintHeader ('A');\r
-\r
-  AsciiSPrint (PrintBuffer, 256, "Enter DUET Loader ...\n", BiosMemoryMapBaseAddress);\r
+  
+  AsciiSPrint (PrintBuffer, 256, "Enter DUET Loader...\n");\r
   PrintString (PrintBuffer);\r
 \r
   AsciiSPrint (PrintBuffer, 256, "BiosMemoryMapBaseAddress = 0x%x\n", BiosMemoryMapBaseAddress);\r
@@ -79,7 +77,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,12 +91,11 @@ 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
-\r
-  Status = TianoGetInfo (\r
+  Status = LzmaUefiDecompressGetInfo (\r
              (VOID *)(UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),\r
              EFILDRImage->Length,\r
              &DestinationSize, \r
@@ -110,15 +107,17 @@ EfiLoader (
     PrintString (PrintBuffer);\r
     SystemHang();\r
   }\r
-\r
-  Status = TianoDecompress (\r
-             (VOID *)(UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),\r
-             EFILDRImage->Length,\r
-             (VOID *)(UINTN)EFI_DECOMPRESSED_BUFFER_ADDRESS,\r
-             DestinationSize, \r
-             (VOID *)(UINTN)((EFI_DECOMPRESSED_BUFFER_ADDRESS + DestinationSize + 0x1000) & 0xfffff000),\r
-             ScratchSize\r
-             );\r
+  \r
+  AsciiSPrint (PrintBuffer, 256, "BFV decompress: DestinationSize=0x%X, ScratchSize=0x%X!\n",\r
+               DestinationSize, ScratchSize);\r
+  PrintString (PrintBuffer);\r
+  Status =  LzmaUefiDecompress (\r
+    (VOID *)(UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),\r
+    EFILDRImage->Length,\r
+    (VOID *)(UINTN)EFI_DECOMPRESSED_BUFFER_ADDRESS, \r
+    (VOID *)(UINTN)((EFI_DECOMPRESSED_BUFFER_ADDRESS + DestinationSize + 0x1000) & 0xfffff000)\r
+    );\r
+  \r
 \r
   if (EFI_ERROR (Status)) {\r
     AsciiSPrint (PrintBuffer, 256, "Fail to decompress BFV!\n");\r
@@ -145,11 +144,12 @@ 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
+  Status = LzmaUefiDecompressGetInfo (\r
              (VOID *)(UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),\r
              EFILDRImage->Length,\r
              &DestinationSize, \r
@@ -161,13 +161,11 @@ EfiLoader (
     SystemHang();\r
   }\r
 \r
-  Status = TianoDecompress (\r
+  Status = LzmaUefiDecompress (\r
              (VOID *)(UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),\r
              EFILDRImage->Length,\r
              (VOID *)(UINTN)EFI_DECOMPRESSED_BUFFER_ADDRESS,\r
-             DestinationSize, \r
-             (VOID *)(UINTN)((EFI_DECOMPRESSED_BUFFER_ADDRESS + DestinationSize + 0x1000) & 0xfffff000),\r
-             ScratchSize\r
+             (VOID *)(UINTN)((EFI_DECOMPRESSED_BUFFER_ADDRESS + DestinationSize + 0x1000) & 0xfffff000)\r
              );\r
   if (EFI_ERROR (Status)) {\r
     AsciiSPrint (PrintBuffer, 256, "Fail to decompress DxeIpl image\n");\r
@@ -192,6 +190,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,24 +209,28 @@ 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
+  Status = LzmaUefiDecompressGetInfo (\r
              (VOID *)(UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),\r
              EFILDRImage->Length,\r
              &DestinationSize, \r
              &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
-  Status = TianoDecompress (\r
+  Status = LzmaUefiDecompress (\r
              (VOID *)(UINTN)(EFILDR_HEADER_ADDRESS + EFILDRImage->Offset),\r
-             EFILDRImage->Length,\r
+              EFILDRImage->Length,\r
              (VOID *)(UINTN)EFI_DECOMPRESSED_BUFFER_ADDRESS,\r
-             DestinationSize, \r
-             (VOID *)(UINTN)((EFI_DECOMPRESSED_BUFFER_ADDRESS + DestinationSize + 0x1000) & 0xfffff000),\r
-             ScratchSize\r
+             (VOID *)(UINTN)((EFI_DECOMPRESSED_BUFFER_ADDRESS + DestinationSize + 0x1000) & 0xfffff000)\r
              );\r
   if (EFI_ERROR (Status)) {\r
     SystemHang();\r
@@ -243,6 +248,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 +290,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 +306,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