]> git.proxmox.com Git - mirror_edk2.git/blob - DuetPkg/EfiLdr/EfiLdr.h
BaseTools/BinToPcd: Fix Python 2.7.x compatibility issue
[mirror_edk2.git] / DuetPkg / EfiLdr / EfiLdr.h
1 /*++
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 EfiLdr.c
14
15 Abstract:
16
17 Revision History:
18
19 --*/
20
21 #ifndef _DUET_EFI_LOADER_H_
22 #define _DUET_EFI_LOADER_H_
23
24 #include "Uefi.h"
25 #include "EfiLdrHandoff.h"
26
27 #include <Protocol/LoadedImage.h>
28 #include <IndustryStandard/PeImage.h>
29 #include <Library/BaseLib.h>
30 #include <Library/BaseMemoryLib.h>
31 #include <Library/PrintLib.h>
32 #include <Library/SerialPortLib.h>
33
34 #define INT15_E820_AddressRangeMemory 1
35 #define INT15_E820_AddressRangeReserved 2
36 #define INT15_E820_AddressRangeACPI 3
37 #define INT15_E820_AddressRangeNVS 4
38
39 #define EFI_FIRMWARE_BASE_ADDRESS 0x00200000
40
41 #define EFI_DECOMPRESSED_BUFFER_ADDRESS 0x00600000
42
43 #define EFI_MAX_MEMORY_DESCRIPTORS 64
44
45 #define LOADED_IMAGE_SIGNATURE SIGNATURE_32('l','d','r','i')
46
47 typedef struct {
48 UINTN Signature;
49 CHAR16 *Name; // Displayable name
50 UINTN Type;
51
52 BOOLEAN Started; // If entrypoint has been called
53 VOID *StartImageContext;
54
55 EFI_IMAGE_ENTRY_POINT EntryPoint; // The image's entry point
56 EFI_LOADED_IMAGE_PROTOCOL Info; // loaded image protocol
57
58 //
59 EFI_PHYSICAL_ADDRESS ImageBasePage; // Location in memory
60 UINTN NoPages; // Number of pages
61 UINT8 *ImageBase; // As a char pointer
62 UINT8 *ImageEof; // End of memory image
63
64 // relocate info
65 UINT8 *ImageAdjust; // Bias for reloc calculations
66 UINTN StackAddress;
67 UINT8 *FixupData; // Original fixup data
68 } EFILDR_LOADED_IMAGE;
69
70 #pragma pack(4)
71 typedef struct {
72 UINT64 BaseAddress;
73 UINT64 Length;
74 UINT32 Type;
75 } BIOS_MEMORY_MAP_ENTRY;
76 #pragma pack()
77
78 typedef struct {
79 UINT32 MemoryMapSize;
80 BIOS_MEMORY_MAP_ENTRY MemoryMapEntry[1];
81 } BIOS_MEMORY_MAP;
82
83 typedef
84 VOID
85 (EFIAPI * EFI_MAIN_ENTRYPOINT) (
86 IN EFILDRHANDOFF *Handoff
87 );
88
89 #endif //_DUET_EFI_LOADER_H_