]> git.proxmox.com Git - mirror_edk2.git/blob - DuetPkg/DxeIpl/HobGeneration.h
UefiCpuPkg/PiSmmCpuDxeSmm: patch "gSmbase" with PatchInstructionX86()
[mirror_edk2.git] / DuetPkg / DxeIpl / HobGeneration.h
1 /** @file
2
3 Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
4 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 #pragma pack(1)
35
36 typedef struct {
37 EFI_HOB_GUID_TYPE Hob;
38 EFI_MEMORY_TYPE_INFORMATION Info[10];
39 } MEMORY_TYPE_INFORMATION_HOB;
40
41 typedef struct {
42 EFI_HOB_GUID_TYPE Hob;
43 EFI_PHYSICAL_ADDRESS Table;
44 } TABLE_HOB;
45
46 typedef struct {
47 EFI_HOB_GUID_TYPE Hob;
48 EFI_PHYSICAL_ADDRESS Interface;
49 } PROTOCOL_HOB;
50
51 typedef struct {
52 EFI_HOB_GUID_TYPE Hob;
53 // Note: we get only one PCI Segment now.
54 EFI_PCI_EXPRESS_BASE_ADDRESS_INFORMATION PciExpressBaseAddressInfo;
55 } PCI_EXPRESS_BASE_HOB;
56
57 typedef struct {
58 EFI_HOB_GUID_TYPE Hob;
59 EFI_ACPI_DESCRIPTION AcpiDescription;
60 } ACPI_DESCRIPTION_HOB;
61
62 typedef struct {
63 EFI_HOB_GUID_TYPE Hob;
64 EFI_FLASH_MAP_FS_ENTRY_DATA FvbInfo;
65 } FVB_HOB;
66
67 typedef struct {
68 EFI_HOB_HANDOFF_INFO_TABLE Phit;
69 EFI_HOB_FIRMWARE_VOLUME Bfv;
70 EFI_HOB_RESOURCE_DESCRIPTOR BfvResource;
71 EFI_HOB_CPU Cpu;
72 EFI_HOB_MEMORY_ALLOCATION_STACK Stack;
73 EFI_HOB_MEMORY_ALLOCATION MemoryAllocation;
74 EFI_HOB_RESOURCE_DESCRIPTOR MemoryFreeUnder1MB;
75 EFI_HOB_RESOURCE_DESCRIPTOR MemoryAbove1MB;
76 EFI_HOB_RESOURCE_DESCRIPTOR MemoryAbove4GB;
77 EFI_HOB_MEMORY_ALLOCATION_MODULE DxeCore;
78 EFI_HOB_RESOURCE_DESCRIPTOR MemoryDxeCore;
79 MEMORY_TYPE_INFORMATION_HOB MemoryTypeInfo;
80 TABLE_HOB Acpi;
81 TABLE_HOB Acpi20;
82 TABLE_HOB Smbios;
83 TABLE_HOB Mps;
84 /**
85 PROTOCOL_HOB FlushInstructionCache;
86 PROTOCOL_HOB TransferControl;
87 PROTOCOL_HOB PeCoffLoader;
88 PROTOCOL_HOB EfiDecompress;
89 PROTOCOL_HOB TianoDecompress;
90 **/
91 PROTOCOL_HOB SerialStatusCode;
92 MEMORY_DESC_HOB MemoryDescriptor;
93 PCI_EXPRESS_BASE_HOB PciExpress;
94 ACPI_DESCRIPTION_HOB AcpiInfo;
95
96 EFI_HOB_RESOURCE_DESCRIPTOR NvStorageFvResource;
97
98 FVB_HOB NvStorageFvb;
99 FVB_HOB NvStorage;
100
101 EFI_HOB_RESOURCE_DESCRIPTOR NvFtwFvResource;
102 FVB_HOB NvFtwFvb;
103 FVB_HOB NvFtwWorking;
104 FVB_HOB NvFtwSpare;
105
106 EFI_HOB_GENERIC_HEADER EndOfHobList;
107 } HOB_TEMPLATE;
108
109 #pragma pack()
110
111 extern HOB_TEMPLATE *gHob;
112
113 VOID *
114 PrepareHobStack (
115 IN VOID *StackTop
116 );
117
118 VOID
119 PrepareHobBfv (
120 VOID *Bfv,
121 UINTN BfvLength
122 );
123
124 VOID *
125 PrepareHobMemory (
126 IN UINTN NumberOfMemoryMapEntries,
127 IN EFI_MEMORY_DESCRIPTOR *EfiMemoryDescriptor
128 );
129
130 VOID
131 PrepareHobDxeCore (
132 VOID *DxeCoreEntryPoint,
133 EFI_PHYSICAL_ADDRESS DxeCoreImageBase,
134 UINT64 DxeCoreLength
135 );
136
137 VOID *
138 PreparePageTable (
139 VOID *PageNumberTop,
140 UINT8 SizeOfMemorySpace
141 );
142
143 VOID *
144 PrepareHobMemoryDescriptor (
145 VOID *MemoryDescriptorTop,
146 UINTN MemDescCount,
147 EFI_MEMORY_DESCRIPTOR *MemDesc
148 );
149
150 VOID
151 PrepareHobPhit (
152 VOID *MemoryTop,
153 VOID *FreeMemoryTop
154 );
155
156 VOID *
157 PrepareHobNvStorage (
158 VOID *NvStorageTop
159 );
160
161 VOID
162 PrepareHobCpu (
163 VOID
164 );
165
166 VOID
167 CompleteHobGeneration (
168 VOID
169 );
170
171 #endif