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