]> git.proxmox.com Git - mirror_edk2.git/blame - UnixPkg/Sec/SecMain.h
Integrate patch from Andrew Fish to make it run on OS X.
[mirror_edk2.git] / UnixPkg / Sec / SecMain.h
CommitLineData
804405e7 1/*++\r
2\r
ccd55824 3Copyright (c) 2006 - 2009, Intel Corporation \r
4Portions copyright (c) 2008-2009 Apple Inc.\r
804405e7 5All rights reserved. This program and the accompanying materials \r
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
bac49e77 21#include <FrameworkPei.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
804405e7 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
64\r
65Routine Description:\r
66\r
67 TODO: Add function description\r
68\r
69Arguments:\r
70\r
71 Pe32Data - TODO: add argument description\r
72 ImageAddress - TODO: add argument description\r
73 ImageSize - TODO: add argument description\r
74 EntryPoint - TODO: add argument description\r
75\r
76Returns:\r
77\r
78 TODO: add return values\r
79\r
80--*/\r
81;\r
82\r
83EFI_STATUS\r
84EFIAPI\r
ccd55824 85SecUnixPeiAutoScan (\r
804405e7 86 IN UINTN Index,\r
87 OUT EFI_PHYSICAL_ADDRESS *MemoryBase,\r
88 OUT UINT64 *MemorySize\r
89 )\r
90/*++\r
91\r
92Routine Description:\r
93\r
94 TODO: Add function description\r
95\r
96Arguments:\r
97\r
98 Index - TODO: add argument description\r
99 MemoryBase - TODO: add argument description\r
100 MemorySize - TODO: add argument description\r
101\r
102Returns:\r
103\r
104 TODO: add return values\r
105\r
106--*/\r
107;\r
108\r
109VOID *\r
110EFIAPI\r
ccd55824 111SecUnixUnixThunkAddress (\r
804405e7 112 VOID\r
113 )\r
114/*++\r
115\r
116Routine Description:\r
117\r
118 TODO: Add function description\r
119\r
120Arguments:\r
121\r
122 InterfaceSize - TODO: add argument description\r
123 InterfaceBase - TODO: add argument description\r
124\r
125Returns:\r
126\r
127 TODO: add return values\r
128\r
129--*/\r
130;\r
131\r
132EFI_STATUS\r
133EFIAPI\r
ccd55824 134SecUnixUnixFwhAddress (\r
804405e7 135 IN OUT UINT64 *FwhSize,\r
136 IN OUT EFI_PHYSICAL_ADDRESS *FwhBase\r
137 )\r
138/*++\r
139\r
140Routine Description:\r
141\r
142 TODO: Add function description\r
143\r
144Arguments:\r
145\r
146 FwhSize - TODO: add argument description\r
147 FwhBase - TODO: add argument description\r
148\r
149Returns:\r
150\r
151 TODO: add return values\r
152\r
153--*/\r
154;\r
155\r
156EFI_STATUS\r
157EFIAPI\r
158SecPeiReportStatusCode (\r
ccd55824 159 IN CONST EFI_PEI_SERVICES **PeiServices,\r
804405e7 160 IN EFI_STATUS_CODE_TYPE CodeType,\r
161 IN EFI_STATUS_CODE_VALUE Value,\r
162 IN UINT32 Instance,\r
ccd55824 163 IN CONST EFI_GUID *CallerId,\r
164 IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL\r
804405e7 165 )\r
166/*++\r
167\r
168Routine Description:\r
169\r
170 TODO: Add function description\r
171\r
172Arguments:\r
173\r
174 PeiServices - TODO: add argument description\r
175 CodeType - TODO: add argument description\r
176 Value - TODO: add argument description\r
177 Instance - TODO: add argument description\r
178 CallerId - TODO: add argument description\r
179 Data - TODO: add argument description\r
180\r
181Returns:\r
182\r
183 TODO: add return values\r
184\r
185--*/\r
186;\r
187\r
ccd55824 188int\r
804405e7 189main (\r
ccd55824 190 IN int Argc,\r
191 IN char **Argv,\r
192 IN char **Envp\r
804405e7 193 )\r
194/*++\r
195\r
196Routine Description:\r
197\r
198 TODO: Add function description\r
199\r
200Arguments:\r
201\r
202 Argc - TODO: add argument description\r
203 Argv - TODO: add argument description\r
204 Envp - TODO: add argument description\r
205\r
206Returns:\r
207\r
208 TODO: add return values\r
209\r
210--*/\r
211;\r
212\r
213VOID\r
214SecLoadFromCore (\r
215 IN UINTN LargestRegion,\r
216 IN UINTN LargestRegionSize,\r
217 IN UINTN BootFirmwareVolumeBase,\r
218 IN VOID *PeiCoreFile\r
219 )\r
220/*++\r
221\r
222Routine Description:\r
223\r
224 TODO: Add function description\r
225\r
226Arguments:\r
227\r
228 LargestRegion - TODO: add argument description\r
229 LargestRegionSize - TODO: add argument description\r
230 BootFirmwareVolumeBase - TODO: add argument description\r
231 PeiCoreFile - TODO: add argument description\r
232\r
233Returns:\r
234\r
235 TODO: add return values\r
236\r
237--*/\r
238;\r
239\r
240EFI_STATUS\r
241SecLoadFile (\r
242 IN VOID *Pe32Data,\r
243 IN EFI_PHYSICAL_ADDRESS *ImageAddress,\r
244 IN UINT64 *ImageSize,\r
245 IN EFI_PHYSICAL_ADDRESS *EntryPoint\r
246 )\r
247/*++\r
248\r
249Routine Description:\r
250\r
251 TODO: Add function description\r
252\r
253Arguments:\r
254\r
255 Pe32Data - TODO: add argument description\r
256 ImageAddress - TODO: add argument description\r
257 ImageSize - TODO: add argument description\r
258 EntryPoint - TODO: add argument description\r
259\r
260Returns:\r
261\r
262 TODO: add return values\r
263\r
264--*/\r
265;\r
266\r
267EFI_STATUS\r
268SecFfsFindPeiCore (\r
269 IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,\r
270 OUT VOID **Pe32Data\r
271 )\r
272/*++\r
273\r
274Routine Description:\r
275\r
276 TODO: Add function description\r
277\r
278Arguments:\r
279\r
280 FwVolHeader - TODO: add argument description\r
281 Pe32Data - TODO: add argument description\r
282\r
283Returns:\r
284\r
285 TODO: add return values\r
286\r
287--*/\r
288;\r
289\r
290EFI_STATUS\r
291SecFfsFindNextFile (\r
292 IN EFI_FV_FILETYPE SearchType,\r
293 IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,\r
294 IN OUT EFI_FFS_FILE_HEADER **FileHeader\r
295 )\r
296/*++\r
297\r
298Routine Description:\r
299\r
300 TODO: Add function description\r
301\r
302Arguments:\r
303\r
304 SearchType - TODO: add argument description\r
305 FwVolHeader - TODO: add argument description\r
306 FileHeader - TODO: add argument description\r
307\r
308Returns:\r
309\r
310 TODO: add return values\r
311\r
312--*/\r
313;\r
314\r
315EFI_STATUS\r
316SecFfsFindSectionData (\r
317 IN EFI_SECTION_TYPE SectionType,\r
318 IN EFI_FFS_FILE_HEADER *FfsFileHeader,\r
319 IN OUT VOID **SectionData\r
320 )\r
321/*++\r
322\r
323Routine Description:\r
324\r
325 TODO: Add function description\r
326\r
327Arguments:\r
328\r
329 SectionType - TODO: add argument description\r
330 FfsFileHeader - TODO: add argument description\r
331 SectionData - TODO: add argument description\r
332\r
333Returns:\r
334\r
335 TODO: add return values\r
336\r
337--*/\r
338;\r
339\r
340EFI_STATUS\r
341EFIAPI\r
ccd55824 342SecUnixPeCoffLoaderLoadAsDll (\r
804405e7 343 IN CHAR8 *PdbFileName,\r
344 IN VOID **ImageEntryPoint,\r
345 OUT VOID **ModHandle\r
346 )\r
347/*++\r
348\r
349Routine Description:\r
350\r
351 TODO: Add function description\r
352\r
353Arguments:\r
354\r
355 PdbFileName - TODO: add argument description\r
356 ImageEntryPoint - TODO: add argument description\r
357 ModHandle - TODO: add argument description\r
358\r
359Returns:\r
360\r
361 TODO: add return values\r
362\r
363--*/\r
364;\r
365\r
366EFI_STATUS\r
367EFIAPI\r
ccd55824 368SecUnixPeCoffLoaderFreeLibrary (\r
804405e7 369 OUT VOID *ModHandle\r
370 )\r
371/*++\r
372\r
373Routine Description:\r
374\r
375 TODO: Add function description\r
376\r
377Arguments:\r
378\r
379 ModHandle - TODO: add argument description\r
380\r
381Returns:\r
382\r
383 TODO: add return values\r
384\r
385--*/\r
386;\r
387\r
388EFI_STATUS\r
389EFIAPI\r
ccd55824 390SecUnixFdAddress (\r
804405e7 391 IN UINTN Index,\r
392 IN OUT EFI_PHYSICAL_ADDRESS *FdBase,\r
393 IN OUT UINT64 *FdSize\r
394 )\r
395/*++\r
396\r
397Routine Description:\r
398\r
399 TODO: Add function description\r
400\r
401Arguments:\r
402\r
403 Index - TODO: add argument description\r
404 FdBase - TODO: add argument description\r
405 FdSize - TODO: add argument description\r
406\r
407Returns:\r
408\r
409 TODO: add return values\r
410\r
411--*/\r
412;\r
413\r
414EFI_STATUS\r
415GetImageReadFunction (\r
416 IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
417 IN EFI_PHYSICAL_ADDRESS *TopOfMemory\r
418 )\r
419/*++\r
420\r
421Routine Description:\r
422\r
423 TODO: Add function description\r
424\r
425Arguments:\r
426\r
427 ImageContext - TODO: add argument description\r
428 TopOfMemory - TODO: add argument description\r
429\r
430Returns:\r
431\r
432 TODO: add return values\r
433\r
434--*/\r
435;\r
436\r
437EFI_STATUS\r
438EFIAPI\r
439SecImageRead (\r
440 IN VOID *FileHandle,\r
441 IN UINTN FileOffset,\r
442 IN OUT UINTN *ReadSize,\r
443 OUT VOID *Buffer\r
444 )\r
445/*++\r
446\r
447Routine Description:\r
448\r
449 TODO: Add function description\r
450\r
451Arguments:\r
452\r
453 FileHandle - TODO: add argument description\r
454 FileOffset - TODO: add argument description\r
455 ReadSize - TODO: add argument description\r
456 Buffer - TODO: add argument description\r
457\r
458Returns:\r
459\r
460 TODO: add return values\r
461\r
462--*/\r
463;\r
464\r
465CHAR16 *\r
466AsciiToUnicode (\r
467 IN CHAR8 *Ascii,\r
468 IN UINTN *StrLen OPTIONAL\r
469 )\r
470/*++\r
471\r
472Routine Description:\r
473\r
474 TODO: Add function description\r
475\r
476Arguments:\r
477\r
478 Ascii - TODO: add argument description\r
479 StrLen - TODO: add argument description\r
480\r
481Returns:\r
482\r
483 TODO: add return values\r
484\r
485--*/\r
486;\r
487\r
488UINTN\r
489CountSeperatorsInString (\r
490 IN const CHAR16 *String,\r
491 IN CHAR16 Seperator\r
492 )\r
493/*++\r
494\r
495Routine Description:\r
496\r
497 TODO: Add function description\r
498\r
499Arguments:\r
500\r
501 String - TODO: add argument description\r
502 Seperator - TODO: add argument description\r
503\r
504Returns:\r
505\r
506 TODO: add return values\r
507\r
508--*/\r
509;\r
510\r
804405e7 511EFI_STATUS\r
512EFIAPI\r
513SecTemporaryRamSupport (\r
514 IN CONST EFI_PEI_SERVICES **PeiServices,\r
515 IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase,\r
516 IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase,\r
517 IN UINTN CopySize\r
518 );\r
519\r
ccd55824 520\r
521RETURN_STATUS\r
522EFIAPI\r
523SecPeCoffGetEntryPoint (\r
524 IN VOID *Pe32Data,\r
525 IN OUT VOID **EntryPoint\r
526 );\r
527\r
528VOID\r
529EFIAPI\r
530SecPeCoffRelocateImageExtraAction (\r
531 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
532 );\r
533\r
534VOID\r
535EFIAPI\r
536SecPeCoffLoaderUnloadImageExtraAction (\r
537 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
538 );\r
539\r
540\r
804405e7 541extern EFI_UNIX_THUNK_PROTOCOL *gUnix;\r