]> git.proxmox.com Git - mirror_edk2.git/blob - DuetPkg/DxeIpl/HobGeneration.h
Initialize DuetPkg ...
[mirror_edk2.git] / DuetPkg / DxeIpl / HobGeneration.h
1 /*++
2
3 Copyright (c) 2006 - 2007, 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 HobGeneration.h
14
15 Abstract:
16
17 Revision History:
18
19 --*/
20
21 #ifndef _DXELDR_HOB_GENERATION_H_
22 #define _DXELDR_HOB_GENERATION_H_
23
24 #include "DxeIpl.h"
25
26 #define EFI_MEMORY_BELOW_1MB_START 0x86000
27 #define EFI_MEMORY_BELOW_1MB_END 0x9F800
28 #define EFI_MEMORY_STACK_PAGE_NUM 0x20
29 #define CONSUMED_MEMORY 0x2000000
30
31 #define NV_STORAGE_START 0x15000
32 #define NV_STORAGE_STATE 0x19000
33
34 #define EFI_LDR_MEMORY_DESCRIPTOR_GUID \
35 { 0x7701d7e5, 0x7d1d, 0x4432, 0xa4, 0x68, 0x67, 0x3d, 0xab, 0x8a, 0xde, 0x60 }
36
37 #pragma pack(1)
38
39 typedef struct {
40 EFI_HOB_GUID_TYPE Hob;
41 EFI_MEMORY_TYPE_INFORMATION Info[10];
42 } MEMORY_TYPE_INFORMATION_HOB;
43
44 typedef struct {
45 EFI_HOB_GUID_TYPE Hob;
46 EFI_PHYSICAL_ADDRESS Table;
47 } TABLE_HOB;
48
49 typedef struct {
50 EFI_HOB_GUID_TYPE Hob;
51 VOID *Interface;
52 } PROTOCOL_HOB;
53
54 typedef struct {
55 EFI_HOB_GUID_TYPE Hob;
56 UINTN MemDescCount;
57 EFI_MEMORY_DESCRIPTOR *MemDesc;
58 } MEMORY_DESC_HOB;
59
60 typedef struct {
61 EFI_HOB_GUID_TYPE Hob;
62 // Note: we get only one PCI Segment now.
63 EFI_PCI_EXPRESS_BASE_ADDRESS_INFORMATION PciExpressBaseAddressInfo;
64 } PCI_EXPRESS_BASE_HOB;
65
66 typedef struct {
67 EFI_HOB_GUID_TYPE Hob;
68 EFI_ACPI_DESCRIPTION AcpiDescription;
69 } ACPI_DESCRIPTION_HOB;
70
71 typedef struct {
72 EFI_HOB_GUID_TYPE Hob;
73 EFI_FLASH_MAP_FS_ENTRY_DATA FvbInfo;
74 } FVB_HOB;
75
76 typedef struct {
77 EFI_HOB_HANDOFF_INFO_TABLE Phit;
78 EFI_HOB_FIRMWARE_VOLUME Bfv;
79 EFI_HOB_RESOURCE_DESCRIPTOR BfvResource;
80 EFI_HOB_CPU Cpu;
81 EFI_HOB_MEMORY_ALLOCATION_STACK Stack;
82 EFI_HOB_MEMORY_ALLOCATION MemoryAllocation;
83 EFI_HOB_RESOURCE_DESCRIPTOR MemoryFreeUnder1MB;
84 EFI_HOB_RESOURCE_DESCRIPTOR MemoryAbove1MB;
85 EFI_HOB_RESOURCE_DESCRIPTOR MemoryAbove4GB;
86 EFI_HOB_MEMORY_ALLOCATION_MODULE DxeCore;
87 MEMORY_TYPE_INFORMATION_HOB MemoryTypeInfo;
88 TABLE_HOB Acpi;
89 TABLE_HOB Acpi20;
90 TABLE_HOB Smbios;
91 TABLE_HOB Mps;
92 /**
93 PROTOCOL_HOB FlushInstructionCache;
94 PROTOCOL_HOB TransferControl;
95 PROTOCOL_HOB PeCoffLoader;
96 PROTOCOL_HOB EfiDecompress;
97 PROTOCOL_HOB TianoDecompress;
98 **/
99 PROTOCOL_HOB SerialStatusCode;
100 MEMORY_DESC_HOB MemoryDescriptor;
101 PCI_EXPRESS_BASE_HOB PciExpress;
102 ACPI_DESCRIPTION_HOB AcpiInfo;
103
104 EFI_HOB_RESOURCE_DESCRIPTOR NvStorageFvResource;
105
106 FVB_HOB NvStorageFvb;
107 FVB_HOB NvStorage;
108
109 FVB_HOB NvFtwFvb;
110 FVB_HOB NvFtwWorking;
111 FVB_HOB NvFtwSpare;
112
113 EFI_HOB_GENERIC_HEADER EndOfHobList;
114 } HOB_TEMPLATE;
115
116 #pragma pack()
117
118 extern HOB_TEMPLATE *gHob;
119
120 VOID *
121 PrepareHobStack (
122 IN VOID *StackTop
123 );
124
125 VOID
126 PrepareHobBfv (
127 VOID *Bfv,
128 UINTN BfvLength
129 );
130
131 VOID *
132 PrepareHobMemory (
133 IN UINTN NumberOfMemoryMapEntries,
134 IN EFI_MEMORY_DESCRIPTOR *EfiMemoryDescriptor
135 );
136
137 VOID
138 PrepareHobDxeCore (
139 VOID *DxeCoreEntryPoint,
140 EFI_PHYSICAL_ADDRESS DxeCoreImageBase,
141 UINT64 DxeCoreLength
142 );
143
144 VOID *
145 PreparePageTable (
146 VOID *PageNumberTop,
147 UINT8 SizeOfMemorySpace
148 );
149
150 VOID *
151 PrepareHobMemoryDescriptor (
152 VOID *MemoryDescriptorTop,
153 UINTN MemDescCount,
154 EFI_MEMORY_DESCRIPTOR *MemDesc
155 );
156
157 VOID
158 PrepareHobPhit (
159 VOID *MemoryTop,
160 VOID *FreeMemoryTop
161 );
162
163 VOID *
164 PrepareHobNvStorage (
165 VOID *NvStorageTop
166 );
167
168 VOID
169 PrepareHobCpu (
170 VOID
171 );
172
173 VOID
174 CompleteHobGeneration (
175 VOID
176 );
177
178 #endif