3 Copyright (c) 2006 - 2009, Intel Corporation
4 Portions copyright (c) 2008-2009 Apple Inc.
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 Include file for host API based SEC
21 #include <FrameworkPei.h>
23 #include <Protocol/UnixThunk.h>
24 #include <Ppi/StatusCode.h>
26 #include <Library/PeCoffLib.h>
27 #include <Library/BaseLib.h>
28 #include <Library/BaseMemoryLib.h>
29 #include <Library/PrintLib.h>
30 #include <Library/PcdLib.h>
31 #include <Library/DebugLib.h>
32 #include <Library/ReportStatusCodeLib.h>
34 #define STACK_SIZE 0x20000
37 EFI_PHYSICAL_ADDRESS Address
;
42 EFI_PHYSICAL_ADDRESS Memory
;
47 #define MAX_IMAGE_CONTEXT_TO_MOD_HANDLE_ARRAY_SIZE 0x100
50 PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
;
52 } IMAGE_CONTEXT_TO_MOD_HANDLE
;
58 VOID
*Pe32Data
, // TODO: add IN/OUT modifier to Pe32Data
59 EFI_PHYSICAL_ADDRESS
*ImageAddress
, // TODO: add IN/OUT modifier to ImageAddress
60 UINT64
*ImageSize
, // TODO: add IN/OUT modifier to ImageSize
61 EFI_PHYSICAL_ADDRESS
*EntryPoint
// TODO: add IN/OUT modifier to EntryPoint
67 TODO: Add function description
71 Pe32Data - TODO: add argument description
72 ImageAddress - TODO: add argument description
73 ImageSize - TODO: add argument description
74 EntryPoint - TODO: add argument description
78 TODO: add return values
87 OUT EFI_PHYSICAL_ADDRESS
*MemoryBase
,
88 OUT UINT64
*MemorySize
94 TODO: Add function description
98 Index - TODO: add argument description
99 MemoryBase - TODO: add argument description
100 MemorySize - TODO: add argument description
104 TODO: add return values
111 SecUnixUnixThunkAddress (
118 TODO: Add function description
122 InterfaceSize - TODO: add argument description
123 InterfaceBase - TODO: add argument description
127 TODO: add return values
134 SecUnixUnixFwhAddress (
135 IN OUT UINT64
*FwhSize
,
136 IN OUT EFI_PHYSICAL_ADDRESS
*FwhBase
142 TODO: Add function description
146 FwhSize - TODO: add argument description
147 FwhBase - TODO: add argument description
151 TODO: add return values
158 SecPeiReportStatusCode (
159 IN CONST EFI_PEI_SERVICES
**PeiServices
,
160 IN EFI_STATUS_CODE_TYPE CodeType
,
161 IN EFI_STATUS_CODE_VALUE Value
,
163 IN CONST EFI_GUID
*CallerId
,
164 IN CONST EFI_STATUS_CODE_DATA
*Data OPTIONAL
170 TODO: Add function description
174 PeiServices - TODO: add argument description
175 CodeType - TODO: add argument description
176 Value - TODO: add argument description
177 Instance - TODO: add argument description
178 CallerId - TODO: add argument description
179 Data - TODO: add argument description
183 TODO: add return values
198 TODO: Add function description
202 Argc - TODO: add argument description
203 Argv - TODO: add argument description
204 Envp - TODO: add argument description
208 TODO: add return values
215 IN UINTN LargestRegion
,
216 IN UINTN LargestRegionSize
,
217 IN UINTN BootFirmwareVolumeBase
,
224 TODO: Add function description
228 LargestRegion - TODO: add argument description
229 LargestRegionSize - TODO: add argument description
230 BootFirmwareVolumeBase - TODO: add argument description
231 PeiCoreFile - TODO: add argument description
235 TODO: add return values
243 IN EFI_PHYSICAL_ADDRESS
*ImageAddress
,
244 IN UINT64
*ImageSize
,
245 IN EFI_PHYSICAL_ADDRESS
*EntryPoint
251 TODO: Add function description
255 Pe32Data - TODO: add argument description
256 ImageAddress - TODO: add argument description
257 ImageSize - TODO: add argument description
258 EntryPoint - TODO: add argument description
262 TODO: add return values
269 IN EFI_FIRMWARE_VOLUME_HEADER
*FwVolHeader
,
276 TODO: Add function description
280 FwVolHeader - TODO: add argument description
281 Pe32Data - TODO: add argument description
285 TODO: add return values
292 IN EFI_FV_FILETYPE SearchType
,
293 IN EFI_FIRMWARE_VOLUME_HEADER
*FwVolHeader
,
294 IN OUT EFI_FFS_FILE_HEADER
**FileHeader
300 TODO: Add function description
304 SearchType - TODO: add argument description
305 FwVolHeader - TODO: add argument description
306 FileHeader - TODO: add argument description
310 TODO: add return values
316 SecFfsFindSectionData (
317 IN EFI_SECTION_TYPE SectionType
,
318 IN EFI_FFS_FILE_HEADER
*FfsFileHeader
,
319 IN OUT VOID
**SectionData
325 TODO: Add function description
329 SectionType - TODO: add argument description
330 FfsFileHeader - TODO: add argument description
331 SectionData - TODO: add argument description
335 TODO: add return values
342 SecUnixPeCoffLoaderLoadAsDll (
343 IN CHAR8
*PdbFileName
,
344 IN VOID
**ImageEntryPoint
,
351 TODO: Add function description
355 PdbFileName - TODO: add argument description
356 ImageEntryPoint - TODO: add argument description
357 ModHandle - TODO: add argument description
361 TODO: add return values
368 SecUnixPeCoffLoaderFreeLibrary (
375 TODO: Add function description
379 ModHandle - TODO: add argument description
383 TODO: add return values
392 IN OUT EFI_PHYSICAL_ADDRESS
*FdBase
,
393 IN OUT UINT64
*FdSize
399 TODO: Add function description
403 Index - TODO: add argument description
404 FdBase - TODO: add argument description
405 FdSize - TODO: add argument description
409 TODO: add return values
415 GetImageReadFunction (
416 IN PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
,
417 IN EFI_PHYSICAL_ADDRESS
*TopOfMemory
423 TODO: Add function description
427 ImageContext - TODO: add argument description
428 TopOfMemory - TODO: add argument description
432 TODO: add return values
442 IN OUT UINTN
*ReadSize
,
449 TODO: Add function description
453 FileHandle - TODO: add argument description
454 FileOffset - TODO: add argument description
455 ReadSize - TODO: add argument description
456 Buffer - TODO: add argument description
460 TODO: add return values
468 IN UINTN
*StrLen OPTIONAL
474 TODO: Add function description
478 Ascii - TODO: add argument description
479 StrLen - TODO: add argument description
483 TODO: add return values
489 CountSeperatorsInString (
490 IN
const CHAR16
*String
,
497 TODO: Add function description
501 String - TODO: add argument description
502 Seperator - TODO: add argument description
506 TODO: add return values
513 SecTemporaryRamSupport (
514 IN CONST EFI_PEI_SERVICES
**PeiServices
,
515 IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase
,
516 IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase
,
523 SecPeCoffGetEntryPoint (
525 IN OUT VOID
**EntryPoint
530 SecPeCoffRelocateImageExtraAction (
531 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
536 SecPeCoffLoaderUnloadImageExtraAction (
537 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
541 extern EFI_UNIX_THUNK_PROTOCOL
*gUnix
;