--*/\r
\r
#include <PiPei.h>\r
+#include <Library/DebugLib.h>\r
#include <Guid/PeiPeCoffLoader.h>\r
-#include <Library/PeCoffLoaderLib.h>\r
+#include <Library/PeCoffLoaderLib.h> \r
+#include <Library/PeiServicesLib.h>\r
\r
\r
-EFI_PEI_PE_COFF_LOADER_PROTOCOL *mPeiEfiPeiPeCoffLoader;\r
+EFI_PEI_PE_COFF_LOADER_PROTOCOL *mPeiEfiPeiPeCoffLoader = NULL;\r
\r
-EFI_STATUS\r
-EFIAPI\r
-PeCoffLoaderConstructor (\r
- IN EFI_FFS_FILE_HEADER *FfsHeader,\r
- IN EFI_PEI_SERVICES **PeiServices\r
- )\r
-{\r
- EFI_STATUS Status;\r
-\r
- Status = (*PeiServices)->LocatePpi (\r
- PeiServices,\r
- &gEfiPeiPeCoffLoaderGuid,\r
- 0,\r
- NULL,\r
- &mPeiEfiPeiPeCoffLoader\r
- );\r
- return Status;\r
-}\r
\r
EFI_PEI_PE_COFF_LOADER_PROTOCOL *\r
EFIAPI\r
GetPeCoffLoaderProtocol (\r
)\r
{\r
+ EFI_STATUS Status;\r
+ \r
+ if (mPeiEfiPeiPeCoffLoader == NULL) {\r
+ Status = PeiServicesLocatePpi(\r
+ &gEfiPeiPeCoffLoaderGuid,\r
+ 0,\r
+ NULL,\r
+ (VOID **) &mPeiEfiPeiPeCoffLoader\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ }\r
return mPeiEfiPeiPeCoffLoader;\r
}\r