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>
33 #include <Library/SecDispatchTableLib.h>
36 #define STACK_SIZE 0x20000
39 EFI_PHYSICAL_ADDRESS Address
;
44 EFI_PHYSICAL_ADDRESS Memory
;
49 #define MAX_IMAGE_CONTEXT_TO_MOD_HANDLE_ARRAY_SIZE 0x100
52 PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
;
54 } IMAGE_CONTEXT_TO_MOD_HANDLE
;
60 VOID
*Pe32Data
, // TODO: add IN/OUT modifier to Pe32Data
61 EFI_PHYSICAL_ADDRESS
*ImageAddress
, // TODO: add IN/OUT modifier to ImageAddress
62 UINT64
*ImageSize
, // TODO: add IN/OUT modifier to ImageSize
63 EFI_PHYSICAL_ADDRESS
*EntryPoint
// TODO: add IN/OUT modifier to EntryPoint
68 GasketSecUnixPeiLoadFile (
69 VOID
*Pe32Data
, // TODO: add IN/OUT modifier to Pe32Data
70 EFI_PHYSICAL_ADDRESS
*ImageAddress
, // TODO: add IN/OUT modifier to ImageAddress
71 UINT64
*ImageSize
, // TODO: add IN/OUT modifier to ImageSize
72 EFI_PHYSICAL_ADDRESS
*EntryPoint
// TODO: add IN/OUT modifier to EntryPoint
78 TODO: Add function description
82 Pe32Data - TODO: add argument description
83 ImageAddress - TODO: add argument description
84 ImageSize - TODO: add argument description
85 EntryPoint - TODO: add argument description
89 TODO: add return values
98 OUT EFI_PHYSICAL_ADDRESS
*MemoryBase
,
99 OUT UINT64
*MemorySize
104 GasketSecUnixPeiAutoScan (
106 OUT EFI_PHYSICAL_ADDRESS
*MemoryBase
,
107 OUT UINT64
*MemorySize
113 TODO: Add function description
117 Index - TODO: add argument description
118 MemoryBase - TODO: add argument description
119 MemorySize - TODO: add argument description
123 TODO: add return values
130 SecUnixUnixThunkAddress (
136 GasketSecUnixUnixThunkAddress (
143 TODO: Add function description
147 InterfaceSize - TODO: add argument description
148 InterfaceBase - TODO: add argument description
152 TODO: add return values
159 SecUnixUnixFwhAddress (
160 IN OUT UINT64
*FwhSize
,
161 IN OUT EFI_PHYSICAL_ADDRESS
*FwhBase
166 GasketSecUnixUnixFwhAddress (
167 IN OUT UINT64
*FwhSize
,
168 IN OUT EFI_PHYSICAL_ADDRESS
*FwhBase
174 TODO: Add function description
178 FwhSize - TODO: add argument description
179 FwhBase - TODO: add argument description
183 TODO: add return values
190 SecPeiReportStatusCode (
191 IN CONST EFI_PEI_SERVICES
**PeiServices
,
192 IN EFI_STATUS_CODE_TYPE CodeType
,
193 IN EFI_STATUS_CODE_VALUE Value
,
195 IN CONST EFI_GUID
*CallerId
,
196 IN CONST EFI_STATUS_CODE_DATA
*Data OPTIONAL
201 GasketSecPeiReportStatusCode (
202 IN CONST EFI_PEI_SERVICES
**PeiServices
,
203 IN EFI_STATUS_CODE_TYPE CodeType
,
204 IN EFI_STATUS_CODE_VALUE Value
,
206 IN CONST EFI_GUID
*CallerId
,
207 IN CONST EFI_STATUS_CODE_DATA
*Data OPTIONAL
213 TODO: Add function description
217 PeiServices - TODO: add argument description
218 CodeType - TODO: add argument description
219 Value - TODO: add argument description
220 Instance - TODO: add argument description
221 CallerId - TODO: add argument description
222 Data - TODO: add argument description
226 TODO: add return values
241 TODO: Add function description
245 Argc - TODO: add argument description
246 Argv - TODO: add argument description
247 Envp - TODO: add argument description
251 TODO: add return values
258 IN UINTN LargestRegion
,
259 IN UINTN LargestRegionSize
,
260 IN UINTN BootFirmwareVolumeBase
,
267 TODO: Add function description
271 LargestRegion - TODO: add argument description
272 LargestRegionSize - TODO: add argument description
273 BootFirmwareVolumeBase - TODO: add argument description
274 PeiCoreFile - TODO: add argument description
278 TODO: add return values
286 IN EFI_PHYSICAL_ADDRESS
*ImageAddress
,
287 IN UINT64
*ImageSize
,
288 IN EFI_PHYSICAL_ADDRESS
*EntryPoint
294 TODO: Add function description
298 Pe32Data - TODO: add argument description
299 ImageAddress - TODO: add argument description
300 ImageSize - TODO: add argument description
301 EntryPoint - TODO: add argument description
305 TODO: add return values
312 IN EFI_FIRMWARE_VOLUME_HEADER
*FwVolHeader
,
319 TODO: Add function description
323 FwVolHeader - TODO: add argument description
324 Pe32Data - TODO: add argument description
328 TODO: add return values
335 IN EFI_FV_FILETYPE SearchType
,
336 IN EFI_FIRMWARE_VOLUME_HEADER
*FwVolHeader
,
337 IN OUT EFI_FFS_FILE_HEADER
**FileHeader
343 TODO: Add function description
347 SearchType - TODO: add argument description
348 FwVolHeader - TODO: add argument description
349 FileHeader - TODO: add argument description
353 TODO: add return values
359 SecFfsFindSectionData (
360 IN EFI_SECTION_TYPE SectionType
,
361 IN EFI_FFS_FILE_HEADER
*FfsFileHeader
,
362 IN OUT VOID
**SectionData
368 TODO: Add function description
372 SectionType - TODO: add argument description
373 FfsFileHeader - TODO: add argument description
374 SectionData - TODO: add argument description
378 TODO: add return values
385 SecUnixPeCoffLoaderLoadAsDll (
386 IN CHAR8
*PdbFileName
,
387 IN VOID
**ImageEntryPoint
,
394 TODO: Add function description
398 PdbFileName - TODO: add argument description
399 ImageEntryPoint - TODO: add argument description
400 ModHandle - TODO: add argument description
404 TODO: add return values
411 SecUnixPeCoffLoaderFreeLibrary (
418 TODO: Add function description
422 ModHandle - TODO: add argument description
426 TODO: add return values
435 IN OUT EFI_PHYSICAL_ADDRESS
*FdBase
,
436 IN OUT UINT64
*FdSize
,
437 IN OUT EFI_PHYSICAL_ADDRESS
*FixUp
443 GasketSecUnixFdAddress (
445 IN OUT EFI_PHYSICAL_ADDRESS
*FdBase
,
446 IN OUT UINT64
*FdSize
,
447 IN OUT EFI_PHYSICAL_ADDRESS
*FixUp
453 GetImageReadFunction (
454 IN PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
,
455 IN EFI_PHYSICAL_ADDRESS
*TopOfMemory
461 TODO: Add function description
465 ImageContext - TODO: add argument description
466 TopOfMemory - TODO: add argument description
470 TODO: add return values
480 IN OUT UINTN
*ReadSize
,
487 TODO: Add function description
491 FileHandle - TODO: add argument description
492 FileOffset - TODO: add argument description
493 ReadSize - TODO: add argument description
494 Buffer - TODO: add argument description
498 TODO: add return values
506 IN UINTN
*StrLen OPTIONAL
512 TODO: Add function description
516 Ascii - TODO: add argument description
517 StrLen - TODO: add argument description
521 TODO: add return values
527 CountSeperatorsInString (
528 IN
const CHAR16
*String
,
535 TODO: Add function description
539 String - TODO: add argument description
540 Seperator - TODO: add argument description
544 TODO: add return values
551 SecTemporaryRamSupport (
552 IN CONST EFI_PEI_SERVICES
**PeiServices
,
553 IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase
,
554 IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase
,
560 GasketSecTemporaryRamSupport (
561 IN CONST EFI_PEI_SERVICES
**PeiServices
,
562 IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase
,
563 IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase
,
570 SecPeCoffGetEntryPoint (
572 IN OUT VOID
**EntryPoint
577 SecPeCoffRelocateImageExtraAction (
578 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
583 SecPeCoffLoaderUnloadImageExtraAction (
584 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
589 VOID
SetTimer (UINT64 PeriodMs
, VOID (*CallBack
)(UINT64 DeltaMs
));
590 void msSleep (unsigned long Milliseconds
);
591 void GetLocalTime (EFI_TIME
*Time
);
593 long GetTimeZone(void);
594 int GetDayLight(void);
599 extern EFI_UNIX_THUNK_PROTOCOL
*gUnix
;