]> git.proxmox.com Git - mirror_edk2.git/blob - DuetPkg/DxeIpl/HobGeneration.h
Change DUET specific HOB structure to make all HOB 8-byte align to fix the PI-SCT...
[mirror_edk2.git] / DuetPkg / DxeIpl / HobGeneration.h
1 /** @file
2
3 Copyright (c) 2006 - 2010, 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 0x100000 * 80
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 EFI_PHYSICAL_ADDRESS 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 EFI_HOB_RESOURCE_DESCRIPTOR MemoryDxeCore;
88 MEMORY_TYPE_INFORMATION_HOB MemoryTypeInfo;
89 TABLE_HOB Acpi;
90 TABLE_HOB Acpi20;
91 TABLE_HOB Smbios;
92 TABLE_HOB Mps;
93 /**
94 PROTOCOL_HOB FlushInstructionCache;
95 PROTOCOL_HOB TransferControl;
96 PROTOCOL_HOB PeCoffLoader;
97 PROTOCOL_HOB EfiDecompress;
98 PROTOCOL_HOB TianoDecompress;
99 **/
100 PROTOCOL_HOB SerialStatusCode;
101 MEMORY_DESC_HOB MemoryDescriptor;
102 PCI_EXPRESS_BASE_HOB PciExpress;
103 ACPI_DESCRIPTION_HOB AcpiInfo;
104
105 EFI_HOB_RESOURCE_DESCRIPTOR NvStorageFvResource;
106
107 FVB_HOB NvStorageFvb;
108 FVB_HOB NvStorage;
109
110 EFI_HOB_RESOURCE_DESCRIPTOR NvFtwFvResource;
111 FVB_HOB NvFtwFvb;
112 FVB_HOB NvFtwWorking;
113 FVB_HOB NvFtwSpare;
114
115 EFI_HOB_GENERIC_HEADER EndOfHobList;
116 } HOB_TEMPLATE;
117
118 #pragma pack()
119
120 extern HOB_TEMPLATE *gHob;
121
122 VOID *
123 PrepareHobStack (
124 IN VOID *StackTop
125 );
126
127 VOID
128 PrepareHobBfv (
129 VOID *Bfv,
130 UINTN BfvLength
131 );
132
133 VOID *
134 PrepareHobMemory (
135 IN UINTN NumberOfMemoryMapEntries,
136 IN EFI_MEMORY_DESCRIPTOR *EfiMemoryDescriptor
137 );
138
139 VOID
140 PrepareHobDxeCore (
141 VOID *DxeCoreEntryPoint,
142 EFI_PHYSICAL_ADDRESS DxeCoreImageBase,
143 UINT64 DxeCoreLength
144 );
145
146 VOID *
147 PreparePageTable (
148 VOID *PageNumberTop,
149 UINT8 SizeOfMemorySpace
150 );
151
152 VOID *
153 PrepareHobMemoryDescriptor (
154 VOID *MemoryDescriptorTop,
155 UINTN MemDescCount,
156 EFI_MEMORY_DESCRIPTOR *MemDesc
157 );
158
159 VOID
160 PrepareHobPhit (
161 VOID *MemoryTop,
162 VOID *FreeMemoryTop
163 );
164
165 VOID *
166 PrepareHobNvStorage (
167 VOID *NvStorageTop
168 );
169
170 VOID
171 PrepareHobCpu (
172 VOID
173 );
174
175 VOID
176 CompleteHobGeneration (
177 VOID
178 );
179
180 #endif