+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2005 - 2010, Intel Corporation. All rights reserved.<BR>\r
-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
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
- \r
- PeiPeCoffLoader.h\r
- \r
-Abstract:\r
-\r
- GUID for the PE/COFF Loader APIs shared between PEI and DXE\r
-\r
---*/\r
-\r
-#ifndef _PEI_PE_COFF_LOADER_H_\r
-#define _PEI_PE_COFF_LOADER_H_\r
-\r
-#include "EfiImage.h"\r
-\r
-#define EFI_PEI_PE_COFF_LOADER_GUID \\r
- { 0xd8117cff, 0x94a6, 0x11d4, {0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }\r
-\r
-EFI_FORWARD_DECLARATION (EFI_PEI_PE_COFF_LOADER_PROTOCOL);\r
-\r
-#define EFI_IMAGE_ERROR_SUCCESS 0\r
-#define EFI_IMAGE_ERROR_IMAGE_READ 1 \r
-#define EFI_IMAGE_ERROR_INVALID_PE_HEADER_SIGNATURE 2\r
-#define EFI_IMAGE_ERROR_INVALID_MACHINE_TYPE 3\r
-#define EFI_IMAGE_ERROR_INVALID_SUBSYSTEM 4\r
-#define EFI_IMAGE_ERROR_INVALID_IMAGE_ADDRESS 5\r
-#define EFI_IMAGE_ERROR_INVALID_IMAGE_SIZE 6\r
-#define EFI_IMAGE_ERROR_INVALID_SECTION_ALIGNMENT 7\r
-#define EFI_IMAGE_ERROR_SECTION_NOT_LOADED 8\r
-#define EFI_IMAGE_ERROR_FAILED_RELOCATION 9\r
-#define EFI_IMAGE_ERROR_FAILED_ICACHE_FLUSH 10\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_PE_COFF_LOADER_READ_FILE) (\r
- IN VOID *FileHandle,\r
- IN UINTN FileOffset,\r
- IN OUT UINTN *ReadSize,\r
- OUT VOID *Buffer\r
- );\r
-\r
-typedef struct {\r
- EFI_PHYSICAL_ADDRESS ImageAddress;\r
- UINT64 ImageSize;\r
- EFI_PHYSICAL_ADDRESS DestinationAddress;\r
- EFI_PHYSICAL_ADDRESS EntryPoint;\r
- EFI_PEI_PE_COFF_LOADER_READ_FILE ImageRead;\r
- VOID *Handle;\r
- VOID *FixupData;\r
- UINT32 SectionAlignment;\r
- UINT32 PeCoffHeaderOffset;\r
- UINT32 DebugDirectoryEntryRva;\r
- VOID *CodeView;\r
- CHAR8 *PdbPointer;\r
- UINTN SizeOfHeaders;\r
- UINT32 ImageCodeMemoryType;\r
- UINT32 ImageDataMemoryType;\r
- UINT32 ImageError;\r
- UINTN FixupDataSize;\r
- UINT16 Machine;\r
- UINT16 ImageType;\r
- BOOLEAN RelocationsStripped;\r
- BOOLEAN IsTeImage;\r
-#ifdef EFI_NT_EMULATOR\r
- VOID **ModHandle;\r
-#endif\r
-#if (EFI_SPECIFICATION_VERSION >= 0x0002000A)\r
- EFI_PHYSICAL_ADDRESS HiiResourceData;\r
-#endif\r
-} EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT;\r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_PE_COFF_LOADER_GET_IMAGE_INFO) (\r
- IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,\r
- IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
- );\r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_PE_COFF_LOADER_LOAD_IMAGE) (\r
- IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,\r
- IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
- );\r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_PE_COFF_LOADER_RELOCATE_IMAGE) (\r
- IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,\r
- IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
- );\r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_PEI_PE_COFF_LOADER_UNLOAD_IMAGE) (\r
- IN EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
- );\r
-\r
-struct _EFI_PEI_PE_COFF_LOADER_PROTOCOL {\r
- EFI_PEI_PE_COFF_LOADER_GET_IMAGE_INFO GetImageInfo;\r
- EFI_PEI_PE_COFF_LOADER_LOAD_IMAGE LoadImage;\r
- EFI_PEI_PE_COFF_LOADER_RELOCATE_IMAGE RelocateImage;\r
- EFI_PEI_PE_COFF_LOADER_UNLOAD_IMAGE UnloadImage;\r
-};\r
-\r
-extern EFI_GUID gEfiPeiPeCoffLoaderGuid;\r
-\r
-#endif\r