Correct some check.
authorlgao4 <lgao4@7335b38e-4728-0410-8992-fb3ffe349368>
Thu, 12 Mar 2009 16:01:32 +0000 (16:01 +0000)
committerlgao4 <lgao4@7335b38e-4728-0410-8992-fb3ffe349368>
Thu, 12 Mar 2009 16:01:32 +0000 (16:01 +0000)
git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@1521 7335b38e-4728-0410-8992-fb3ffe349368

Source/C/EfiRom/EfiRom.c

index 4a1d3ce..f141957 100644 (file)
@@ -84,10 +84,6 @@ Returns:
     VerboseMsg("%s tool start.\n", UTILITY_NAME);\r
   }\r
   \r
-  if (mOptions.FileList == NULL) {\r
-    Error (NULL, 0, 1002, "No input file", NULL);\r
-    goto BailOut;\r
-  }\r
   //\r
   // If dumping an image, then do that and quit\r
   //\r
@@ -335,7 +331,15 @@ Returns:
     }\r
   }\r
 \r
-  \r
+  //\r
+  // ReSet Option Rom size\r
+  //\r
+  if (mOptions.Pci23 == 1) {\r
+    PciDs23->ImageLength = (UINT16) (TotalSize / 512);\r
+  } else {\r
+    PciDs30->ImageLength = (UINT16) (TotalSize / 512);\r
+       }\r
+\r
   //\r
   // If this is the last image, then set the LAST bit unless requested not\r
   // to via the command-line -n argument. Otherwise, make sure you clear it.\r
@@ -862,8 +866,10 @@ Returns:
   UINT32    ClassCode;\r
   UINT32    CodeRevision;\r
   EFI_STATUS Status;\r
+  BOOLEAN    EfiRomFlag;\r
 \r
   FileFlags = 0;\r
+  EfiRomFlag = FALSE;\r
 \r
   //\r
   // Clear out the options\r
@@ -1085,6 +1091,12 @@ Returns:
         return STATUS_ERROR;\r
       }\r
       //\r
+      // Check Efi Option RomImage\r
+      //\r
+      if ((FileFlags & FILE_FLAG_EFI) != 0) {\r
+        EfiRomFlag = TRUE;\r
+      }\r
+      //\r
       // Create a new file structure\r
       //\r
       FileList = (FILE_LIST *) malloc (sizeof (FILE_LIST));\r
@@ -1133,17 +1145,19 @@ Returns:
   }\r
 \r
   //\r
-  // Make sure they specified a device ID and vendor ID\r
+  // For EFI OptionRom image, Make sure a device ID and vendor ID are both specified.\r
   //\r
-  if (!Options->VendIdValid) {\r
-    Error (NULL, 0, 2000, "Missing Vendor ID in command line", NULL);\r
-    return STATUS_ERROR;\r
-  }\r
-\r
-  if (!Options->DevIdValid) {\r
-    Error (NULL, 0, 2000, "Missing Device ID in command line", NULL);\r
-    Usage ();\r
-    return STATUS_ERROR;\r
+  if (EfiRomFlag) {\r
+    if (!Options->VendIdValid) {\r
+      Error (NULL, 0, 2000, "Missing Vendor ID in command line", NULL);\r
+      return STATUS_ERROR;\r
+    }\r
+  \r
+    if (!Options->DevIdValid) {\r
+      Error (NULL, 0, 2000, "Missing Device ID in command line", NULL);\r
+      Usage ();\r
+      return STATUS_ERROR;\r
+    }\r
   }\r
 \r
   return 0;\r