]> git.proxmox.com Git - mirror_edk2.git/blob - EdkModulePkg/Core/DxeIplPeim/DxeIpl.h
af570d3c4d65a286d6d1fb4c85009d1c74bc2185
[mirror_edk2.git] / EdkModulePkg / Core / DxeIplPeim / DxeIpl.h
1 /*++
2
3 Copyright (c) 2006, 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 Module Name:
13
14 DxeIpl.h
15
16 Abstract:
17
18 --*/
19
20 #ifndef __PEI_DXEIPL_H__
21 #define __PEI_DXEIPL_H__
22
23 #define STACK_SIZE 0x20000
24 #define BSP_STORE_SIZE 0x4000
25
26 #define GET_OCCUPIED_SIZE(ActualSize, Alignment) ((ActualSize + (Alignment - 1)) & ~(Alignment - 1))
27
28 extern BOOLEAN gInMemory;
29
30 EFI_STATUS
31 PeiFindFile (
32 IN UINT8 Type,
33 IN UINT16 SectionType,
34 OUT EFI_GUID *FileName,
35 OUT VOID **Pe32Data
36 )
37 ;
38
39 EFI_STATUS
40 PeiLoadFile (
41 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *PeiEfiPeiPeCoffLoader,
42 IN VOID *Pe32Data,
43 OUT EFI_PHYSICAL_ADDRESS *ImageAddress,
44 OUT UINT64 *ImageSize,
45 OUT EFI_PHYSICAL_ADDRESS *EntryPoint
46 )
47 ;
48
49
50 EFI_STATUS
51 GetImageReadFunction (
52 IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
53 )
54 ;
55
56 EFI_STATUS
57 PeiImageRead (
58 IN VOID *FileHandle,
59 IN UINTN FileOffset,
60 IN OUT UINTN *ReadSize,
61 OUT VOID *Buffer
62 )
63 ;
64
65 EFI_STATUS
66 EFIAPI
67 DxeIplLoadFile (
68 IN EFI_PEI_FV_FILE_LOADER_PPI *This,
69 IN EFI_FFS_FILE_HEADER *FfsHeader,
70 OUT EFI_PHYSICAL_ADDRESS *ImageAddress,
71 OUT UINT64 *ImageSize,
72 OUT EFI_PHYSICAL_ADDRESS *EntryPoint
73 );
74
75 EFI_STATUS
76 ShadowDxeIpl (
77 IN EFI_FFS_FILE_HEADER *DxeIpl,
78 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *PeiEfiPeiPeCoffLoader
79 );
80
81 EFI_STATUS
82 EFIAPI
83 DxeLoadCore (
84 IN EFI_DXE_IPL_PPI *This,
85 IN EFI_PEI_SERVICES **PeiServices,
86 IN EFI_PEI_HOB_POINTERS HobList
87 );
88
89 VOID
90 HandOffToDxeCore (
91 IN EFI_PHYSICAL_ADDRESS DxeCoreEntryPoint,
92 IN EFI_PEI_HOB_POINTERS HobList
93 );
94
95 EFI_STATUS
96 PeiProcessFile (
97 IN UINT16 SectionType,
98 IN EFI_FFS_FILE_HEADER *FfsFileHeader,
99 OUT VOID **Pe32Data,
100 IN EFI_PEI_HOB_POINTERS *OrigHob
101 );
102
103 EFI_STATUS
104 EFIAPI
105 PeimInitializeDxeIpl (
106 IN EFI_FFS_FILE_HEADER *FfsHeader,
107 IN EFI_PEI_SERVICES **PeiServices
108 );
109
110 EFI_PHYSICAL_ADDRESS
111 CreateIdentityMappingPageTables (
112 IN UINT32 NumberOfProcessorPhysicalAddressBits
113 )
114 ;
115
116 VOID
117 ActivateLongMode (
118 IN EFI_PHYSICAL_ADDRESS PageTables,
119 IN EFI_PHYSICAL_ADDRESS HobStart,
120 IN EFI_PHYSICAL_ADDRESS Stack,
121 IN EFI_PHYSICAL_ADDRESS CodeEntryPoint1,
122 IN EFI_PHYSICAL_ADDRESS CodeEntryPoint2
123 );
124
125 VOID
126 LoadGo64Gdt();
127
128 #endif