]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Bus/Pci/PciBus/Dxe/PciDriverOverride.c
Merge GOP related code from r8->r9.
[mirror_edk2.git] / EdkModulePkg / Bus / Pci / PciBus / Dxe / PciDriverOverride.c
index cd2d58530356f3895367977708f78c79c0b9c58b..70ad48b5ecce272b1a5a9c3af6940119533146e6 100644 (file)
@@ -139,8 +139,11 @@ Returns:
 // TODO:    EFI_SUCCESS - add return value to function comment\r
 {\r
   EFI_STATUS                    Status;\r
+  EFI_IMAGE_DOS_HEADER          *DosHdr;\r
+  EFI_IMAGE_NT_HEADERS          *PeHdr;\r
   EFI_LOADED_IMAGE_PROTOCOL     *LoadedImage;\r
   PCI_DRIVER_OVERRIDE_LIST      *Node;\r
+#if (EFI_SPECIFICATION_VERSION < 0x00020000)\r
   EFI_DRIVER_OS_HANDOFF_HEADER  *DriverOsHandoffHeader;\r
   EFI_DRIVER_OS_HANDOFF_HEADER  *NewDriverOsHandoffHeader;\r
   EFI_DRIVER_OS_HANDOFF         *DriverOsHandoff;\r
@@ -149,6 +152,7 @@ Returns:
   UINTN                         NumberOfEntries;\r
   UINTN                         Size;\r
   UINTN                         Index;\r
+#endif\r
 \r
   Status = gBS->HandleProtocol (DriverImageHandle, &gEfiLoadedImageProtocolGuid, (VOID **) &LoadedImage);\r
   if (EFI_ERROR (Status)) {\r
@@ -167,10 +171,18 @@ Returns:
 \r
   PciIoDevice->BusOverride  = TRUE;\r
 \r
-  if (PeCoffLoaderGetMachineType ((VOID *)(UINTN)LoadedImage->ImageBase) != EFI_IMAGE_MACHINE_EBC) {\r
+  DosHdr                    = (EFI_IMAGE_DOS_HEADER *) LoadedImage->ImageBase;\r
+  if (DosHdr->e_magic != EFI_IMAGE_DOS_SIGNATURE) {\r
     return EFI_SUCCESS;\r
   }\r
 \r
+  PeHdr = (EFI_IMAGE_NT_HEADERS *) ((UINTN) LoadedImage->ImageBase + DosHdr->e_lfanew);\r
+\r
+  if (PeHdr->FileHeader.Machine != EFI_IMAGE_MACHINE_EBC) {\r
+    return EFI_SUCCESS;\r
+  }\r
+\r
+#if (EFI_SPECIFICATION_VERSION < 0x00020000)\r
   DriverOsHandoffHeader = NULL;\r
   Status                = EfiGetSystemConfigurationTable (&gEfiUgaIoProtocolGuid, (VOID **) &DriverOsHandoffHeader);\r
   if (!EFI_ERROR (Status) && DriverOsHandoffHeader != NULL) {\r
@@ -276,6 +288,7 @@ Returns:
   if (DriverOsHandoffHeader != NULL) {\r
     gBS->FreePool (DriverOsHandoffHeader);\r
   }\r
+#endif\r
 \r
   return EFI_SUCCESS;\r
 }\r