From b7c51c9cf4864df6aabb99a1ae843becd577237c Mon Sep 17 00:00:00 2001 From: raywu Date: Fri, 15 Jun 2018 00:00:50 +0800 Subject: init. 1AQQW051 --- .../Guid/PeiPeCoffLoader/PeiPeCoffLoader.c | 28 +++++ .../Guid/PeiPeCoffLoader/PeiPeCoffLoader.h | 119 +++++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 EDK/Foundation/Guid/PeiPeCoffLoader/PeiPeCoffLoader.c create mode 100644 EDK/Foundation/Guid/PeiPeCoffLoader/PeiPeCoffLoader.h (limited to 'EDK/Foundation/Guid/PeiPeCoffLoader') diff --git a/EDK/Foundation/Guid/PeiPeCoffLoader/PeiPeCoffLoader.c b/EDK/Foundation/Guid/PeiPeCoffLoader/PeiPeCoffLoader.c new file mode 100644 index 0000000..3777dbf --- /dev/null +++ b/EDK/Foundation/Guid/PeiPeCoffLoader/PeiPeCoffLoader.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2004, 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: + + PeiPeCoffLoader.c + +Abstract: + + GUID for the PE/COFF Loader APIs shared between PEI and DXE + +--*/ + +#include "Tiano.h" +#include EFI_GUID_DEFINITION(PeiPeCoffLoader) + +EFI_GUID gEfiPeiPeCoffLoaderGuid = EFI_PEI_PE_COFF_LOADER_GUID; + +EFI_GUID_STRING(&gEfiPeiPeCoffLoaderGuid, "PE/COFF Loader", "PE/COFF Loader APIs from PEI"); + diff --git a/EDK/Foundation/Guid/PeiPeCoffLoader/PeiPeCoffLoader.h b/EDK/Foundation/Guid/PeiPeCoffLoader/PeiPeCoffLoader.h new file mode 100644 index 0000000..7c2010f --- /dev/null +++ b/EDK/Foundation/Guid/PeiPeCoffLoader/PeiPeCoffLoader.h @@ -0,0 +1,119 @@ +/*++ + +Copyright (c) 2005 - 2008, 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: + + PeiPeCoffLoader.h + +Abstract: + + GUID for the PE/COFF Loader APIs shared between PEI and DXE + +--*/ + +#ifndef _PEI_PE_COFF_LOADER_H_ +#define _PEI_PE_COFF_LOADER_H_ + +#include "EfiImage.h" + +#define EFI_PEI_PE_COFF_LOADER_GUID \ + { 0xd8117cff, 0x94a6, 0x11d4, 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } + +EFI_FORWARD_DECLARATION (EFI_PEI_PE_COFF_LOADER_PROTOCOL); + +#define EFI_IMAGE_ERROR_SUCCESS 0 +#define EFI_IMAGE_ERROR_IMAGE_READ 1 +#define EFI_IMAGE_ERROR_INVALID_PE_HEADER_SIGNATURE 2 +#define EFI_IMAGE_ERROR_INVALID_MACHINE_TYPE 3 +#define EFI_IMAGE_ERROR_INVALID_SUBSYSTEM 4 +#define EFI_IMAGE_ERROR_INVALID_IMAGE_ADDRESS 5 +#define EFI_IMAGE_ERROR_INVALID_IMAGE_SIZE 6 +#define EFI_IMAGE_ERROR_INVALID_SECTION_ALIGNMENT 7 +#define EFI_IMAGE_ERROR_SECTION_NOT_LOADED 8 +#define EFI_IMAGE_ERROR_FAILED_RELOCATION 9 +#define EFI_IMAGE_ERROR_FAILED_ICACHE_FLUSH 10 + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_PE_COFF_LOADER_READ_FILE) ( + IN VOID *FileHandle, + IN UINTN FileOffset, + IN OUT UINTN *ReadSize, + OUT VOID *Buffer + ); + +typedef struct { + EFI_PHYSICAL_ADDRESS ImageAddress; + UINT64 ImageSize; + EFI_PHYSICAL_ADDRESS DestinationAddress; + EFI_PHYSICAL_ADDRESS EntryPoint; + EFI_PEI_PE_COFF_LOADER_READ_FILE ImageRead; + VOID *Handle; + VOID *FixupData; + UINT32 SectionAlignment; + UINT32 PeCoffHeaderOffset; + UINT32 DebugDirectoryEntryRva; + VOID *CodeView; + CHAR8 *PdbPointer; + UINTN SizeOfHeaders; + UINT32 ImageCodeMemoryType; + UINT32 ImageDataMemoryType; + UINT32 ImageError; + UINTN FixupDataSize; + UINT16 Machine; + UINT16 ImageType; + BOOLEAN RelocationsStripped; + BOOLEAN IsTeImage; +#ifdef EFI_NT_EMULATOR + VOID **ModHandle; +#endif +#if (EFI_SPECIFICATION_VERSION >= 0x0002000A) + EFI_PHYSICAL_ADDRESS HiiResourceData; +#endif +} EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT; + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_PE_COFF_LOADER_GET_IMAGE_INFO) ( + IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This, + IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_PE_COFF_LOADER_LOAD_IMAGE) ( + IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This, + IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_PE_COFF_LOADER_RELOCATE_IMAGE) ( + IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This, + IN OUT EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_PE_COFF_LOADER_UNLOAD_IMAGE) ( + IN EFI_PEI_PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext + ); + +typedef struct _EFI_PEI_PE_COFF_LOADER_PROTOCOL { + EFI_PEI_PE_COFF_LOADER_GET_IMAGE_INFO GetImageInfo; + EFI_PEI_PE_COFF_LOADER_LOAD_IMAGE LoadImage; + EFI_PEI_PE_COFF_LOADER_RELOCATE_IMAGE RelocateImage; + EFI_PEI_PE_COFF_LOADER_UNLOAD_IMAGE UnloadImage; +} EFI_PEI_PE_COFF_LOADER_PROTOCOL; + +extern EFI_GUID gEfiPeiPeCoffLoaderGuid; + +#endif -- cgit v1.2.3