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
66 GasketSecUnixPeiLoadFile (
67 VOID
*Pe32Data
, // TODO: add IN/OUT modifier to Pe32Data
68 EFI_PHYSICAL_ADDRESS
*ImageAddress
, // TODO: add IN/OUT modifier to ImageAddress
69 UINT64
*ImageSize
, // TODO: add IN/OUT modifier to ImageSize
70 EFI_PHYSICAL_ADDRESS
*EntryPoint
// TODO: add IN/OUT modifier to EntryPoint
76 TODO: Add function description
80 Pe32Data - TODO: add argument description
81 ImageAddress - TODO: add argument description
82 ImageSize - TODO: add argument description
83 EntryPoint - TODO: add argument description
87 TODO: add return values
96 OUT EFI_PHYSICAL_ADDRESS
*MemoryBase
,
97 OUT UINT64
*MemorySize
102 GasketSecUnixPeiAutoScan (
104 OUT EFI_PHYSICAL_ADDRESS
*MemoryBase
,
105 OUT UINT64
*MemorySize
111 TODO: Add function description
115 Index - TODO: add argument description
116 MemoryBase - TODO: add argument description
117 MemorySize - TODO: add argument description
121 TODO: add return values
128 SecUnixUnixThunkAddress (
134 GasketSecUnixUnixThunkAddress (
141 TODO: Add function description
145 InterfaceSize - TODO: add argument description
146 InterfaceBase - TODO: add argument description
150 TODO: add return values
157 SecUnixUnixFwhAddress (
158 IN OUT UINT64
*FwhSize
,
159 IN OUT EFI_PHYSICAL_ADDRESS
*FwhBase
164 GasketSecUnixUnixFwhAddress (
165 IN OUT UINT64
*FwhSize
,
166 IN OUT EFI_PHYSICAL_ADDRESS
*FwhBase
172 TODO: Add function description
176 FwhSize - TODO: add argument description
177 FwhBase - TODO: add argument description
181 TODO: add return values
188 SecPeiReportStatusCode (
189 IN CONST EFI_PEI_SERVICES
**PeiServices
,
190 IN EFI_STATUS_CODE_TYPE CodeType
,
191 IN EFI_STATUS_CODE_VALUE Value
,
193 IN CONST EFI_GUID
*CallerId
,
194 IN CONST EFI_STATUS_CODE_DATA
*Data OPTIONAL
199 GasketSecPeiReportStatusCode (
200 IN CONST EFI_PEI_SERVICES
**PeiServices
,
201 IN EFI_STATUS_CODE_TYPE CodeType
,
202 IN EFI_STATUS_CODE_VALUE Value
,
204 IN CONST EFI_GUID
*CallerId
,
205 IN CONST EFI_STATUS_CODE_DATA
*Data OPTIONAL
211 TODO: Add function description
215 PeiServices - TODO: add argument description
216 CodeType - TODO: add argument description
217 Value - TODO: add argument description
218 Instance - TODO: add argument description
219 CallerId - TODO: add argument description
220 Data - TODO: add argument description
224 TODO: add return values
239 TODO: Add function description
243 Argc - TODO: add argument description
244 Argv - TODO: add argument description
245 Envp - TODO: add argument description
249 TODO: add return values
256 IN UINTN LargestRegion
,
257 IN UINTN LargestRegionSize
,
258 IN UINTN BootFirmwareVolumeBase
,
265 TODO: Add function description
269 LargestRegion - TODO: add argument description
270 LargestRegionSize - TODO: add argument description
271 BootFirmwareVolumeBase - TODO: add argument description
272 PeiCoreFile - TODO: add argument description
276 TODO: add return values
284 IN EFI_PHYSICAL_ADDRESS
*ImageAddress
,
285 IN UINT64
*ImageSize
,
286 IN EFI_PHYSICAL_ADDRESS
*EntryPoint
292 TODO: Add function description
296 Pe32Data - TODO: add argument description
297 ImageAddress - TODO: add argument description
298 ImageSize - TODO: add argument description
299 EntryPoint - TODO: add argument description
303 TODO: add return values
310 IN EFI_FIRMWARE_VOLUME_HEADER
*FwVolHeader
,
317 TODO: Add function description
321 FwVolHeader - TODO: add argument description
322 Pe32Data - TODO: add argument description
326 TODO: add return values
333 IN EFI_FV_FILETYPE SearchType
,
334 IN EFI_FIRMWARE_VOLUME_HEADER
*FwVolHeader
,
335 IN OUT EFI_FFS_FILE_HEADER
**FileHeader
341 TODO: Add function description
345 SearchType - TODO: add argument description
346 FwVolHeader - TODO: add argument description
347 FileHeader - TODO: add argument description
351 TODO: add return values
357 SecFfsFindSectionData (
358 IN EFI_SECTION_TYPE SectionType
,
359 IN EFI_FFS_FILE_HEADER
*FfsFileHeader
,
360 IN OUT VOID
**SectionData
366 TODO: Add function description
370 SectionType - TODO: add argument description
371 FfsFileHeader - TODO: add argument description
372 SectionData - TODO: add argument description
376 TODO: add return values
383 SecUnixPeCoffLoaderLoadAsDll (
384 IN CHAR8
*PdbFileName
,
385 IN VOID
**ImageEntryPoint
,
392 TODO: Add function description
396 PdbFileName - TODO: add argument description
397 ImageEntryPoint - TODO: add argument description
398 ModHandle - TODO: add argument description
402 TODO: add return values
409 SecUnixPeCoffLoaderFreeLibrary (
416 TODO: Add function description
420 ModHandle - TODO: add argument description
424 TODO: add return values
433 IN OUT EFI_PHYSICAL_ADDRESS
*FdBase
,
434 IN OUT UINT64
*FdSize
,
435 IN OUT EFI_PHYSICAL_ADDRESS
*FixUp
441 GasketSecUnixFdAddress (
443 IN OUT EFI_PHYSICAL_ADDRESS
*FdBase
,
444 IN OUT UINT64
*FdSize
,
445 IN OUT EFI_PHYSICAL_ADDRESS
*FixUp
451 GetImageReadFunction (
452 IN PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
,
453 IN EFI_PHYSICAL_ADDRESS
*TopOfMemory
459 TODO: Add function description
463 ImageContext - TODO: add argument description
464 TopOfMemory - TODO: add argument description
468 TODO: add return values
478 IN OUT UINTN
*ReadSize
,
485 TODO: Add function description
489 FileHandle - TODO: add argument description
490 FileOffset - TODO: add argument description
491 ReadSize - TODO: add argument description
492 Buffer - TODO: add argument description
496 TODO: add return values
504 IN UINTN
*StrLen OPTIONAL
510 TODO: Add function description
514 Ascii - TODO: add argument description
515 StrLen - TODO: add argument description
519 TODO: add return values
525 CountSeperatorsInString (
526 IN
const CHAR16
*String
,
533 TODO: Add function description
537 String - TODO: add argument description
538 Seperator - TODO: add argument description
542 TODO: add return values
549 SecTemporaryRamSupport (
550 IN CONST EFI_PEI_SERVICES
**PeiServices
,
551 IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase
,
552 IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase
,
558 GasketSecTemporaryRamSupport (
559 IN CONST EFI_PEI_SERVICES
**PeiServices
,
560 IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase
,
561 IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase
,
568 SecPeCoffGetEntryPoint (
570 IN OUT VOID
**EntryPoint
575 SecPeCoffRelocateImageExtraAction (
576 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
581 SecPeCoffLoaderUnloadImageExtraAction (
582 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
587 VOID
SetTimer (UINT64 PeriodMs
, VOID (*CallBack
)(UINT64 DeltaMs
));
588 void msSleep (unsigned long Milliseconds
);
589 void GetLocalTime (EFI_TIME
*Time
);
591 long GetTimeZone(void);
592 int GetDayLight(void);
597 extern EFI_UNIX_THUNK_PROTOCOL
*gUnix
;