3 Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
4 Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
5 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
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
,
394 IN OUT EFI_PHYSICAL_ADDRESS
*FixUp
399 GetImageReadFunction (
400 IN PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
,
401 IN EFI_PHYSICAL_ADDRESS
*TopOfMemory
407 TODO: Add function description
411 ImageContext - TODO: add argument description
412 TopOfMemory - TODO: add argument description
416 TODO: add return values
426 IN OUT UINTN
*ReadSize
,
433 TODO: Add function description
437 FileHandle - TODO: add argument description
438 FileOffset - TODO: add argument description
439 ReadSize - TODO: add argument description
440 Buffer - TODO: add argument description
444 TODO: add return values
452 IN UINTN
*StrLen OPTIONAL
458 TODO: Add function description
462 Ascii - TODO: add argument description
463 StrLen - TODO: add argument description
467 TODO: add return values
473 CountSeperatorsInString (
474 IN
const CHAR16
*String
,
481 TODO: Add function description
485 String - TODO: add argument description
486 Seperator - TODO: add argument description
490 TODO: add return values
497 SecTemporaryRamSupport (
498 IN CONST EFI_PEI_SERVICES
**PeiServices
,
499 IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase
,
500 IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase
,
507 SecPeCoffGetEntryPoint (
509 IN OUT VOID
**EntryPoint
514 SecPeCoffRelocateImageExtraAction (
515 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
520 SecPeCoffLoaderUnloadImageExtraAction (
521 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
526 VOID
SetTimer (UINT64 PeriodMs
, VOID (*CallBack
)(UINT64 DeltaMs
));
527 void msSleep (unsigned long Milliseconds
);
528 void GetLocalTime (EFI_TIME
*Time
);
530 long GetTimeZone(void);
531 int GetDayLight(void);
536 extern EFI_UNIX_THUNK_PROTOCOL
*gUnix
;