2008-03-19 06:11:21 +01:00
|
|
|
/** @file
|
2007-12-21 09:48:38 +01:00
|
|
|
|
|
|
|
Copyright (c) 2006 - 2007, Intel Corporation
|
|
|
|
All rights reserved. This program and the accompanying materials
|
|
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
|
|
which accompanies this distribution. The full text of the license may be found at
|
|
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
|
|
|
|
Module Name:
|
|
|
|
HobGeneration.h
|
|
|
|
|
|
|
|
Abstract:
|
|
|
|
|
|
|
|
Revision History:
|
|
|
|
|
2008-03-19 06:11:21 +01:00
|
|
|
**/
|
2007-12-21 09:48:38 +01:00
|
|
|
|
|
|
|
#ifndef _DXELDR_HOB_GENERATION_H_
|
|
|
|
#define _DXELDR_HOB_GENERATION_H_
|
|
|
|
|
|
|
|
#include "DxeIpl.h"
|
|
|
|
|
|
|
|
#define EFI_MEMORY_BELOW_1MB_START 0x86000
|
|
|
|
#define EFI_MEMORY_BELOW_1MB_END 0x9F800
|
|
|
|
#define EFI_MEMORY_STACK_PAGE_NUM 0x20
|
|
|
|
#define CONSUMED_MEMORY 0x2000000
|
|
|
|
|
|
|
|
#define NV_STORAGE_START 0x15000
|
|
|
|
#define NV_STORAGE_STATE 0x19000
|
|
|
|
|
|
|
|
#define EFI_LDR_MEMORY_DESCRIPTOR_GUID \
|
2009-02-03 01:48:56 +01:00
|
|
|
{ 0x7701d7e5, 0x7d1d, 0x4432, {0xa4, 0x68, 0x67, 0x3d, 0xab, 0x8a, 0xde, 0x60}}
|
2007-12-21 09:48:38 +01:00
|
|
|
|
|
|
|
#pragma pack(1)
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
EFI_HOB_GUID_TYPE Hob;
|
|
|
|
EFI_MEMORY_TYPE_INFORMATION Info[10];
|
|
|
|
} MEMORY_TYPE_INFORMATION_HOB;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
EFI_HOB_GUID_TYPE Hob;
|
|
|
|
EFI_PHYSICAL_ADDRESS Table;
|
|
|
|
} TABLE_HOB;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
EFI_HOB_GUID_TYPE Hob;
|
|
|
|
VOID *Interface;
|
|
|
|
} PROTOCOL_HOB;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
EFI_HOB_GUID_TYPE Hob;
|
|
|
|
UINTN MemDescCount;
|
|
|
|
EFI_MEMORY_DESCRIPTOR *MemDesc;
|
|
|
|
} MEMORY_DESC_HOB;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
EFI_HOB_GUID_TYPE Hob;
|
|
|
|
// Note: we get only one PCI Segment now.
|
|
|
|
EFI_PCI_EXPRESS_BASE_ADDRESS_INFORMATION PciExpressBaseAddressInfo;
|
|
|
|
} PCI_EXPRESS_BASE_HOB;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
EFI_HOB_GUID_TYPE Hob;
|
|
|
|
EFI_ACPI_DESCRIPTION AcpiDescription;
|
|
|
|
} ACPI_DESCRIPTION_HOB;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
EFI_HOB_GUID_TYPE Hob;
|
|
|
|
EFI_FLASH_MAP_FS_ENTRY_DATA FvbInfo;
|
|
|
|
} FVB_HOB;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
EFI_HOB_HANDOFF_INFO_TABLE Phit;
|
|
|
|
EFI_HOB_FIRMWARE_VOLUME Bfv;
|
|
|
|
EFI_HOB_RESOURCE_DESCRIPTOR BfvResource;
|
|
|
|
EFI_HOB_CPU Cpu;
|
|
|
|
EFI_HOB_MEMORY_ALLOCATION_STACK Stack;
|
|
|
|
EFI_HOB_MEMORY_ALLOCATION MemoryAllocation;
|
|
|
|
EFI_HOB_RESOURCE_DESCRIPTOR MemoryFreeUnder1MB;
|
|
|
|
EFI_HOB_RESOURCE_DESCRIPTOR MemoryAbove1MB;
|
|
|
|
EFI_HOB_RESOURCE_DESCRIPTOR MemoryAbove4GB;
|
|
|
|
EFI_HOB_MEMORY_ALLOCATION_MODULE DxeCore;
|
|
|
|
MEMORY_TYPE_INFORMATION_HOB MemoryTypeInfo;
|
|
|
|
TABLE_HOB Acpi;
|
|
|
|
TABLE_HOB Acpi20;
|
|
|
|
TABLE_HOB Smbios;
|
|
|
|
TABLE_HOB Mps;
|
|
|
|
/**
|
|
|
|
PROTOCOL_HOB FlushInstructionCache;
|
|
|
|
PROTOCOL_HOB TransferControl;
|
|
|
|
PROTOCOL_HOB PeCoffLoader;
|
|
|
|
PROTOCOL_HOB EfiDecompress;
|
|
|
|
PROTOCOL_HOB TianoDecompress;
|
|
|
|
**/
|
|
|
|
PROTOCOL_HOB SerialStatusCode;
|
|
|
|
MEMORY_DESC_HOB MemoryDescriptor;
|
|
|
|
PCI_EXPRESS_BASE_HOB PciExpress;
|
|
|
|
ACPI_DESCRIPTION_HOB AcpiInfo;
|
|
|
|
|
|
|
|
EFI_HOB_RESOURCE_DESCRIPTOR NvStorageFvResource;
|
|
|
|
|
|
|
|
FVB_HOB NvStorageFvb;
|
|
|
|
FVB_HOB NvStorage;
|
|
|
|
|
|
|
|
FVB_HOB NvFtwFvb;
|
|
|
|
FVB_HOB NvFtwWorking;
|
|
|
|
FVB_HOB NvFtwSpare;
|
|
|
|
|
|
|
|
EFI_HOB_GENERIC_HEADER EndOfHobList;
|
|
|
|
} HOB_TEMPLATE;
|
|
|
|
|
|
|
|
#pragma pack()
|
|
|
|
|
|
|
|
extern HOB_TEMPLATE *gHob;
|
|
|
|
|
|
|
|
VOID *
|
|
|
|
PrepareHobStack (
|
|
|
|
IN VOID *StackTop
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
PrepareHobBfv (
|
|
|
|
VOID *Bfv,
|
|
|
|
UINTN BfvLength
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID *
|
|
|
|
PrepareHobMemory (
|
|
|
|
IN UINTN NumberOfMemoryMapEntries,
|
|
|
|
IN EFI_MEMORY_DESCRIPTOR *EfiMemoryDescriptor
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
PrepareHobDxeCore (
|
|
|
|
VOID *DxeCoreEntryPoint,
|
|
|
|
EFI_PHYSICAL_ADDRESS DxeCoreImageBase,
|
|
|
|
UINT64 DxeCoreLength
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID *
|
|
|
|
PreparePageTable (
|
|
|
|
VOID *PageNumberTop,
|
|
|
|
UINT8 SizeOfMemorySpace
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID *
|
|
|
|
PrepareHobMemoryDescriptor (
|
|
|
|
VOID *MemoryDescriptorTop,
|
|
|
|
UINTN MemDescCount,
|
|
|
|
EFI_MEMORY_DESCRIPTOR *MemDesc
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
PrepareHobPhit (
|
|
|
|
VOID *MemoryTop,
|
|
|
|
VOID *FreeMemoryTop
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID *
|
|
|
|
PrepareHobNvStorage (
|
|
|
|
VOID *NvStorageTop
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
PrepareHobCpu (
|
|
|
|
VOID
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
CompleteHobGeneration (
|
|
|
|
VOID
|
|
|
|
);
|
|
|
|
|
|
|
|
#endif
|