summaryrefslogtreecommitdiff
path: root/Tools/CCode/Source/FlashMap/FlashMap.c
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/CCode/Source/FlashMap/FlashMap.c')
-rw-r--r--Tools/CCode/Source/FlashMap/FlashMap.c820
1 files changed, 0 insertions, 820 deletions
diff --git a/Tools/CCode/Source/FlashMap/FlashMap.c b/Tools/CCode/Source/FlashMap/FlashMap.c
deleted file mode 100644
index 41f6de4025..0000000000
--- a/Tools/CCode/Source/FlashMap/FlashMap.c
+++ /dev/null
@@ -1,820 +0,0 @@
-/*++
-
-Copyright (c) 2004-2006 Intel Corporation. All rights reserved
-This program and the accompanying materials are licensed and made available
-under the terms and conditions of the BSD License which accompanies this
-distribution. The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-Module Name:
-
- FlashMap.c
-
-Abstract:
-
- Utility for flash management in the Intel Platform Innovation Framework
- for EFI build environment.
-
---*/
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <ctype.h>
-
-#include <Common/UefiBaseTypes.h>
-
-#include "EfiUtilityMsgs.h"
-#include "Microcode.h"
-#include "FlashDefFile.h"
-#include "Symbols.h"
-
-//
-// Version of this utility
-//
-#define UTILITY_NAME "FlashMap"
-#define UTILITY_MAJOR_VERSION 1
-#define UTILITY_MINOR_VERSION 0
-
-
-typedef struct _STRING_LIST {
- struct _STRING_LIST *Next;
- char *Str;
-} STRING_LIST;
-
-//
-// Keep our globals in one of these structures
-//
-static struct {
- char *CIncludeFileName;
- char *FlashDevice;
- char *FlashDeviceImage;
- char *MCIFileName;
- char *MCOFileName;
- char *ImageOutFileName;
- char *DscFileName;
- char *AsmIncludeFileName;
- char *FlashDefinitionFileName;
- char *StringReplaceInFileName;
- char *StringReplaceOutFileName;
- char *DiscoverFDImageName;
- char MicrocodePadByteValue;
- unsigned int MicrocodeAlignment;
- STRING_LIST *MCIFileNames;
- STRING_LIST *LastMCIFileNames;
- unsigned int BaseAddress;
-} mGlobals;
-
-#define DEFAULT_MC_PAD_BYTE_VALUE 0xFF
-#define DEFAULT_MC_ALIGNMENT 16
-
-static
-STATUS
-ProcessCommandLine (
- int argc,
- char *argv[]
- );
-
-static
-STATUS
-MergeMicrocodeFiles (
- char *OutFileName,
- STRING_LIST *FileNames,
- unsigned int Alignment,
- char PadByteValue
- );
-
-static
-void
-Version (
- VOID
- );
-
-static
-void
-Usage (
- VOID
- );
-
-char*
-NormalizePath (
- char* OldPathName
- );
-
-int
-main (
- int argc,
- char *argv[]
- )
-/*++
-
-Routine Description:
- Parse the command line arguments and then call worker functions to do the work
-
-Arguments:
- argc - number of elements in argv
- argv - array of command-line arguments
-
-Returns:
- STATUS_SUCCESS - no problems encountered while processing
- STATUS_WARNING - warnings, but no errors, were encountered while processing
- STATUS_ERROR - errors were encountered while processing
-
---*/
-{
- STATUS Status;
-
- SetUtilityName (UTILITY_NAME);
- Status = ProcessCommandLine (argc, argv);
- if (Status != STATUS_SUCCESS) {
- return Status;
- }
- //
- // Check for discovery of an FD (command line option)
- //
- if (mGlobals.DiscoverFDImageName != NULL) {
- Status = FDDiscover (mGlobals.DiscoverFDImageName, mGlobals.BaseAddress);
- goto Done;
- }
- //
- // If they're doing microcode file parsing, then do that
- //
- if (mGlobals.MCIFileName != NULL) {
- MicrocodeConstructor ();
- MicrocodeParseFile (mGlobals.MCIFileName, mGlobals.MCOFileName);
- MicrocodeDestructor ();
- }
- //
- // If they're doing microcode file merging, then do that now
- //
- if (mGlobals.MCIFileNames != NULL) {
- MergeMicrocodeFiles (
- mGlobals.MCOFileName,
- mGlobals.MCIFileNames,
- mGlobals.MicrocodeAlignment,
- mGlobals.MicrocodePadByteValue
- );
- }
- //
- // If using a flash definition file, then process that and return
- //
- if (mGlobals.FlashDefinitionFileName != NULL) {
- FDFConstructor ();
- SymbolsConstructor ();
- Status = FDFParseFile (mGlobals.FlashDefinitionFileName);
- if (GetUtilityStatus () != STATUS_ERROR) {
- //
- // If they want us to do a string-replace on a file, then add the symbol definitions to
- // the symbol table, and then do the string replace.
- //
- if (mGlobals.StringReplaceInFileName != NULL) {
- Status = FDFCreateSymbols (mGlobals.FlashDevice);
- Status = SymbolsFileStringsReplace (mGlobals.StringReplaceInFileName, mGlobals.StringReplaceOutFileName);
- }
- //
- // If they want us to create a .h defines file or .c flashmap data file, then do so now
- //
- if (mGlobals.CIncludeFileName != NULL) {
- Status = FDFCreateCIncludeFile (mGlobals.FlashDevice, mGlobals.CIncludeFileName);
- }
- if (mGlobals.AsmIncludeFileName != NULL) {
- Status = FDFCreateAsmIncludeFile (mGlobals.FlashDevice, mGlobals.AsmIncludeFileName);
- }
- //
- // If they want us to create an image, do that now
- //
- if (mGlobals.ImageOutFileName != NULL) {
- Status = FDFCreateImage (mGlobals.FlashDevice, mGlobals.FlashDeviceImage, mGlobals.ImageOutFileName);
- }
- //
- // If they want to create an output DSC file, do that now
- //
- if (mGlobals.DscFileName != NULL) {
- Status = FDFCreateDscFile (mGlobals.FlashDevice, mGlobals.DscFileName);
- }
- }
- SymbolsDestructor ();
- FDFDestructor ();
- }
-Done:
- //
- // Free up memory
- //
- while (mGlobals.MCIFileNames != NULL) {
- mGlobals.LastMCIFileNames = mGlobals.MCIFileNames->Next;
- _free (mGlobals.MCIFileNames);
- mGlobals.MCIFileNames = mGlobals.LastMCIFileNames;
- }
- return GetUtilityStatus ();
-}
-
-static
-STATUS
-MergeMicrocodeFiles (
- char *OutFileName,
- STRING_LIST *FileNames,
- unsigned int Alignment,
- char PadByteValue
- )
-/*++
-
-Routine Description:
-
- Merge binary microcode files into a single file, taking into consideration
- the alignment and pad value.
-
-Arguments:
-
- OutFileName - name of the output file to create
- FileNames - linked list of input microcode files to merge
- Alignment - alignment for each microcode file in the output image
- PadByteValue - value to use when padding to meet alignment requirements
-
-Returns:
-
- STATUS_SUCCESS - merge completed successfully or with acceptable warnings
- STATUS_ERROR - merge failed, output file not created
-
---*/
-{
- long FileSize;
- long TotalFileSize;
- FILE *InFptr;
- FILE *OutFptr;
- char *Buffer;
- STATUS Status;
-
- //
- // Open the output file
- //
- if ((OutFptr = fopen (OutFileName, "wb")) == NULL) {
- Error (NULL, 0, 0, OutFileName, "failed to open output file for writing");
- return STATUS_ERROR;
- }
- //
- // Walk the list of files
- //
- Status = STATUS_ERROR;
- Buffer = NULL;
- InFptr = NULL;
- TotalFileSize = 0;
- while (FileNames != NULL) {
- //
- // Open the file, determine the size, then read it in and write
- // it back out.
- //
- if ((InFptr = fopen (NormalizePath(FileNames->Str), "rb")) == NULL) {
- Error (NULL, 0, 0, NormalizePath(FileNames->Str), "failed to open input file for reading");
- goto Done;
- }
- fseek (InFptr, 0, SEEK_END);
- FileSize = ftell (InFptr);
- fseek (InFptr, 0, SEEK_SET);
- if (FileSize != 0) {
- Buffer = (char *) _malloc (FileSize);
- if (Buffer == NULL) {
- Error (NULL, 0, 0, "memory allocation failure", NULL);
- goto Done;
- }
- if (fread (Buffer, FileSize, 1, InFptr) != 1) {
- Error (NULL, 0, 0, FileNames->Str, "failed to read file contents");
- goto Done;
- }
- //
- // Align
- //
- if (Alignment != 0) {
- while ((TotalFileSize % Alignment) != 0) {
- if (fwrite (&PadByteValue, 1, 1, OutFptr) != 1) {
- Error (NULL, 0, 0, OutFileName, "failed to write pad bytes to output file");
- goto Done;
- }
- TotalFileSize++;
- }
- }
- TotalFileSize += FileSize;
- if (fwrite (Buffer, FileSize, 1, OutFptr) != 1) {
- Error (NULL, 0, 0, OutFileName, "failed to write to output file");
- goto Done;
- }
- _free (Buffer);
- Buffer = NULL;
- } else {
- Warning (NULL, 0, 0, FileNames->Str, "0-size file encountered");
- }
- fclose (InFptr);
- InFptr = NULL;
- FileNames = FileNames->Next;
- }
- Status = STATUS_SUCCESS;
-Done:
- fclose (OutFptr);
- if (InFptr != NULL) {
- fclose (InFptr);
- }
- if (Buffer != NULL) {
- _free (Buffer);
- }
- if (Status == STATUS_ERROR) {
- remove (OutFileName);
- }
- return Status;
-}
-
-static
-STATUS
-ProcessCommandLine (
- int argc,
- char *argv[]
- )
-/*++
-
-Routine Description:
- Process the command line arguments
-
-Arguments:
- argc - Standard C entry point arguments
- argv[] - Standard C entry point arguments
-
-Returns:
- STATUS_SUCCESS - no problems encountered while processing
- STATUS_WARNING - warnings, but no errors, were encountered while processing
- STATUS_ERROR - errors were encountered while processing
-
---*/
-{
- int ThingsToDo;
- unsigned int Temp;
- STRING_LIST *Str;
- //
- // Skip program name arg, process others
- //
- argc--;
- argv++;
- if (argc == 0) {
- Usage ();
- return STATUS_ERROR;
- }
-
- if ((strcmp(argv[0], "-h") == 0) || (strcmp(argv[0], "--help") == 0) ||
- (strcmp(argv[0], "-?") == 0) || (strcmp(argv[0], "/?") == 0)) {
- Usage();
- return STATUS_ERROR;
- }
-
- if ((strcmp(argv[0], "-V") == 0) || (strcmp(argv[0], "--version") == 0)) {
- Version();
- return STATUS_ERROR;
- }
-
- //
- // Clear out our globals, then start walking the arguments
- //
- memset ((void *) &mGlobals, 0, sizeof (mGlobals));
- mGlobals.MicrocodePadByteValue = DEFAULT_MC_PAD_BYTE_VALUE;
- mGlobals.MicrocodeAlignment = DEFAULT_MC_ALIGNMENT;
- ThingsToDo = 0;
- while (argc > 0) {
- if (strcmp (argv[0], "-?") == 0) {
- Usage ();
- return STATUS_ERROR;
- } else if (strcmp (argv[0], "-hfile") == 0) {
- //
- // -hfile FileName
- //
- // Used to specify an output C #include file to create that contains
- // #define statements for all the flashmap region offsets and sizes.
- // Check for additional argument.
- //
- if (argc < 2) {
- Error (NULL, 0, 0, argv[0], "option requires an output file name");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- mGlobals.CIncludeFileName = argv[0];
- ThingsToDo++;
- } else if (strcmp (argv[0], "-flashdevice") == 0) {
- //
- // -flashdevice FLASH_DEVICE_NAME
- //
- // Used to select which flash device definition to operate on.
- // Check for additional argument
- //
- if (argc < 2) {
- Error (NULL, 0, 0, argv[0], "option requires a flash device name to use");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- mGlobals.FlashDevice = argv[0];
- } else if (strcmp (argv[0], "-mco") == 0) {
- //
- // -mco OutFileName
- //
- // Used to specify a microcode output binary file to create.
- // Check for additional argument.
- //
- if (argc < 2) {
- Error (NULL, 0, 0, (INT8 *) argv[0], (INT8 *) "option requires an output microcode file name to create");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- mGlobals.MCOFileName = argv[0];
- ThingsToDo++;
- } else if (strcmp (argv[0], "-asmincfile") == 0) {
- //
- // -asmincfile FileName
- //
- // Used to specify the name of the output assembly include file that contains
- // equates for the flash region addresses and sizes.
- // Check for additional argument.
- //
- if (argc < 2) {
- Error (NULL, 0, 0, argv[0], "option requires an output ASM include file name to create");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- mGlobals.AsmIncludeFileName = argv[0];
- ThingsToDo++;
- } else if (strcmp (argv[0], "-mci") == 0) {
- //
- // -mci FileName
- //
- // Used to specify an input microcode text file to parse.
- // Check for additional argument
- //
- if (argc < 2) {
- Error (NULL, 0, 0, (INT8 *) argv[0], (INT8 *) "option requires an input microcode text file name to parse");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- mGlobals.MCIFileName = argv[0];
- } else if (strcmp (argv[0], "-flashdeviceimage") == 0) {
- //
- // -flashdeviceimage FlashDeviceImage
- //
- // Used to specify which flash device image definition from the input flash definition file
- // to create.
- // Check for additional argument.
- //
- if (argc < 2) {
- Error (NULL, 0, 0, argv[0], "option requires the name of a flash definition image to use");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- mGlobals.FlashDeviceImage = argv[0];
- } else if (strcmp (argv[0], "-imageout") == 0) {
- //
- // -imageout FileName
- //
- // Used to specify the name of the output FD image file to create.
- // Check for additional argument.
- //
- if (argc < 2) {
- Error (NULL, 0, 0, argv[0], "option requires an output image filename to create");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- mGlobals.ImageOutFileName = argv[0];
- ThingsToDo++;
- } else if (strcmp (argv[0], "-dsc") == 0) {
- //
- // -dsc FileName
- //
- // Used to specify the name of the output DSC file to create.
- // Check for additional argument.
- //
- if (argc < 2) {
- Error (NULL, 0, 0, argv[0], "option requires an output DSC filename to create");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- mGlobals.DscFileName = argv[0];
- ThingsToDo++;
- } else if (strcmp (argv[0], "-fdf") == 0) {
- //
- // -fdf FileName
- //
- // Used to specify the name of the input flash definition file.
- // Check for additional argument.
- //
- if (argc < 2) {
- Error (NULL, 0, 0, argv[0], "option requires an input flash definition file name");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- mGlobals.FlashDefinitionFileName = argv[0];
- } else if (strcmp (argv[0], "-discover") == 0) {
- //
- // -discover FDFileName
- //
- // Debug functionality used to scan an existing FD image, trying to find
- // firmware volumes at 64K boundaries.
- // Check for additional argument.
- //
- if (argc < 2) {
- Error (NULL, 0, 0, argv[0], "option requires an input FD image file name");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- mGlobals.DiscoverFDImageName = argv[0];
- ThingsToDo++;
- } else if (strcmp (argv[0], "-baseaddr") == 0) {
- //
- // -baseaddr Addr
- //
- // Used to specify a base address when doing a discover of an FD image.
- // Check for additional argument.
- //
- if (argc < 2) {
- Error (NULL, 0, 0, argv[0], "option requires a base address");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- if (tolower (argv[0][1]) == 'x') {
- sscanf (argv[0] + 2, "%x", &mGlobals.BaseAddress);
- } else {
- sscanf (argv[0], "%d", &mGlobals.BaseAddress);
- }
- } else if (strcmp (argv[0], "-padvalue") == 0) {
- //
- // -padvalue Value
- //
- // Used to specify the value to pad with when aligning data while
- // creating an FD image. Check for additional argument.
- //
- if (argc < 2) {
- Error (NULL, 0, 0, argv[0], "option requires a byte value");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- if (tolower (argv[0][1]) == 'x') {
- sscanf (argv[0] + 2, "%x", &Temp);
- mGlobals.MicrocodePadByteValue = (char) Temp;
- } else {
- sscanf (argv[0], "%d", &Temp);
- mGlobals.MicrocodePadByteValue = (char) Temp;
- }
- } else if (strcmp (argv[0], "-align") == 0) {
- //
- // -align Alignment
- //
- // Used to specify how each data file is aligned in the region
- // when creating an FD image. Check for additional argument.
- //
- if (argc < 2) {
- Error (NULL, 0, 0, argv[0], "option requires an alignment");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- if (tolower (argv[0][1]) == 'x') {
- sscanf (argv[0] + 2, "%x", &mGlobals.MicrocodeAlignment);
- } else {
- sscanf (argv[0], "%d", &mGlobals.MicrocodeAlignment);
- }
- } else if (strcmp (argv[0], "-mcmerge") == 0) {
- //
- // -mcmerge FileName(s)
- //
- // Used to concatenate multiple microde binary files. Can specify
- // multiple file names with the one -mcmerge flag. Check for additional argument.
- //
- if ((argc < 2) || (argv[1][0] == '-')) {
- Error (NULL, 0, 0, argv[0], "option requires one or more input file names");
- return STATUS_ERROR;
- }
- //
- // Take input files until another option or end of list
- //
- ThingsToDo++;
- while ((argc > 1) && (argv[1][0] != '-')) {
- Str = (STRING_LIST *) _malloc (sizeof (STRING_LIST));
- if (Str == NULL) {
- Error (NULL, 0, 0, "memory allocation failure", NULL);
- return STATUS_ERROR;
- }
- memset (Str, 0, sizeof (STRING_LIST));
- Str->Str = argv[1];
- if (mGlobals.MCIFileNames == NULL) {
- mGlobals.MCIFileNames = Str;
- } else {
- mGlobals.LastMCIFileNames->Next = Str;
- }
- mGlobals.LastMCIFileNames = Str;
- argc--;
- argv++;
- }
- } else if (strcmp (argv[0], "-strsub") == 0) {
- //
- // -strsub SrcFile DestFile
- //
- // Used to perform string substitutions on a file, writing the result to a new
- // file. Check for two additional arguments.
- //
- if (argc < 3) {
- Error (NULL, 0, 0, argv[0], "option requires input and output file names for string substitution");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- mGlobals.StringReplaceInFileName = argv[0];
- argc--;
- argv++;
- mGlobals.StringReplaceOutFileName = argv[0];
- ThingsToDo++;
- } else {
- Error (NULL, 0, 0, argv[0], "invalid option");
- return STATUS_ERROR;
- }
- argc--;
- argv++;
- }
- //
- // If no outputs requested, then report an error
- //
- if (ThingsToDo == 0) {
- Error (NULL, 0, 0, "nothing to do", NULL);
- return STATUS_ERROR;
- }
- //
- // If they want an asm file, #include file, or C file to be created, then they have to specify a
- // flash device name and flash definition file name.
- //
- if ((mGlobals.CIncludeFileName != NULL) &&
- ((mGlobals.FlashDevice == NULL) || (mGlobals.FlashDefinitionFileName == NULL))) {
- Error (NULL, 0, 0, "must specify -flashdevice and -fdf with -hfile", NULL);
- return STATUS_ERROR;
- }
- if ((mGlobals.AsmIncludeFileName != NULL) &&
- ((mGlobals.FlashDevice == NULL) || (mGlobals.FlashDefinitionFileName == NULL))) {
- Error (NULL, 0, 0, "must specify -flashdevice and -fdf with -asmincfile", NULL);
- return STATUS_ERROR;
- }
- //
- // If they want a dsc file to be created, then they have to specify a
- // flash device name and a flash definition file name
- //
- if (mGlobals.DscFileName != NULL) {
- if (mGlobals.FlashDevice == NULL) {
- Error (NULL, 0, 0, "must specify -flashdevice with -dsc", NULL);
- return STATUS_ERROR;
- }
- if (mGlobals.FlashDefinitionFileName == NULL) {
- Error (NULL, 0, 0, "must specify -fdf with -dsc", NULL);
- return STATUS_ERROR;
- }
- }
- //
- // If they specified an output microcode file name, then they have to specify an input
- // file name, and vice versa.
- //
- if ((mGlobals.MCIFileName != NULL) && (mGlobals.MCOFileName == NULL)) {
- Error (NULL, 0, 0, "must specify output microcode file name", NULL);
- return STATUS_ERROR;
- }
- if ((mGlobals.MCOFileName != NULL) && (mGlobals.MCIFileName == NULL) && (mGlobals.MCIFileNames == NULL)) {
- Error (NULL, 0, 0, "must specify input microcode file name", NULL);
- return STATUS_ERROR;
- }
- //
- // If doing merge, then have to specify output file name
- //
- if ((mGlobals.MCIFileNames != NULL) && (mGlobals.MCOFileName == NULL)) {
- Error (NULL, 0, 0, "must specify output microcode file name", NULL);
- return STATUS_ERROR;
- }
- //
- // If they want an output image to be created, then they have to specify
- // the flash device and the flash device image to use.
- //
- if (mGlobals.ImageOutFileName != NULL) {
- if (mGlobals.FlashDevice == NULL) {
- Error (NULL, 0, 0, "must specify -flashdevice with -imageout", NULL);
- return STATUS_ERROR;
- }
- if (mGlobals.FlashDeviceImage == NULL) {
- Error (NULL, 0, 0, "must specify -flashdeviceimage with -imageout", NULL);
- return STATUS_ERROR;
- }
- if (mGlobals.FlashDefinitionFileName == NULL) {
- Error (NULL, 0, 0, "must specify -c or -fdf with -imageout", NULL);
- return STATUS_ERROR;
- }
- }
- return STATUS_SUCCESS;
-}
-
-static
-void
-Version (
- VOID
- )
-/*++
-
-Routine Description:
-
- Print version information for this utility.
-
-Arguments:
-
- None.
-
-Returns:
-
- Nothing.
---*/
-{
- printf ("%s v%d.%d -EDK Utility for flash management for EFI build environment.\n", UTILITY_NAME, UTILITY_MAJOR_VERSION, UTILITY_MINOR_VERSION);
- printf ("Copyright (c) 1999-2006 Intel Corporation. All rights reserved.\n");
-}
-
-static
-void
-Usage (
- VOID
- )
-/*++
-
-Routine Description:
- Print utility command line help
-
-Arguments:
- None
-
-Returns:
- NA
-
---*/
-{
- int i;
- char *Msg[] = {
- "\nUsage: FlashTool -fdf FlashDefFile -flashdevice FlashDevice",
- " -flashdeviceimage FlashDeviceImage -mci MCIFile -mco MCOFile",
- " -discover FDImage -dsc DscFile -asmincfile AsmIncFile",
- " -imageOut ImageOutFile -hfile HFile -strsub InStrFile OutStrFile",
- " -baseaddr BaseAddr -align Alignment -padvalue PadValue",
- " -mcmerge MCIFile(s)",
- " -h,--help,-?,/? - to display help messages",
- " -V,--version - to display version information",
- " where",
- " FlashDefFile - input Flash Definition File",
- " FlashDevice - flash device to use (from flash definition file)",
- " FlashDeviceImage - flash device image to use (from flash definition file)",
- " MCIFile - input microcode file to parse",
- " MCOFile - output binary microcode image to create from MCIFile",
- " HFile - output #include file to create",
- " FDImage - name of input FDImage file to scan",
- " ImageOutFile - output image file to create",
- " DscFile - output DSC file to create",
- " AsmIncFile - output ASM include file to create",
- " InStrFile - input file to replace symbol names, writing result to OutStrFile",
- " BaseAddr - base address of FDImage (used with -discover)",
- " Alignment - alignment to use when merging microcode binaries",
- " PadValue - byte value to use as pad value when aligning microcode binaries",
- " MCIFile(s) - one or more microcode binary files to merge/concatenate",
- NULL
- };
-
- Version();
- for (i = 0; Msg[i] != NULL; i++) {
- fprintf (stdout, "%s\n", Msg[i]);
- }
-}
-
-char*
-NormalizePath (
- char* OldPathName
- )
-{
- char* Visitor;
-
- if (OldPathName == NULL) {
- return NULL;
- }
-
- Visitor = OldPathName;
- while (*Visitor != '\0') {
- if (*Visitor == '\\') {
- *Visitor = '/';
- }
- Visitor++;
- }
-
- return OldPathName;
-}
-