]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Core/DxeIplX64Peim/DxeLoadX64.c
Move ConPlatform module from EdkNT32 package to EdkModulePkg, and remove EdkPeCoffLoa...
[mirror_edk2.git] / EdkModulePkg / Core / DxeIplX64Peim / DxeLoadX64.c
index 4211dd3075ccef3fee9c711806e70de6b36a2415..4015222036eee951fa1f98689c90a58a6495d85f 100644 (file)
@@ -26,15 +26,6 @@ Abstract:
 \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
@@ -256,12 +247,8 @@ Returns:
   //\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
@@ -295,7 +282,10 @@ Returns:
 \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
@@ -309,15 +299,6 @@ Returns:
              );\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
@@ -332,7 +313,7 @@ Returns:
   //\r
   // Load the DXE Core from a Firmware Volume\r
   //\r
-  Status = PeiLoadx64File (\r
+  Status = PeiLoadPeImage (\r
              PeiEfiPeiPeCoffLoader,\r
              DxeCorePe32Data,\r
              EfiBootServicesData,\r
@@ -342,6 +323,14 @@ Returns:
              );\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
@@ -376,8 +365,10 @@ Returns:
 \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
@@ -455,7 +446,7 @@ Returns:
 }\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
@@ -587,7 +578,7 @@ Returns:
   //\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
@@ -668,7 +659,7 @@ Returns:
   //\r
   // Load the PE image from the FFS file\r
   //\r
-  Status = PeiLoadx64File (\r
+  Status = PeiLoadPeImage (\r
             PeiEfiPeiPeCoffLoader,\r
             Pe32Data,\r
             EfiBootServicesData,\r