]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Dxe/Image/Image.c
Print real entry point for IPF image.
[mirror_edk2.git] / MdeModulePkg / Core / Dxe / Image / Image.c
index 9232cabcef78cf5d21ae1d7ead4f43ad072643a9..99170dca90d8d0ec10c4379b5c184faf137f3bcc 100644 (file)
@@ -225,7 +225,28 @@ Returns:
     //\r
     return EFI_UNSUPPORTED;\r
   }\r
-\r
+  \r
+  //\r
+  // Set EFI memory type based on ImageType\r
+  //\r
+  switch (Image->ImageContext.ImageType) {\r
+  case EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION:\r
+    Image->ImageContext.ImageCodeMemoryType = EfiLoaderCode;\r
+    Image->ImageContext.ImageDataMemoryType = EfiLoaderData;\r
+    break;\r
+  case EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER:\r
+    Image->ImageContext.ImageCodeMemoryType = EfiBootServicesCode;\r
+    Image->ImageContext.ImageDataMemoryType = EfiBootServicesData;\r
+    break;\r
+  case EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER:\r
+  case EFI_IMAGE_SUBSYSTEM_SAL_RUNTIME_DRIVER:\r
+    Image->ImageContext.ImageCodeMemoryType = EfiRuntimeServicesCode;\r
+    Image->ImageContext.ImageDataMemoryType = EfiRuntimeServicesData;\r
+    break;\r
+  default:\r
+    Image->ImageContext.ImageError = IMAGE_ERROR_INVALID_SUBSYSTEM;\r
+    return EFI_UNSUPPORTED;\r
+  }\r
 \r
   //\r
   // Allocate memory of the correct memory type aligned on the required image boundry\r
@@ -425,8 +446,25 @@ Returns:
     UINTN Index;\r
     UINTN StartIndex;\r
     CHAR8 EfiFileName[256];\r
-\r
-    DEBUG ((EFI_D_INFO | EFI_D_LOAD, "Loading driver at 0x%10p EntryPoint=0x%10p ", (VOID *)(UINTN)Image->ImageContext.ImageAddress, (VOID *)(UINTN)Image->ImageContext.EntryPoint));\r
+    \r
+    if (Image->ImageContext.Machine != IMAGE_FILE_MACHINE_IA64) {\r
+      DEBUG ((EFI_D_INFO | EFI_D_LOAD, \r
+              "Loading driver at 0x%10p EntryPoint=0x%10p ", \r
+              (VOID *)(UINTN)Image->ImageContext.ImageAddress, \r
+              (VOID *)(UINTN)Image->ImageContext.EntryPoint));\r
+    } else {\r
+      //\r
+      // For IPF Image, the real entry point should be print.\r
+      //      \r
+      DEBUG ((EFI_D_INFO | EFI_D_LOAD, \r
+              "Loading driver at 0x%10p EntryPoint=0x%10p ", \r
+              (VOID *)(UINTN)Image->ImageContext.ImageAddress, \r
+              (VOID *)(UINTN)(*(UINT64 *)(UINTN)Image->ImageContext.EntryPoint)));\r
+    }\r
+    \r
+    //\r
+    // Print Module Name by Pdb file path\r
+    //\r
     if (Image->ImageContext.PdbPointer != NULL) {\r
       StartIndex = 0;\r
       for (Index = 0; Image->ImageContext.PdbPointer[Index] != 0; Index++) {\r