Removed cross references from PciCf8Lib and PciExpressLib class to PciLib class.
Added PeCoffLoaderGetMachineType to the PeCoffGetEntryPointLibrary Class. Document to be updated. Added the PeCoffLoaderImageReadFromMemory() and PeCoffLoaderRelocateImageForRuntime () to the PcCoffLib. Updated EfiImage.h and removed EFI_IMAGE_OPTIONAL_HEADER and EFI_IMAGE_NT_HEADERS as they were replaced with checking the MachineType. PeCoffLib – Added checks for MachineType so the PeCoff lib can load any PE32 or PE32+ image. The relocations are still limited to IA32, X64, IPF, and EBC. I also added a re-relocator function to remove PeLoader Code from Runtime Lib. Even though there is only one instance of the re-relocator I wanted to get all the PeCoff loader code together. Replaced DEBUG_CODE() macro with DEBUG_CODE_START() and DEBUG_CODE_END() so you can debug through the DEBUG_CODE() macros. Also removed PE/COFF code and replaced with library usage. I also updated the IO Instrinsic lib to use _ReadWriteBarrior() to help with sync problems git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1103 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -17,7 +17,6 @@
|
||||
#ifndef __PCI_CF8_LIB_H__
|
||||
#define __PCI_CF8_LIB_H__
|
||||
|
||||
#include <Library/PciLib.h>
|
||||
|
||||
/**
|
||||
Macro that converts PCI Bus, PCI Device, PCI Function and PCI Register to an
|
||||
@@ -36,7 +35,7 @@
|
||||
|
||||
**/
|
||||
#define PCI_CF8_LIB_ADDRESS(Bus,Device,Function,Offset) \
|
||||
PCI_LIB_ADDRESS (Bus, Device, Function, Offset)
|
||||
(((Offset) & 0xfff) | (((Function) & 0x07) << 12) | (((Device) & 0x1f) << 15) | (((Bus) & 0xff) << 20))
|
||||
|
||||
/**
|
||||
Reads an 8-bit PCI configuration register.
|
||||
|
@@ -36,7 +36,7 @@
|
||||
|
||||
**/
|
||||
#define PCI_EXPRESS_LIB_ADDRESS(Bus,Device,Function,Offset) \
|
||||
PCI_LIB_ADDRESS (Bus, Device, Function, Offset)
|
||||
(((Offset) & 0xfff) | (((Function) & 0x07) << 12) | (((Device) & 0x1f) << 15) | (((Bus) & 0xff) << 20))
|
||||
|
||||
/**
|
||||
Reads an 8-bit PCI configuration register.
|
||||
|
@@ -41,4 +41,19 @@ PeCoffLoaderGetEntryPoint (
|
||||
OUT VOID **EntryPoint
|
||||
);
|
||||
|
||||
/**
|
||||
Returns the machine type of PE/COFF image.
|
||||
|
||||
@param Image Pointer to a PE/COFF header
|
||||
|
||||
@return Machine type or zero if not a valid iamge
|
||||
|
||||
**/
|
||||
UINT16
|
||||
EFIAPI
|
||||
PeCoffLoaderGetMachineType (
|
||||
IN VOID *Image
|
||||
);
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/** @file
|
||||
Memory Only PE COFF loader
|
||||
Memory Only PE COFF loader.
|
||||
|
||||
Copyright (c) 2006, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
@@ -157,4 +157,53 @@ PeCoffLoaderLoadImage (
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
/**
|
||||
ImageRead function that operates on a memory buffer whos base is passed into
|
||||
FileHandle.
|
||||
|
||||
@param FileHandle Ponter to baes of the input stream
|
||||
@param FileOffset Offset to the start of the buffer
|
||||
@param ReadSize Number of bytes to copy into the buffer
|
||||
@param Buffer Location to place results of read
|
||||
|
||||
@retval RETURN_SUCCESS Data is read from FileOffset from the Handle into
|
||||
the buffer.
|
||||
**/
|
||||
RETURN_STATUS
|
||||
EFIAPI
|
||||
PeCoffLoaderImageReadFromMemory (
|
||||
IN VOID *FileHandle,
|
||||
IN UINTN FileOffset,
|
||||
IN OUT UINTN *ReadSize,
|
||||
OUT VOID *Buffer
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
/**
|
||||
Reapply fixups on a fixed up PE32/PE32+ image to allow virutal calling at EFI
|
||||
runtime.
|
||||
|
||||
PE_COFF_LOADER_IMAGE_CONTEXT.FixupData stores information needed to reapply
|
||||
the fixups with a virtual mapping.
|
||||
|
||||
|
||||
@param ImageBase Base address of relocated image
|
||||
@param VirtImageBase Virtual mapping for ImageBase
|
||||
@param ImageSize Size of the image to relocate
|
||||
@param RelocationData Location to place results of read
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
PeCoffLoaderRelocateImageForRuntime (
|
||||
IN PHYSICAL_ADDRESS ImageBase,
|
||||
IN PHYSICAL_ADDRESS VirtImageBase,
|
||||
IN UINTN ImageSize,
|
||||
IN VOID *RelocationData
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user