\r
BOOLEAN gInMemory = FALSE;\r
\r
-//\r
-// GUID for EM64T\r
-//\r
-#define EFI_PPI_NEEDED_BY_DXE \\r
- { \\r
- 0x4d37da42, 0x3a0c, 0x4eda, 0xb9, 0xeb, 0xbc, 0x0e, 0x1d, 0xb4, 0x71, 0x3b \\r
- }\r
-EFI_GUID mPpiNeededByDxeGuid = EFI_PPI_NEEDED_BY_DXE;\r
-\r
//\r
// Module Globals used in the DXE to PEI handoff\r
// These must be module globals, so the stack can be switched\r
NULL\r
};\r
\r
-DECOMPRESS_LIBRARY gEfiDecompress = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED DECOMPRESS_LIBRARY gEfiDecompress = {\r
UefiDecompressGetInfo,\r
UefiDecompress\r
};\r
\r
-DECOMPRESS_LIBRARY gTianoDecompress = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED DECOMPRESS_LIBRARY gTianoDecompress = {\r
TianoDecompressGetInfo,\r
TianoDecompress\r
};\r
\r
-DECOMPRESS_LIBRARY gCustomDecompress = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED DECOMPRESS_LIBRARY gCustomDecompress = {\r
CustomDecompressGetInfo,\r
CustomDecompress\r
};\r
//\r
// Install the PEI Protocols that are shared between PEI and DXE\r
//\r
-#ifdef EFI_NT_EMULATOR\r
PeiEfiPeiPeCoffLoader = (EFI_PEI_PE_COFF_LOADER_PROTOCOL *)GetPeCoffLoaderProtocol ();\r
ASSERT (PeiEfiPeiPeCoffLoader != NULL);\r
-#else\r
- PeiEfiPeiPeCoffLoader = (EFI_PEI_PE_COFF_LOADER_PROTOCOL *)GetPeCoffLoaderX64Protocol ();\r
-#endif \r
\r
//\r
// Allocate 128KB for the Stack\r
\r
ASSERT_EFI_ERROR (Status);\r
Status = PeiRecovery->LoadRecoveryCapsule (PeiServices, PeiRecovery);\r
- ASSERT_EFI_ERROR (Status);\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((EFI_D_ERROR, "Load Recovery Capsule Failed.(Status = %r)\n", Status));\r
+ CpuDeadLoop ();\r
+ }\r
}\r
\r
//\r
);\r
ASSERT_EFI_ERROR (Status);\r
\r
- //\r
- // Transfer control to the DXE Core\r
- // The handoff state is simply a pointer to the HOB list\r
- //\r
- // PEI_PERF_END (PeiServices, L"DxeIpl", NULL, 0);\r
-\r
- Status = PeiServicesInstallPpi (&mPpiSignal);\r
- ASSERT_EFI_ERROR (Status);\r
-\r
//\r
// Load the GDT of Go64. Since the GDT of 32-bit Tiano locates in the BS_DATA \\r
// memory, it may be corrupted when copying FV to high-end memory \r
//\r
// Load the DXE Core from a Firmware Volume\r
//\r
- Status = PeiLoadx64File (\r
+ Status = PeiLoadPeImage (\r
PeiEfiPeiPeCoffLoader,\r
DxeCorePe32Data,\r
EfiBootServicesData,\r
);\r
ASSERT_EFI_ERROR (Status);\r
\r
+ //\r
+ // Transfer control to the DXE Core\r
+ // The handoff state is simply a pointer to the HOB list\r
+ //\r
+\r
+ Status = PeiServicesInstallPpi (&mPpiSignal);\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
//\r
//\r
// Add HOB for the DXE Core\r
\r
//\r
// If we get here, then the DXE Core returned. This is an error\r
+ // Dxe Core should not return.\r
//\r
- ASSERT_EFI_ERROR (Status);\r
+ ASSERT (FALSE);\r
+ CpuDeadLoop ();\r
\r
return EFI_OUT_OF_RESOURCES;\r
}\r
}\r
\r
EFI_STATUS\r
-PeiLoadx64File (\r
+PeiLoadPeImage (\r
IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *PeiEfiPeiPeCoffLoader,\r
IN VOID *Pe32Data,\r
IN EFI_MEMORY_TYPE MemoryType,\r
//\r
// Relocate DxeIpl into memory by using loadfile service\r
//\r
- Status = PeiLoadx64File (\r
+ Status = PeiLoadPeImage (\r
PeiEfiPeiPeCoffLoader,\r
(VOID *) (Section + 1),\r
EfiBootServicesData,\r
//\r
// Load the PE image from the FFS file\r
//\r
- Status = PeiLoadx64File (\r
+ Status = PeiLoadPeImage (\r
PeiEfiPeiPeCoffLoader,\r
Pe32Data,\r
EfiBootServicesData,\r
\r
switch (CompressionSection->CompressionType) {\r
case EFI_STANDARD_COMPRESSION:\r
- DecompressLibrary = &gTianoDecompress;\r
+ if (FeaturePcdGet (PcdDxeIplSupportTianoDecompress)) {\r
+ DecompressLibrary = &gTianoDecompress;\r
+ } else {\r
+ ASSERT (FALSE);\r
+ return EFI_NOT_FOUND;\r
+ }\r
break;\r
\r
case EFI_CUSTOMIZED_COMPRESSION:\r
//\r
// Load user customized compression protocol.\r
//\r
- DecompressLibrary = &gCustomDecompress;\r
+ if (FeaturePcdGet (PcdDxeIplSupportCustomDecompress)) {\r
+ DecompressLibrary = &gCustomDecompress;\r
+ } else {\r
+ ASSERT (FALSE);\r
+ return EFI_NOT_FOUND;\r
+ }\r
break;\r
\r
case EFI_NOT_COMPRESSED:\r