3 Copyright (c) 2006 - 2007, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 Wrap the Base PE/COFF loader with the PE COFF Protocol
26 #include <Guid/PeiPeCoffLoader.h>
28 #include <Library/PeCoffLib.h>
30 #include <IndustryStandard/PeImage.h>
36 PeCoffLoaderLibGetImageInfo (
37 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
38 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
43 Status
= PeCoffLoaderGetImageInfo (ImageContext
);
44 if (EFI_ERROR (Status
)) {
48 switch (ImageContext
->ImageType
) {
50 case EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION
:
51 ImageContext
->ImageCodeMemoryType
= EfiLoaderCode
;
52 ImageContext
->ImageDataMemoryType
= EfiLoaderData
;
55 case EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER
:
56 ImageContext
->ImageCodeMemoryType
= EfiBootServicesCode
;
57 ImageContext
->ImageDataMemoryType
= EfiBootServicesData
;
60 case EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER
:
61 case EFI_IMAGE_SUBSYSTEM_SAL_RUNTIME_DRIVER
:
62 ImageContext
->ImageCodeMemoryType
= EfiRuntimeServicesCode
;
63 ImageContext
->ImageDataMemoryType
= EfiRuntimeServicesData
;
67 ImageContext
->ImageError
= IMAGE_ERROR_INVALID_SUBSYSTEM
;
68 return RETURN_UNSUPPORTED
;
77 PeCoffLoaderLibLoadImage (
78 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
79 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
82 return PeCoffLoaderLoadImage (ImageContext
);
88 PeCoffLoaderLibRelocateImage (
89 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
90 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
93 return PeCoffLoaderRelocateImage (ImageContext
);
99 PeCoffLoaderLibUnloadimage (
100 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
101 IN PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
108 EFI_PEI_PE_COFF_LOADER_PROTOCOL mPeiEfiPeiPeCoffLoader
= {
109 PeCoffLoaderLibGetImageInfo
,
110 PeCoffLoaderLibLoadImage
,
111 PeCoffLoaderLibRelocateImage
,
112 PeCoffLoaderLibUnloadimage
115 EFI_PEI_PE_COFF_LOADER_PROTOCOL
*
117 GetPeCoffLoaderProtocol (
120 return &mPeiEfiPeiPeCoffLoader
;