git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2159 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			633 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			633 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*++
 | 
						|
 | 
						|
Copyright (c)  1999 - 2002 Intel Corporation. All rights reserved
 | 
						|
This software and associated documentation (if any) is furnished
 | 
						|
under a license and may only be used or copied in accordance
 | 
						|
with the terms of the license. Except as permitted by such
 | 
						|
license, no part of this software or documentation may be
 | 
						|
reproduced, stored in a retrieval system, or transmitted in any
 | 
						|
form or by any means without the express written consent of
 | 
						|
Intel Corporation.
 | 
						|
 | 
						|
 | 
						|
Module Name:  
 | 
						|
 | 
						|
  GenBsfImage.h
 | 
						|
 | 
						|
Abstract:
 | 
						|
 | 
						|
  This file contains the relevant declarations required
 | 
						|
  to generate Boot Strap File
 | 
						|
 | 
						|
--*/
 | 
						|
 | 
						|
//
 | 
						|
// Module Coded to EFI 2.0 Coding Conventions
 | 
						|
//
 | 
						|
#ifndef   _EFI_GEN_BSF_IMAGE_H
 | 
						|
#define   _EFI_GEN_BSF_IMAGE_H
 | 
						|
 | 
						|
//
 | 
						|
// External Files Referenced
 | 
						|
//
 | 
						|
#include <stdio.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <string.h>
 | 
						|
#include "assert.h"
 | 
						|
// #include "TianoCommon.h"
 | 
						|
#include "Common/FirmwareFileSystem.h"
 | 
						|
#include "Common/FirmwareVolumeHeader.h"
 | 
						|
#include "ParseInf.h"
 | 
						|
 | 
						|
//
 | 
						|
// Internal Constants
 | 
						|
//
 | 
						|
#define EFI_IPF_VTF1_GUID \
 | 
						|
  { \
 | 
						|
    0xfa371c9b, 0x5a86, 0x4198, 0xab, 0xc2, 0xed, 0x3f, 0xaa, 0xce, 0xb0, 0x8b \
 | 
						|
  };
 | 
						|
 | 
						|
#define EFI_IPF_VTF2_GUID \
 | 
						|
  { \
 | 
						|
    0x624a0d5a, 0x315f, 0x40b6, 0xa6, 0x33, 0xe5, 0xf7, 0xde, 0x58, 0x20, 0xa0 \
 | 
						|
  };
 | 
						|
 | 
						|
#define EFI_IA32_BOOT_STRAP_GUID \
 | 
						|
  { \
 | 
						|
    0xd4260a8d, 0x356, 0x4f45, 0x85, 0xe9, 0xad, 0x1d, 0x79, 0x22, 0x79, 0xf0 \
 | 
						|
  };
 | 
						|
 | 
						|
#define CV_N_TYPE(a,b)            (UINT8)(((UINT8)a << 7) + (UINT8)b)  // Keeps the CV and Type in same byte field
 | 
						|
#define MAKE_VERSION(a,b)         (UINT16)(((UINT16)a << 8) + (UINT16)b)
 | 
						|
 | 
						|
#define   FILE_NAME_SIZE          256
 | 
						|
#define   COMPONENT_NAME_SIZE     128
 | 
						|
#define   BSF_INPUT_FILE          "BSF.INF"
 | 
						|
#define   BSF_OUTPUT_FILE         "Bsf.RAW"
 | 
						|
#define   BSF_SYM_FILE            "Bsf.SYM"
 | 
						|
#define   FIT_SIGNATURE           "_FIT_   "
 | 
						|
 | 
						|
//
 | 
						|
// This is IA32 seccore
 | 
						|
//
 | 
						|
#define   COMP_TYPE_SECCORE             0x0F
 | 
						|
 | 
						|
//
 | 
						|
//Fit Type Definition
 | 
						|
//
 | 
						|
#define   COMP_TYPE_FIT_HEADER          0x00
 | 
						|
#define   COMP_TYPE_FIT_PAL_B           0x01
 | 
						|
 | 
						|
//
 | 
						|
// This is generic PAL_A
 | 
						|
//
 | 
						|
#define   COMP_TYPE_FIT_PAL_A           0x0F
 | 
						|
#define   COMP_TYPE_FIT_PEICORE         0x10
 | 
						|
#define   COMP_TYPE_FIT_AUTOSCAN        0x30
 | 
						|
#define   COMP_TYPE_FIT_FV_BOOT         0x7E
 | 
						|
 | 
						|
//
 | 
						|
//This is processor Specific PAL_A
 | 
						|
//
 | 
						|
#define   COMP_TYPE_FIT_PAL_A_SPECIFIC  0x0E
 | 
						|
#define   COMP_TYPE_FIT_UNUSED    0x7F
 | 
						|
 | 
						|
#define   FIT_TYPE_MASK           0x7F
 | 
						|
#define   CHECKSUM_BIT_MASK       0x80
 | 
						|
 | 
						|
//
 | 
						|
// IPF processor address is cached bit
 | 
						|
//
 | 
						|
#define IPF_CACHE_BIT 0x8000000000000000
 | 
						|
 | 
						|
//
 | 
						|
// Size definition to calculate the location from top of address for
 | 
						|
// each component
 | 
						|
//
 | 
						|
#define SIZE_IA32_RESET_VECT      0x10        // 16 Bytes
 | 
						|
#define SIZE_SALE_ENTRY_POINT     0x08        // 8 Byte
 | 
						|
#define SIZE_FIT_TABLE_ADD        0x08        // 8 Byte
 | 
						|
#define SIZE_FIT_TABLE_PAL_A      0x10     
 | 
						|
#define SIZE_RESERVED             0x10
 | 
						|
 | 
						|
 | 
						|
#define SIZE_TO_OFFSET_PAL_A_END  (SIZE_IA32_RESET_VECT + SIZE_SALE_ENTRY_POINT + \
 | 
						|
                                  SIZE_FIT_TABLE_ADD + SIZE_FIT_TABLE_PAL_A + \
 | 
						|
                                  SIZE_RESERVED)
 | 
						|
#define SIZE_TO_PAL_A_FIT         (SIZE_IA32_RESET_VECT + SIZE_SALE_ENTRY_POINT + \
 | 
						|
                                  SIZE_FIT_TABLE_ADD + SIZE_FIT_TABLE_PAL_A)
 | 
						|
 | 
						|
#define SIZE_OF_PAL_HEADER        0x40        //PAL has 64 byte header
 | 
						|
 | 
						|
//
 | 
						|
// Utility Name
 | 
						|
//
 | 
						|
#define UTILITY_NAME  "GenBsfImage"
 | 
						|
 | 
						|
//
 | 
						|
// Utility version information
 | 
						|
//
 | 
						|
#define UTILITY_MAJOR_VERSION   0
 | 
						|
#define UTILITY_MINOR_VERSION   1
 | 
						|
#define UTILITY_DATE            __DATE__
 | 
						|
 | 
						|
//
 | 
						|
// The maximum number of arguments accepted from the command line.
 | 
						|
//
 | 
						|
#define ONE_BSF_ARGS  5
 | 
						|
#define TWO_BSF_ARGS  9
 | 
						|
 | 
						|
//
 | 
						|
// The number of IA32 bsf arguments accepted from the command line.
 | 
						|
//
 | 
						|
#define IA32_ARGS  3
 | 
						|
 | 
						|
#define IA32_SOFT_FIT "IA32BsfAddress.inf"
 | 
						|
 | 
						|
//
 | 
						|
// Internal Data Structure
 | 
						|
//
 | 
						|
typedef enum _LOC_TYPE 
 | 
						|
{
 | 
						|
  NONE,                   // In case there is - INF file
 | 
						|
  FIRST_VTF,              // First VTF
 | 
						|
  SECOND_VTF,             // Outside BSF
 | 
						|
} LOC_TYPE;
 | 
						|
 | 
						|
typedef struct _PARSED_BSF_INFO {
 | 
						|
  CHAR8       CompName[COMPONENT_NAME_SIZE];
 | 
						|
  LOC_TYPE    LocationType;
 | 
						|
  UINT8       CompType;
 | 
						|
  UINT8       MajorVer;
 | 
						|
  UINT8       MinorVer;
 | 
						|
  UINT8       CheckSumRequired;
 | 
						|
  BOOLEAN     VersionPresent;                // If it is TRUE, then, Version is in INF file
 | 
						|
  BOOLEAN     PreferredSize;
 | 
						|
  BOOLEAN     PreferredAddress;
 | 
						|
  CHAR8       CompBinName[FILE_NAME_SIZE];
 | 
						|
  CHAR8       CompSymName[FILE_NAME_SIZE];
 | 
						|
  UINTN       CompSize;
 | 
						|
  UINT64      CompPreferredAddress;
 | 
						|
  UINT32      Align;
 | 
						|
 | 
						|
  //
 | 
						|
  //  Fixed - warning C4133: '=' : incompatible types - from 'struct _ParsedBsfInfo *' to 'struct _PARSED_BSF_INFO *'
 | 
						|
  //  Fixed - warning C4133: '=' : incompatible types - from 'struct _ParsedBsfInfo *' to 'struct _PARSED_BSF_INFO *'
 | 
						|
  //  Fixed - warning C4133: '=' : incompatible types - from 'struct _ParsedBsfInfo *' to 'struct _PARSED_BSF_INFO *'
 | 
						|
  //  Fixed - warning C4133: '=' : incompatible types - from 'struct _ParsedBsfInfo *' to 'struct _PARSED_BSF_INFO *'
 | 
						|
  //
 | 
						|
  struct      _PARSED_BSF_INFO   *NextBsfInfo;
 | 
						|
} PARSED_BSF_INFO;
 | 
						|
 | 
						|
#pragma pack (1)
 | 
						|
typedef struct {
 | 
						|
  UINT64      CompAddress;
 | 
						|
  UINT32      CompSize;
 | 
						|
  UINT16      CompVersion;
 | 
						|
  UINT8       CvAndType;
 | 
						|
  UINT8       CheckSum;
 | 
						|
} FIT_TABLE;
 | 
						|
#pragma pack ()
 | 
						|
 | 
						|
//
 | 
						|
// The function that displays general utility information
 | 
						|
//
 | 
						|
VOID
 | 
						|
PrintUtilityInfo (
 | 
						|
  VOID
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  Displays the standard utility information to SDTOUT
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  None
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  None
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
//
 | 
						|
// The function that displays the utility usage message.
 | 
						|
//
 | 
						|
VOID
 | 
						|
PrintUsage (
 | 
						|
  VOID
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  Displays the utility usage syntax to STDOUT
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  None
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  None
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
//
 | 
						|
// Other Function Prototype Declarations
 | 
						|
//
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
UpdateBsfBuffer(
 | 
						|
  IN  UINT64    StartAddress,
 | 
						|
  IN  UINT8     *Buffer,
 | 
						|
  IN  UINT64    DataSize,
 | 
						|
  IN  LOC_TYPE  LocType
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  Update the Firmware Volume Buffer with requested buffer data
 | 
						|
  
 | 
						|
Arguments:
 | 
						|
 | 
						|
  StartAddress   - StartAddress in buffer. This number will automatically
 | 
						|
                  point to right address in buffer where data needed 
 | 
						|
                  to be updated.
 | 
						|
  Buffer         - Buffer pointer from data will be copied to memory mapped buffer.
 | 
						|
  DataSize       - Size of the data needed to be copied.
 | 
						|
  LocType        - The type of the BSF
 | 
						|
 | 
						|
Returns:
 | 
						|
  
 | 
						|
  EFI_ABORTED  - The input parameter is error
 | 
						|
  EFI_SUCCESS  - The function completed successfully
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
UpdateSymFile (
 | 
						|
  IN UINT64 BaseAddress,
 | 
						|
  IN CHAR8  *DestFileName,
 | 
						|
  IN CHAR8  *SourceFileName
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  This function adds the SYM tokens in the source file to the destination file.
 | 
						|
  The SYM tokens are updated to reflect the base address.
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  BaseAddress    - The base address for the new SYM tokens.
 | 
						|
  DestFileName   - The destination file.
 | 
						|
  SourceFileName - The source file.
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  EFI_SUCCESS             - The function completed successfully.
 | 
						|
  EFI_INVALID_PARAMETER   - One of the input parameters was invalid.
 | 
						|
  EFI_ABORTED             - An error occurred.
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
CalculateFitTableChecksum (
 | 
						|
  VOID
 | 
						|
  )
 | 
						|
/*++
 | 
						|
  
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  This function will perform byte checksum on the FIT table, if the the checksum required
 | 
						|
  field is set to CheckSum required. If the checksum is not required then checksum byte
 | 
						|
  will have value as 0;.
 | 
						|
  
 | 
						|
Arguments:
 | 
						|
 | 
						|
  NONE
 | 
						|
  
 | 
						|
Returns:
 | 
						|
 | 
						|
  Status       - Value returned by call to CalculateChecksum8 ()
 | 
						|
  EFI_SUCCESS  - The function completed successfully
 | 
						|
    
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
GenerateBsfImage (
 | 
						|
  IN  UINT64  StartAddress1,
 | 
						|
  IN  UINT64  Size1,
 | 
						|
  IN  UINT64  StartAddress2,
 | 
						|
  IN  UINT64  Size2
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  This is the main function which will be called from application.
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  StartAddress1  - The start address of the first BSF      
 | 
						|
  Size1          - The size of the first BSF
 | 
						|
  StartAddress2  - The start address of the second BSF      
 | 
						|
  Size2          - The size of the second BSF
 | 
						|
 | 
						|
Returns:
 | 
						|
 
 | 
						|
  EFI_OUT_OF_RESOURCES - Can not allocate memory
 | 
						|
  The return value can be any of the values 
 | 
						|
  returned by the calls to following functions:
 | 
						|
      GetBsfRelatedInfoFromInfFile
 | 
						|
      ProcessAndCreateBsf
 | 
						|
      UpdateIA32ResetVector
 | 
						|
      UpdateFfsHeader
 | 
						|
      WriteBsfBinary
 | 
						|
  
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
PeimFixupInFitTable (
 | 
						|
  IN  UINT64  StartAddress
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  This function is an entry point to fixup SAL-E entry point.
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  StartAddress - StartAddress for PEIM.....
 | 
						|
    
 | 
						|
Returns:
 | 
						|
 
 | 
						|
  EFI_SUCCESS   - The function completed successfully
 | 
						|
  EFI_ABORTED   - Error Opening File 
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
Generate32BsfImage (
 | 
						|
IN  UINT64  BootFileStartAddress
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  This is the main IA32 function which will be called from application.
 | 
						|
  (Now this tool is not used for IA32 platform, if it will be used in future,
 | 
						|
  the relative functions need to be updated, the updating can refer to IPF 
 | 
						|
  functions)
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  BootFileStartAddress   - Top Address of Boot File
 | 
						|
 | 
						|
Returns:
 | 
						|
 
 | 
						|
  The return value can be any of the values 
 | 
						|
  returned by the calls to following functions:
 | 
						|
      Get32BsfRelatedInfoFromInfFile
 | 
						|
      CreateBsfBuffer
 | 
						|
      ProcessAndCreate32Bsf
 | 
						|
      Update32FfsHeader
 | 
						|
      WriteBsfBinary
 | 
						|
  
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
GetTotal32BsfSize(
 | 
						|
  IN  UINT32  *BsfSize 
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  This function calculates total size for IA32 BSF which would be needed to create
 | 
						|
  the buffer. This will be done using Passed Info link list and looking for the
 | 
						|
  size of the components which belong to BSF. The addtional file header is accounted.
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  BSFSize     - Pointer to the size of IA32 BSF 
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  EFI_ABORTED - Returned due to one of the following resons:
 | 
						|
                (a) Error Opening File
 | 
						|
  EFI_SUCCESS - The fuction completes successfully
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
ProcessAndCreate32Bsf (
 | 
						|
  IN  UINT64  Size
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  This function process the link list created during INF file parsing
 | 
						|
  and create component in IA32 BSF
 | 
						|
  
 | 
						|
Arguments:
 | 
						|
 | 
						|
  Size   - Size of the Firmware Volume of which, this BSF belongs to.
 | 
						|
 | 
						|
Returns:
 | 
						|
  
 | 
						|
  EFI_UNSUPPORTED - Unknown component type
 | 
						|
  EFI_SUCCESS     - The function completed successfully                 
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
CreateAndUpdateSeccore (
 | 
						|
  IN  PARSED_BSF_INFO   *BsfInfo
 | 
						|
  )
 | 
						|
/*++
 | 
						|
  
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  This function reads the binary file for seccore and update them
 | 
						|
  in IA32 BSF Buffer
 | 
						|
  
 | 
						|
Arguments:
 | 
						|
 | 
						|
  BsfInfo    - Pointer to Parsed Info
 | 
						|
  
 | 
						|
Returns:
 | 
						|
 | 
						|
  EFI_ABORTED           - Due to one of the following reasons:
 | 
						|
                           (a)Error Opening File
 | 
						|
                           (b)The PAL_A Size is more than specified size status
 | 
						|
                              One of the values mentioned below returned from 
 | 
						|
                              call to UpdateSymFile
 | 
						|
  EFI_SUCCESS           - The function completed successfully.
 | 
						|
  EFI_INVALID_PARAMETER - One of the input parameters was invalid.
 | 
						|
  EFI_ABORTED           - An error occurred.UpdateSymFile
 | 
						|
   
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
CreateAndUpdate32Component (
 | 
						|
  IN  PARSED_BSF_INFO   *BsfInfo
 | 
						|
  )
 | 
						|
/*++
 | 
						|
  
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  This function reads the binary file for each components. Add it at aligned address.
 | 
						|
  
 | 
						|
Arguments:
 | 
						|
 | 
						|
  BsfInfo    - Pointer to Parsed Info
 | 
						|
  
 | 
						|
Returns:
 | 
						|
 | 
						|
  EFI_SUCCESS              - The function completed successful
 | 
						|
  EFI_ABORTED              - Aborted due to one of the many reasons like:
 | 
						|
                              (a) Component Size greater than the specified size.
 | 
						|
                              (b) Error opening files.
 | 
						|
  EFI_INVALID_PARAMETER    - Value returned from call to UpdateEntryPoint()
 | 
						|
  
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
Update32FfsHeader(
 | 
						|
  IN      UINT32 BsfSize
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  Update the Firmware Volume Buffer with requested buffer data
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  BsfSize     - Size of the IA32 BSF
 | 
						|
 | 
						|
Returns:
 | 
						|
  
 | 
						|
  EFI_SUCCESS            - The function completed successfully
 | 
						|
  EFI_INVALID_PARAMETER  - The Ffs File Header Pointer is NULL
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
Get32BsfRelatedInfoFromInfFile (
 | 
						|
  IN  CHAR8 *FileName
 | 
						|
  )
 | 
						|
/*++
 | 
						|
  
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  This function reads the input file, parse it and create a list of tokens
 | 
						|
  which is parsed and used, to intialize the data related to IA32 BSF
 | 
						|
  
 | 
						|
Arguments:
 | 
						|
 | 
						|
  FileName  FileName which needed to be read to parse data
 | 
						|
 | 
						|
Returns:
 | 
						|
   
 | 
						|
  EFI_ABORTED            Error in opening file
 | 
						|
  EFI_INVALID_PARAMETER  File doesn't contain any valid informations
 | 
						|
  EFI_OUT_OF_RESOURCES   Malloc Failed
 | 
						|
  EFI_SUCCESS            The function completed successfully 
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
VOID
 | 
						|
Initialize32InFileInfo (
 | 
						|
  VOID                     
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  This function intializes the relevant global variable which is being
 | 
						|
  used to store the information retrieved from IA32 INF file.
 | 
						|
 | 
						|
Arguments:
 | 
						|
 | 
						|
  NONE
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  NONE
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
VOID 
 | 
						|
ParseAndUpdate32Components (
 | 
						|
  IN  PARSED_BSF_INFO   *BsfInfo
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  This function intializes the relevant global variable which is being
 | 
						|
  used to store the information retrieved from INF file.
 | 
						|
  
 | 
						|
Arguments:
 | 
						|
 | 
						|
  BsfInfo   - A pointer to the BSF Info Structure
 | 
						|
  
 | 
						|
 | 
						|
Returns:
 | 
						|
 | 
						|
  None
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
EFI_STATUS
 | 
						|
Write32SoftFit(
 | 
						|
  IN CHAR8              *FileName,
 | 
						|
  IN  PARSED_BSF_INFO   *BsfInfo
 | 
						|
  )
 | 
						|
/*++
 | 
						|
 | 
						|
Routine Description:
 | 
						|
 | 
						|
  Write IA32 Firmware Volume component address from memory to a file.
 | 
						|
  
 | 
						|
Arguments:
 | 
						|
 | 
						|
  FileName      Output File Name which needed to be created/
 | 
						|
  BsfInfo       Parsed info link
 | 
						|
  
 | 
						|
Returns:
 | 
						|
 | 
						|
  EFI_ABORTED  - Returned due to one of the following resons:
 | 
						|
                  (a) Error Opening File
 | 
						|
                  (b) Failing to copy buffers
 | 
						|
  EFI_SUCCESS  - The fuction completes successfully
 | 
						|
 | 
						|
--*/
 | 
						|
;
 | 
						|
 | 
						|
#endif
 |