3 Copyright (c) 2006 - 2008, 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.
17 Include file for host API based SEC
21 #include "Uefi/UefiSpec.h"
23 #include <Protocol/UnixThunk.h>
24 #include <Pi/PiFirmwareVolume.h>
25 #include <Guid/PeiPeCoffLoader.h>
26 #include <Ppi/StatusCode.h>
28 #include <Library/PeCoffLib.h>
29 #include <Library/BaseLib.h>
30 #include <Library/BaseMemoryLib.h>
31 #include <Library/PrintLib.h>
32 #include <Library/PcdLib.h>
33 #include <Library/DebugLib.h>
35 #define STACK_SIZE 0x20000
38 EFI_PHYSICAL_ADDRESS Address
;
43 EFI_PHYSICAL_ADDRESS Memory
;
52 VOID
*Pe32Data
, // TODO: add IN/OUT modifier to Pe32Data
53 EFI_PHYSICAL_ADDRESS
*ImageAddress
, // TODO: add IN/OUT modifier to ImageAddress
54 UINT64
*ImageSize
, // TODO: add IN/OUT modifier to ImageSize
55 EFI_PHYSICAL_ADDRESS
*EntryPoint
// TODO: add IN/OUT modifier to EntryPoint
61 TODO: Add function description
65 Pe32Data - TODO: add argument description
66 ImageAddress - TODO: add argument description
67 ImageSize - TODO: add argument description
68 EntryPoint - TODO: add argument description
72 TODO: add return values
81 OUT EFI_PHYSICAL_ADDRESS
*MemoryBase
,
82 OUT UINT64
*MemorySize
88 TODO: Add function description
92 Index - TODO: add argument description
93 MemoryBase - TODO: add argument description
94 MemorySize - TODO: add argument description
98 TODO: add return values
105 SecWinNtWinNtThunkAddress (
112 TODO: Add function description
116 InterfaceSize - TODO: add argument description
117 InterfaceBase - TODO: add argument description
121 TODO: add return values
128 SecWinNtWinNtFwhAddress (
129 IN OUT UINT64
*FwhSize
,
130 IN OUT EFI_PHYSICAL_ADDRESS
*FwhBase
136 TODO: Add function description
140 FwhSize - TODO: add argument description
141 FwhBase - TODO: add argument description
145 TODO: add return values
152 SecPeiReportStatusCode (
153 IN EFI_PEI_SERVICES
**PeiServices
,
154 IN EFI_STATUS_CODE_TYPE CodeType
,
155 IN EFI_STATUS_CODE_VALUE Value
,
157 IN EFI_GUID
* CallerId
,
158 IN EFI_STATUS_CODE_DATA
* Data OPTIONAL
164 TODO: Add function description
168 PeiServices - TODO: add argument description
169 CodeType - TODO: add argument description
170 Value - TODO: add argument description
171 Instance - TODO: add argument description
172 CallerId - TODO: add argument description
173 Data - TODO: add argument description
177 TODO: add return values
193 TODO: Add function description
197 Argc - TODO: add argument description
198 Argv - TODO: add argument description
199 Envp - TODO: add argument description
203 TODO: add return values
210 IN UINTN LargestRegion
,
211 IN UINTN LargestRegionSize
,
212 IN UINTN BootFirmwareVolumeBase
,
219 TODO: Add function description
223 LargestRegion - TODO: add argument description
224 LargestRegionSize - TODO: add argument description
225 BootFirmwareVolumeBase - TODO: add argument description
226 PeiCoreFile - TODO: add argument description
230 TODO: add return values
238 IN EFI_PHYSICAL_ADDRESS
*ImageAddress
,
239 IN UINT64
*ImageSize
,
240 IN EFI_PHYSICAL_ADDRESS
*EntryPoint
246 TODO: Add function description
250 Pe32Data - TODO: add argument description
251 ImageAddress - TODO: add argument description
252 ImageSize - TODO: add argument description
253 EntryPoint - TODO: add argument description
257 TODO: add return values
264 IN EFI_FIRMWARE_VOLUME_HEADER
*FwVolHeader
,
271 TODO: Add function description
275 FwVolHeader - TODO: add argument description
276 Pe32Data - TODO: add argument description
280 TODO: add return values
287 IN EFI_FV_FILETYPE SearchType
,
288 IN EFI_FIRMWARE_VOLUME_HEADER
*FwVolHeader
,
289 IN OUT EFI_FFS_FILE_HEADER
**FileHeader
295 TODO: Add function description
299 SearchType - TODO: add argument description
300 FwVolHeader - TODO: add argument description
301 FileHeader - TODO: add argument description
305 TODO: add return values
311 SecFfsFindSectionData (
312 IN EFI_SECTION_TYPE SectionType
,
313 IN EFI_FFS_FILE_HEADER
*FfsFileHeader
,
314 IN OUT VOID
**SectionData
320 TODO: Add function description
324 SectionType - TODO: add argument description
325 FfsFileHeader - TODO: add argument description
326 SectionData - TODO: add argument description
330 TODO: add return values
337 SecWinNtPeCoffLoaderLoadAsDll (
338 IN CHAR8
*PdbFileName
,
339 IN VOID
**ImageEntryPoint
,
346 TODO: Add function description
350 PdbFileName - TODO: add argument description
351 ImageEntryPoint - TODO: add argument description
352 ModHandle - TODO: add argument description
356 TODO: add return values
363 SecWinNtPeCoffLoaderFreeLibrary (
370 TODO: Add function description
374 ModHandle - TODO: add argument description
378 TODO: add return values
387 IN OUT EFI_PHYSICAL_ADDRESS
*FdBase
,
388 IN OUT UINT64
*FdSize
394 TODO: Add function description
398 Index - TODO: add argument description
399 FdBase - TODO: add argument description
400 FdSize - TODO: add argument description
404 TODO: add return values
410 GetImageReadFunction (
411 IN PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
,
412 IN EFI_PHYSICAL_ADDRESS
*TopOfMemory
418 TODO: Add function description
422 ImageContext - TODO: add argument description
423 TopOfMemory - TODO: add argument description
427 TODO: add return values
437 IN OUT UINTN
*ReadSize
,
444 TODO: Add function description
448 FileHandle - TODO: add argument description
449 FileOffset - TODO: add argument description
450 ReadSize - TODO: add argument description
451 Buffer - TODO: add argument description
455 TODO: add return values
463 IN UINTN
*StrLen OPTIONAL
469 TODO: Add function description
473 Ascii - TODO: add argument description
474 StrLen - TODO: add argument description
478 TODO: add return values
484 CountSeperatorsInString (
485 IN
const CHAR16
*String
,
492 TODO: Add function description
496 String - TODO: add argument description
497 Seperator - TODO: add argument description
501 TODO: add return values
508 SecNt32PeCoffGetImageInfo (
509 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
510 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
515 SecNt32PeCoffLoadImage (
516 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
517 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
522 SecNt32PeCoffRelocateImage (
523 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
524 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
529 SecNt32PeCoffUnloadimage (
530 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
531 IN PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
536 SecTemporaryRamSupport (
537 IN CONST EFI_PEI_SERVICES
**PeiServices
,
538 IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase
,
539 IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase
,
544 EFI_PEI_PE_COFF_LOADER_PROTOCOL PeCoff
;
546 } EFI_PEI_PE_COFF_LOADER_PROTOCOL_INSTANCE
;
548 extern EFI_UNIX_THUNK_PROTOCOL
*gUnix
;