#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
)\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
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
PrintString (PrintBuffer);\r
\r
// 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
// 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
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
+ (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
//\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
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
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
//\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
(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
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
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
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