]> git.proxmox.com Git - mirror_edk2.git/blame - UnixPkg/Sec/SecMain.h
Added support for an EFI X64 ABI compatible UnixPkg. With an internal only compiler...
[mirror_edk2.git] / UnixPkg / Sec / SecMain.h
CommitLineData
804405e7 1/*++\r
2\r
f9b8ab56
HT
3Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
4Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
5This program and the accompanying materials \r
804405e7 6are licensed and made available under the terms and conditions of the BSD License \r
7which accompanies this distribution. The full text of the license may be found at \r
8http://opensource.org/licenses/bsd-license.php \r
9 \r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
12\r
13\r
14Module Name:\r
15 SecMain.h\r
16\r
17Abstract:\r
18 Include file for host API based SEC\r
19\r
20--*/\r
c029854f 21#include <PiPei.h>\r
804405e7 22\r
23#include <Protocol/UnixThunk.h>\r
804405e7 24#include <Ppi/StatusCode.h>\r
25\r
26#include <Library/PeCoffLib.h>\r
27#include <Library/BaseLib.h>\r
28#include <Library/BaseMemoryLib.h>\r
29#include <Library/PrintLib.h>\r
30#include <Library/PcdLib.h>\r
31#include <Library/DebugLib.h>\r
ccd55824 32#include <Library/ReportStatusCodeLib.h>\r
804405e7 33\r
34#define STACK_SIZE 0x20000 \r
35\r
36typedef struct {\r
37 EFI_PHYSICAL_ADDRESS Address;\r
38 UINT64 Size;\r
39} UNIX_FD_INFO;\r
40\r
41typedef struct {\r
42 EFI_PHYSICAL_ADDRESS Memory;\r
43 UINT64 Size;\r
44} UNIX_SYSTEM_MEMORY;\r
45\r
46\r
ccd55824 47#define MAX_IMAGE_CONTEXT_TO_MOD_HANDLE_ARRAY_SIZE 0x100\r
48\r
49typedef struct {\r
50 PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext;\r
51 VOID *ModHandle;\r
52} IMAGE_CONTEXT_TO_MOD_HANDLE;\r
53\r
804405e7 54\r
55EFI_STATUS\r
56EFIAPI\r
ccd55824 57SecUnixPeiLoadFile (\r
bb111c23 58 VOID *Pe32Data, // TODO: add IN/OUT modifier to Pe32Data\r
59 EFI_PHYSICAL_ADDRESS *ImageAddress, // TODO: add IN/OUT modifier to ImageAddress\r
60 UINT64 *ImageSize, // TODO: add IN/OUT modifier to ImageSize\r
61 EFI_PHYSICAL_ADDRESS *EntryPoint // TODO: add IN/OUT modifier to EntryPoint\r
62 );\r
63\r
64EFI_STATUS\r
65EFIAPI\r
66GasketSecUnixPeiLoadFile (\r
804405e7 67 VOID *Pe32Data, // TODO: add IN/OUT modifier to Pe32Data\r
68 EFI_PHYSICAL_ADDRESS *ImageAddress, // TODO: add IN/OUT modifier to ImageAddress\r
69 UINT64 *ImageSize, // TODO: add IN/OUT modifier to ImageSize\r
70 EFI_PHYSICAL_ADDRESS *EntryPoint // TODO: add IN/OUT modifier to EntryPoint\r
71 )\r
72/*++\r
73\r
74Routine Description:\r
75\r
76 TODO: Add function description\r
77\r
78Arguments:\r
79\r
80 Pe32Data - TODO: add argument description\r
81 ImageAddress - TODO: add argument description\r
82 ImageSize - TODO: add argument description\r
83 EntryPoint - TODO: add argument description\r
84\r
85Returns:\r
86\r
87 TODO: add return values\r
88\r
89--*/\r
90;\r
91\r
92EFI_STATUS\r
93EFIAPI\r
ccd55824 94SecUnixPeiAutoScan (\r
bb111c23 95 IN UINTN Index,\r
96 OUT EFI_PHYSICAL_ADDRESS *MemoryBase,\r
97 OUT UINT64 *MemorySize\r
98 );\r
99 \r
100EFI_STATUS\r
101EFIAPI\r
102GasketSecUnixPeiAutoScan (\r
804405e7 103 IN UINTN Index,\r
104 OUT EFI_PHYSICAL_ADDRESS *MemoryBase,\r
105 OUT UINT64 *MemorySize\r
106 )\r
107/*++\r
108\r
109Routine Description:\r
110\r
111 TODO: Add function description\r
112\r
113Arguments:\r
114\r
115 Index - TODO: add argument description\r
116 MemoryBase - TODO: add argument description\r
117 MemorySize - TODO: add argument description\r
118\r
119Returns:\r
120\r
121 TODO: add return values\r
122\r
123--*/\r
124;\r
125\r
126VOID *\r
127EFIAPI\r
ccd55824 128SecUnixUnixThunkAddress (\r
bb111c23 129 VOID\r
130 );\r
131 \r
132VOID *\r
133EFIAPI\r
134GasketSecUnixUnixThunkAddress (\r
804405e7 135 VOID\r
136 )\r
137/*++\r
138\r
139Routine Description:\r
140\r
141 TODO: Add function description\r
142\r
143Arguments:\r
144\r
145 InterfaceSize - TODO: add argument description\r
146 InterfaceBase - TODO: add argument description\r
147\r
148Returns:\r
149\r
150 TODO: add return values\r
151\r
152--*/\r
153;\r
154\r
155EFI_STATUS\r
156EFIAPI\r
ccd55824 157SecUnixUnixFwhAddress (\r
bb111c23 158 IN OUT UINT64 *FwhSize,\r
159 IN OUT EFI_PHYSICAL_ADDRESS *FwhBase\r
160 );\r
161 \r
162EFI_STATUS\r
163EFIAPI\r
164GasketSecUnixUnixFwhAddress (\r
804405e7 165 IN OUT UINT64 *FwhSize,\r
166 IN OUT EFI_PHYSICAL_ADDRESS *FwhBase\r
167 )\r
168/*++\r
169\r
170Routine Description:\r
171\r
172 TODO: Add function description\r
173\r
174Arguments:\r
175\r
176 FwhSize - TODO: add argument description\r
177 FwhBase - TODO: add argument description\r
178\r
179Returns:\r
180\r
181 TODO: add return values\r
182\r
183--*/\r
184;\r
185\r
186EFI_STATUS\r
187EFIAPI\r
188SecPeiReportStatusCode (\r
bb111c23 189 IN CONST EFI_PEI_SERVICES **PeiServices,\r
190 IN EFI_STATUS_CODE_TYPE CodeType,\r
191 IN EFI_STATUS_CODE_VALUE Value,\r
192 IN UINT32 Instance,\r
193 IN CONST EFI_GUID *CallerId,\r
194 IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL\r
195 );\r
196 \r
197EFI_STATUS\r
198EFIAPI\r
199GasketSecPeiReportStatusCode (\r
ccd55824 200 IN CONST EFI_PEI_SERVICES **PeiServices,\r
7ee3b613
A
201 IN EFI_STATUS_CODE_TYPE CodeType,\r
202 IN EFI_STATUS_CODE_VALUE Value,\r
203 IN UINT32 Instance,\r
ccd55824 204 IN CONST EFI_GUID *CallerId,\r
205 IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL\r
804405e7 206 )\r
207/*++\r
208\r
209Routine Description:\r
210\r
211 TODO: Add function description\r
212\r
213Arguments:\r
214\r
215 PeiServices - TODO: add argument description\r
216 CodeType - TODO: add argument description\r
217 Value - TODO: add argument description\r
218 Instance - TODO: add argument description\r
219 CallerId - TODO: add argument description\r
220 Data - TODO: add argument description\r
221\r
222Returns:\r
223\r
224 TODO: add return values\r
225\r
226--*/\r
227;\r
228\r
ccd55824 229int\r
804405e7 230main (\r
ccd55824 231 IN int Argc,\r
232 IN char **Argv,\r
233 IN char **Envp\r
804405e7 234 )\r
235/*++\r
236\r
237Routine Description:\r
238\r
239 TODO: Add function description\r
240\r
241Arguments:\r
242\r
243 Argc - TODO: add argument description\r
244 Argv - TODO: add argument description\r
245 Envp - TODO: add argument description\r
246\r
247Returns:\r
248\r
249 TODO: add return values\r
250\r
251--*/\r
252;\r
253\r
254VOID\r
255SecLoadFromCore (\r
256 IN UINTN LargestRegion,\r
257 IN UINTN LargestRegionSize,\r
258 IN UINTN BootFirmwareVolumeBase,\r
259 IN VOID *PeiCoreFile\r
260 )\r
261/*++\r
262\r
263Routine Description:\r
264\r
265 TODO: Add function description\r
266\r
267Arguments:\r
268\r
269 LargestRegion - TODO: add argument description\r
270 LargestRegionSize - TODO: add argument description\r
271 BootFirmwareVolumeBase - TODO: add argument description\r
272 PeiCoreFile - TODO: add argument description\r
273\r
274Returns:\r
275\r
276 TODO: add return values\r
277\r
278--*/\r
279;\r
280\r
281EFI_STATUS\r
282SecLoadFile (\r
283 IN VOID *Pe32Data,\r
284 IN EFI_PHYSICAL_ADDRESS *ImageAddress,\r
285 IN UINT64 *ImageSize,\r
286 IN EFI_PHYSICAL_ADDRESS *EntryPoint\r
287 )\r
288/*++\r
289\r
290Routine Description:\r
291\r
292 TODO: Add function description\r
293\r
294Arguments:\r
295\r
296 Pe32Data - TODO: add argument description\r
297 ImageAddress - TODO: add argument description\r
298 ImageSize - TODO: add argument description\r
299 EntryPoint - TODO: add argument description\r
300\r
301Returns:\r
302\r
303 TODO: add return values\r
304\r
305--*/\r
306;\r
307\r
308EFI_STATUS\r
309SecFfsFindPeiCore (\r
310 IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,\r
311 OUT VOID **Pe32Data\r
312 )\r
313/*++\r
314\r
315Routine Description:\r
316\r
317 TODO: Add function description\r
318\r
319Arguments:\r
320\r
321 FwVolHeader - TODO: add argument description\r
322 Pe32Data - TODO: add argument description\r
323\r
324Returns:\r
325\r
326 TODO: add return values\r
327\r
328--*/\r
329;\r
330\r
331EFI_STATUS\r
332SecFfsFindNextFile (\r
333 IN EFI_FV_FILETYPE SearchType,\r
334 IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,\r
335 IN OUT EFI_FFS_FILE_HEADER **FileHeader\r
336 )\r
337/*++\r
338\r
339Routine Description:\r
340\r
341 TODO: Add function description\r
342\r
343Arguments:\r
344\r
345 SearchType - TODO: add argument description\r
346 FwVolHeader - TODO: add argument description\r
347 FileHeader - TODO: add argument description\r
348\r
349Returns:\r
350\r
351 TODO: add return values\r
352\r
353--*/\r
354;\r
355\r
356EFI_STATUS\r
357SecFfsFindSectionData (\r
358 IN EFI_SECTION_TYPE SectionType,\r
359 IN EFI_FFS_FILE_HEADER *FfsFileHeader,\r
360 IN OUT VOID **SectionData\r
361 )\r
362/*++\r
363\r
364Routine Description:\r
365\r
366 TODO: Add function description\r
367\r
368Arguments:\r
369\r
370 SectionType - TODO: add argument description\r
371 FfsFileHeader - TODO: add argument description\r
372 SectionData - TODO: add argument description\r
373\r
374Returns:\r
375\r
376 TODO: add return values\r
377\r
378--*/\r
379;\r
380\r
381EFI_STATUS\r
382EFIAPI\r
ccd55824 383SecUnixPeCoffLoaderLoadAsDll (\r
804405e7 384 IN CHAR8 *PdbFileName,\r
385 IN VOID **ImageEntryPoint,\r
386 OUT VOID **ModHandle\r
387 )\r
388/*++\r
389\r
390Routine Description:\r
391\r
392 TODO: Add function description\r
393\r
394Arguments:\r
395\r
396 PdbFileName - TODO: add argument description\r
397 ImageEntryPoint - TODO: add argument description\r
398 ModHandle - TODO: add argument description\r
399\r
400Returns:\r
401\r
402 TODO: add return values\r
403\r
404--*/\r
405;\r
406\r
407EFI_STATUS\r
408EFIAPI\r
ccd55824 409SecUnixPeCoffLoaderFreeLibrary (\r
804405e7 410 OUT VOID *ModHandle\r
411 )\r
412/*++\r
413\r
414Routine Description:\r
415\r
416 TODO: Add function description\r
417\r
418Arguments:\r
419\r
420 ModHandle - TODO: add argument description\r
421\r
422Returns:\r
423\r
424 TODO: add return values\r
425\r
426--*/\r
427;\r
428\r
429EFI_STATUS\r
430EFIAPI\r
ccd55824 431SecUnixFdAddress (\r
804405e7 432 IN UINTN Index,\r
433 IN OUT EFI_PHYSICAL_ADDRESS *FdBase,\r
7ee3b613
A
434 IN OUT UINT64 *FdSize,\r
435 IN OUT EFI_PHYSICAL_ADDRESS *FixUp\r
804405e7 436 )\r
804405e7 437;\r
438\r
bb111c23 439EFI_STATUS\r
440EFIAPI\r
441GasketSecUnixFdAddress (\r
442 IN UINTN Index,\r
443 IN OUT EFI_PHYSICAL_ADDRESS *FdBase,\r
444 IN OUT UINT64 *FdSize,\r
445 IN OUT EFI_PHYSICAL_ADDRESS *FixUp\r
446 )\r
447;\r
448\r
449\r
804405e7 450EFI_STATUS\r
451GetImageReadFunction (\r
452 IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
453 IN EFI_PHYSICAL_ADDRESS *TopOfMemory\r
454 )\r
455/*++\r
456\r
457Routine Description:\r
458\r
459 TODO: Add function description\r
460\r
461Arguments:\r
462\r
463 ImageContext - TODO: add argument description\r
464 TopOfMemory - TODO: add argument description\r
465\r
466Returns:\r
467\r
468 TODO: add return values\r
469\r
470--*/\r
471;\r
472\r
473EFI_STATUS\r
474EFIAPI\r
475SecImageRead (\r
476 IN VOID *FileHandle,\r
477 IN UINTN FileOffset,\r
478 IN OUT UINTN *ReadSize,\r
479 OUT VOID *Buffer\r
480 )\r
481/*++\r
482\r
483Routine Description:\r
484\r
485 TODO: Add function description\r
486\r
487Arguments:\r
488\r
489 FileHandle - TODO: add argument description\r
490 FileOffset - TODO: add argument description\r
491 ReadSize - TODO: add argument description\r
492 Buffer - TODO: add argument description\r
493\r
494Returns:\r
495\r
496 TODO: add return values\r
497\r
498--*/\r
499;\r
500\r
501CHAR16 *\r
502AsciiToUnicode (\r
503 IN CHAR8 *Ascii,\r
504 IN UINTN *StrLen OPTIONAL\r
505 )\r
506/*++\r
507\r
508Routine Description:\r
509\r
510 TODO: Add function description\r
511\r
512Arguments:\r
513\r
514 Ascii - TODO: add argument description\r
515 StrLen - TODO: add argument description\r
516\r
517Returns:\r
518\r
519 TODO: add return values\r
520\r
521--*/\r
522;\r
523\r
524UINTN\r
525CountSeperatorsInString (\r
526 IN const CHAR16 *String,\r
527 IN CHAR16 Seperator\r
528 )\r
529/*++\r
530\r
531Routine Description:\r
532\r
533 TODO: Add function description\r
534\r
535Arguments:\r
536\r
537 String - TODO: add argument description\r
538 Seperator - TODO: add argument description\r
539\r
540Returns:\r
541\r
542 TODO: add return values\r
543\r
544--*/\r
545;\r
546\r
804405e7 547EFI_STATUS\r
548EFIAPI\r
549SecTemporaryRamSupport (\r
550 IN CONST EFI_PEI_SERVICES **PeiServices,\r
551 IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase,\r
552 IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase,\r
553 IN UINTN CopySize\r
554 );\r
bb111c23 555 \r
556EFI_STATUS\r
557EFIAPI\r
558GasketSecTemporaryRamSupport (\r
559 IN CONST EFI_PEI_SERVICES **PeiServices,\r
560 IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase,\r
561 IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase,\r
562 IN UINTN CopySize\r
563 );\r
804405e7 564\r
ccd55824 565\r
566RETURN_STATUS\r
567EFIAPI\r
568SecPeCoffGetEntryPoint (\r
569 IN VOID *Pe32Data,\r
570 IN OUT VOID **EntryPoint\r
571 );\r
572\r
573VOID\r
574EFIAPI\r
575SecPeCoffRelocateImageExtraAction (\r
576 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
577 );\r
578\r
579VOID\r
580EFIAPI\r
581SecPeCoffLoaderUnloadImageExtraAction (\r
582 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
583 );\r
584\r
585\r
7ee3b613
A
586\r
587VOID SetTimer (UINT64 PeriodMs, VOID (*CallBack)(UINT64 DeltaMs));\r
588void msSleep (unsigned long Milliseconds);\r
589void GetLocalTime (EFI_TIME *Time);\r
590void TzSet (void);\r
591long GetTimeZone(void);\r
592int GetDayLight(void);\r
593int GetErrno(void);\r
594\r
595\r
596\r
804405e7 597extern EFI_UNIX_THUNK_PROTOCOL *gUnix;\r