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