]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/C/GenFv/GenFv.c
Sync basetools' source and binary files with r1707 of the basetools project.
[mirror_edk2.git] / BaseTools / Source / C / GenFv / GenFv.c
index e080422e5488134eec0066fd28c7f4f579b1d1c9..f2ff2d29cd00ce503342653e976c16f1dfcfb43c 100644 (file)
@@ -1,6 +1,6 @@
 /** @file\r
 \r
-Copyright (c) 2007 - 2008, Intel Corporation                                                         \r
+Copyright (c) 2007 - 2009, Intel Corporation                                                         \r
 All rights reserved. This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
 which accompanies this distribution.  The full text of the license may be found at        \r
@@ -141,7 +141,7 @@ Returns:
   fprintf (stdout, "  --FvNameGuid          GuidValue is the Fv Name Guid value.\n\\r
                         Its format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n");\r
   fprintf (stdout, "  --capflag CapFlag     Capsule Reset Flag can be PersistAcrossReset,\n\\r
-                        or PopulateSystemTable or not set.\n");\r
+                        or PopulateSystemTable or InitiateReset or not set\n");\r
   fprintf (stdout, "  --capheadsize HeadSize\n\\r
                         HeadSize is one HEX or DEC format value\n\\r
                         HeadSize is required by Capsule Image.\n");                        \r
@@ -218,6 +218,7 @@ Returns:
   Index         = 0;\r
   mFvTotalSize  = 0;\r
   mFvTakenSize  = 0;\r
+  Status        = EFI_SUCCESS;\r
 \r
   SetUtilityName (UTILITY_NAME);\r
   \r
@@ -232,10 +233,10 @@ Returns:
   //\r
   memset (&mFvDataInfo, 0, sizeof (FV_INFO));\r
   memset (&mCapDataInfo, 0, sizeof (CAP_INFO)); \r
-       //\r
-       // Set the default FvGuid\r
-       //\r
-       memcpy (&mFvDataInfo.FvFileSystemGuid, &mEfiFirmwareFileSystem2Guid, sizeof (EFI_GUID));\r
+  //\r
+  // Set the default FvGuid\r
+  //\r
+  memcpy (&mFvDataInfo.FvFileSystemGuid, &mEfiFirmwareFileSystem2Guid, sizeof (EFI_GUID));\r
    \r
   //\r
   // Parse command line\r
@@ -312,7 +313,7 @@ Returns:
         return STATUS_ERROR;        \r
       }\r
       mFvDataInfo.FvBlocks[0].Length = (UINT32) TempNumber;\r
-      DebugMsg (NULL, 0, 9, "FV Block Size", "%s = 0x%x", EFI_BLOCK_SIZE_STRING, TempNumber);\r
+      DebugMsg (NULL, 0, 9, "FV Block Size", "%s = 0x%llx", EFI_BLOCK_SIZE_STRING, (unsigned long long) TempNumber);\r
       argc -= 2;\r
       argv += 2;\r
       continue; \r
@@ -329,7 +330,7 @@ Returns:
         return STATUS_ERROR;        \r
       }\r
       mFvDataInfo.FvBlocks[0].NumBlocks = (UINT32) TempNumber;\r
-      DebugMsg (NULL, 0, 9, "FV Number Block", "%s = 0x%x", EFI_NUM_BLOCKS_STRING, TempNumber);\r
+      DebugMsg (NULL, 0, 9, "FV Number Block", "%s = 0x%llx", EFI_NUM_BLOCKS_STRING, (unsigned long long) TempNumber);\r
       argc -= 2;\r
       argv += 2;\r
       continue; \r
@@ -341,7 +342,7 @@ Returns:
         return STATUS_ERROR;\r
       }\r
       strcpy (mFvDataInfo.FvFiles[Index], argv[1]);\r
-      DebugMsg (NULL, 0, 9, "FV component file", "the %dth name is %s", Index + 1, argv[1]);\r
+      DebugMsg (NULL, 0, 9, "FV component file", "the %uth name is %s", (unsigned) Index + 1, argv[1]);\r
       argc -= 2;\r
       argv += 2;\r
 \r
@@ -356,8 +357,8 @@ Returns:
                        Error (NULL, 0, 1003, "Invalid option value", "%s = %s", argv[0], argv[1]);\r
                        return STATUS_ERROR;        \r
                      }\r
-                     mFvDataInfo.SizeofFvFiles[Index] = TempNumber;\r
-               DebugMsg (NULL, 0, 9, "FV component file size", "the %dth size is %s", Index + 1, argv[1]);\r
+                     mFvDataInfo.SizeofFvFiles[Index] = (UINT32) TempNumber;\r
+               DebugMsg (NULL, 0, 9, "FV component file size", "the %uth size is %s", (unsigned) Index + 1, argv[1]);\r
                argc -= 2;\r
                argv += 2;\r
         }\r
@@ -388,7 +389,7 @@ Returns:
         return STATUS_ERROR;        \r
       }\r
       mCapDataInfo.HeaderSize = (UINT32) TempNumber;\r
-      DebugMsg (NULL, 0, 9, "Capsule Header size", "%s = 0x%x", EFI_CAPSULE_HEADER_SIZE_STRING, TempNumber);\r
+      DebugMsg (NULL, 0, 9, "Capsule Header size", "%s = 0x%llx", EFI_CAPSULE_HEADER_SIZE_STRING, (unsigned long long) TempNumber);\r
       argc -= 2;\r
       argv += 2;\r
       continue; \r
@@ -406,6 +407,8 @@ Returns:
         mCapDataInfo.Flags |= CAPSULE_FLAGS_PERSIST_ACROSS_RESET | CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE;\r
       } else if (strcmp (argv[1], "PersistAcrossReset") == 0) {\r
         mCapDataInfo.Flags |= CAPSULE_FLAGS_PERSIST_ACROSS_RESET;\r
+      } else if (strcmp (argv[1], "InitiateReset") == 0) {\r
+        mCapDataInfo.Flags |= CAPSULE_FLAGS_PERSIST_ACROSS_RESET | CAPSULE_FLAGS_INITIATE_RESET;\r
       } else {\r
         Error (NULL, 0, 1003, "Invalid option value", "%s = %s", argv[0], argv[1]);\r
         return STATUS_ERROR;\r
@@ -506,7 +509,7 @@ Returns:
         return STATUS_ERROR;\r
       }\r
       if (LogLevel > 9) {\r
-        Error (NULL, 0, 1003, "Invalid option value", "Debug Level range is 0-9, current input level is %d", LogLevel);\r
+        Error (NULL, 0, 1003, "Invalid option value", "Debug Level range is 0-9, current input level is %d", (int) LogLevel);\r
         return STATUS_ERROR;\r
       }\r
       SetPrintLevel (LogLevel);\r
@@ -625,20 +628,20 @@ Returns:
     }\r
     fprintf (FpFile, "Capsule %s Image Header Information\n", InfFileName);\r
     fprintf (FpFile, "  GUID                  %08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X\n", \r
-                    CapsuleHeader->CapsuleGuid.Data1,\r
-                    (UINT32) CapsuleHeader->CapsuleGuid.Data2,\r
-                    (UINT32) CapsuleHeader->CapsuleGuid.Data3,\r
-                    (UINT32) CapsuleHeader->CapsuleGuid.Data4[0],\r
-                    (UINT32) CapsuleHeader->CapsuleGuid.Data4[1],\r
-                    (UINT32) CapsuleHeader->CapsuleGuid.Data4[2],\r
-                    (UINT32) CapsuleHeader->CapsuleGuid.Data4[3],\r
-                    (UINT32) CapsuleHeader->CapsuleGuid.Data4[4],\r
-                    (UINT32) CapsuleHeader->CapsuleGuid.Data4[5],\r
-                    (UINT32) CapsuleHeader->CapsuleGuid.Data4[6],\r
-                    (UINT32) CapsuleHeader->CapsuleGuid.Data4[7]);\r
-    fprintf (FpFile, "  Header size           0x%08X\n", CapsuleHeader->HeaderSize);\r
-    fprintf (FpFile, "  Flags                 0x%08X\n", CapsuleHeader->Flags);\r
-    fprintf (FpFile, "  Capsule image size    0x%08X\n", CapsuleHeader->CapsuleImageSize);\r
+                    (unsigned) CapsuleHeader->CapsuleGuid.Data1,\r
+                    (unsigned) CapsuleHeader->CapsuleGuid.Data2,\r
+                    (unsigned) CapsuleHeader->CapsuleGuid.Data3,\r
+                    (unsigned) CapsuleHeader->CapsuleGuid.Data4[0],\r
+                    (unsigned) CapsuleHeader->CapsuleGuid.Data4[1],\r
+                    (unsigned) CapsuleHeader->CapsuleGuid.Data4[2],\r
+                    (unsigned) CapsuleHeader->CapsuleGuid.Data4[3],\r
+                    (unsigned) CapsuleHeader->CapsuleGuid.Data4[4],\r
+                    (unsigned) CapsuleHeader->CapsuleGuid.Data4[5],\r
+                    (unsigned) CapsuleHeader->CapsuleGuid.Data4[6],\r
+                    (unsigned) CapsuleHeader->CapsuleGuid.Data4[7]);\r
+    fprintf (FpFile, "  Header size           0x%08X\n", (unsigned) CapsuleHeader->HeaderSize);\r
+    fprintf (FpFile, "  Flags                 0x%08X\n", (unsigned) CapsuleHeader->Flags);\r
+    fprintf (FpFile, "  Capsule image size    0x%08X\n", (unsigned) CapsuleHeader->CapsuleImageSize);\r
     fclose (FpFile);\r
   } else if (CapsuleFlag) {\r
     VerboseMsg ("Create capsule image");\r
@@ -657,7 +660,7 @@ Returns:
   } else {\r
     VerboseMsg ("Create Fv image and its map file");\r
     if (mFvDataInfo.BaseAddress != 0) {\r
-      VerboseMsg ("FvImage Rebase Address is 0x%X", mFvDataInfo.BaseAddress);\r
+      VerboseMsg ("FvImage Rebase Address is 0x%llX", (unsigned long long) mFvDataInfo.BaseAddress);\r
     }\r
     //\r
     // Call the GenerateFvImage to generate Fv Image\r
@@ -690,21 +693,29 @@ Returns:
     fprintf (FpFile, "\n");\r
     if (mFvDataInfo.BootBaseAddress != 0) {\r
       fprintf (FpFile, EFI_FV_BOOT_DRIVER_BASE_ADDRESS_STRING);\r
-      fprintf (FpFile, " = 0x%lx\n", mFvDataInfo.BootBaseAddress);\r
-      DebugMsg (NULL, 0, 9, "Updated boot driver base address", "%s = 0x%x", EFI_FV_RUNTIME_DRIVER_BASE_ADDRESS_STRING, mFvDataInfo.BootBaseAddress);\r
+      fprintf (\r
+        FpFile,\r
+        " = 0x%llx\n",\r
+        (unsigned long long)mFvDataInfo.BootBaseAddress\r
+        );\r
+      DebugMsg (NULL, 0, 9, "Updated boot driver base address", "%s = 0x%llx", EFI_FV_RUNTIME_DRIVER_BASE_ADDRESS_STRING, (unsigned long long) mFvDataInfo.BootBaseAddress);\r
     }\r
     if (mFvDataInfo.RuntimeBaseAddress != 0) {\r
       fprintf (FpFile, EFI_FV_RUNTIME_DRIVER_BASE_ADDRESS_STRING);\r
-      fprintf (FpFile, " = 0x%lx\n", mFvDataInfo.RuntimeBaseAddress);\r
-      DebugMsg (NULL, 0, 9, "Updated runtime driver base address", "%s = 0x%x", EFI_FV_RUNTIME_DRIVER_BASE_ADDRESS_STRING, mFvDataInfo.RuntimeBaseAddress);\r
+      fprintf (\r
+        FpFile,\r
+        " = 0x%llx\n",\r
+        (unsigned long long)mFvDataInfo.RuntimeBaseAddress\r
+        );\r
+      DebugMsg (NULL, 0, 9, "Updated runtime driver base address", "%s = 0x%llx", EFI_FV_RUNTIME_DRIVER_BASE_ADDRESS_STRING, (unsigned long long) mFvDataInfo.RuntimeBaseAddress);\r
     }\r
     fclose (FpFile);\r
   }\r
   \r
   if (Status == EFI_SUCCESS) {\r
-    DebugMsg (NULL, 0, 9, "The Total Fv Size", "%s = 0x%x", EFI_FV_TOTAL_SIZE_STRING, mFvTotalSize);\r
-    DebugMsg (NULL, 0, 9, "The used Fv Size", "%s = 0x%x", EFI_FV_TAKEN_SIZE_STRING, mFvTakenSize);\r
-    DebugMsg (NULL, 0, 9, "The space Fv size", "%s = 0x%x", EFI_FV_SPACE_SIZE_STRING, mFvTotalSize - mFvTakenSize);\r
+    DebugMsg (NULL, 0, 9, "The Total Fv Size", "%s = 0x%x", EFI_FV_TOTAL_SIZE_STRING, (unsigned) mFvTotalSize);\r
+    DebugMsg (NULL, 0, 9, "The used Fv Size", "%s = 0x%x", EFI_FV_TAKEN_SIZE_STRING, (unsigned) mFvTakenSize);\r
+    DebugMsg (NULL, 0, 9, "The space Fv size", "%s = 0x%x", EFI_FV_SPACE_SIZE_STRING, (unsigned) (mFvTotalSize - mFvTakenSize));\r
   }\r
 \r
   VerboseMsg ("%s tool done with return code is 0x%x.", UTILITY_NAME, GetUtilityStatus ());\r