1 | #ifndef _EFI_DEF_H
|
---|
2 | #define _EFI_DEF_H
|
---|
3 |
|
---|
4 | /*++
|
---|
5 |
|
---|
6 | Copyright (c) 1998 Intel Corporation
|
---|
7 |
|
---|
8 | Module Name:
|
---|
9 |
|
---|
10 | efidef.h
|
---|
11 |
|
---|
12 | Abstract:
|
---|
13 |
|
---|
14 | EFI definitions
|
---|
15 |
|
---|
16 |
|
---|
17 |
|
---|
18 |
|
---|
19 | Revision History
|
---|
20 |
|
---|
21 | --*/
|
---|
22 |
|
---|
23 | typedef UINT16 CHAR16;
|
---|
24 | typedef UINT8 CHAR8;
|
---|
25 | typedef UINT8 BOOLEAN;
|
---|
26 |
|
---|
27 | #ifndef TRUE
|
---|
28 | #define TRUE ((BOOLEAN) 1)
|
---|
29 | #define FALSE ((BOOLEAN) 0)
|
---|
30 | #endif
|
---|
31 |
|
---|
32 | #ifndef NULL
|
---|
33 | #define NULL ((VOID *) 0)
|
---|
34 | #endif
|
---|
35 |
|
---|
36 | typedef UINTN EFI_STATUS;
|
---|
37 | typedef UINT64 EFI_LBA;
|
---|
38 | typedef UINTN EFI_TPL;
|
---|
39 | typedef VOID *EFI_HANDLE;
|
---|
40 | typedef VOID *EFI_EVENT;
|
---|
41 |
|
---|
42 |
|
---|
43 | //
|
---|
44 | // Prototype argument decoration for EFI parameters to indicate
|
---|
45 | // their direction
|
---|
46 | //
|
---|
47 | // IN - argument is passed into the function
|
---|
48 | // OUT - argument (pointer) is returned from the function
|
---|
49 | // OPTIONAL - argument is optional
|
---|
50 | //
|
---|
51 |
|
---|
52 | #ifndef IN
|
---|
53 | #define IN
|
---|
54 | #define OUT
|
---|
55 | #define OPTIONAL
|
---|
56 | #endif
|
---|
57 |
|
---|
58 |
|
---|
59 | //
|
---|
60 | // A GUID
|
---|
61 | //
|
---|
62 |
|
---|
63 | typedef struct {
|
---|
64 | UINT32 Data1;
|
---|
65 | UINT16 Data2;
|
---|
66 | UINT16 Data3;
|
---|
67 | UINT8 Data4[8];
|
---|
68 | } EFI_GUID;
|
---|
69 |
|
---|
70 |
|
---|
71 | //
|
---|
72 | // Time
|
---|
73 | //
|
---|
74 |
|
---|
75 | typedef struct {
|
---|
76 | UINT16 Year; // 1998 - 20XX
|
---|
77 | UINT8 Month; // 1 - 12
|
---|
78 | UINT8 Day; // 1 - 31
|
---|
79 | UINT8 Hour; // 0 - 23
|
---|
80 | UINT8 Minute; // 0 - 59
|
---|
81 | UINT8 Second; // 0 - 59
|
---|
82 | UINT8 Pad1;
|
---|
83 | UINT32 Nanosecond; // 0 - 999,999,999
|
---|
84 | INT16 TimeZone; // -1440 to 1440 or 2047
|
---|
85 | UINT8 Daylight;
|
---|
86 | UINT8 Pad2;
|
---|
87 | } EFI_TIME;
|
---|
88 |
|
---|
89 | // Bit definitions for EFI_TIME.Daylight
|
---|
90 | #define EFI_TIME_ADJUST_DAYLIGHT 0x01
|
---|
91 | #define EFI_TIME_IN_DAYLIGHT 0x02
|
---|
92 |
|
---|
93 | // Value definition for EFI_TIME.TimeZone
|
---|
94 | #define EFI_UNSPECIFIED_TIMEZONE 0x07FF
|
---|
95 |
|
---|
96 |
|
---|
97 |
|
---|
98 | //
|
---|
99 | // Networking
|
---|
100 | //
|
---|
101 |
|
---|
102 | typedef struct {
|
---|
103 | UINT8 Addr[4];
|
---|
104 | } EFI_IPv4_ADDRESS;
|
---|
105 |
|
---|
106 | typedef struct {
|
---|
107 | UINT8 Addr[16];
|
---|
108 | } EFI_IPv6_ADDRESS;
|
---|
109 |
|
---|
110 | typedef struct {
|
---|
111 | UINT8 Addr[32];
|
---|
112 | } EFI_MAC_ADDRESS;
|
---|
113 |
|
---|
114 | //
|
---|
115 | // Memory
|
---|
116 | //
|
---|
117 |
|
---|
118 | typedef UINT64 EFI_PHYSICAL_ADDRESS;
|
---|
119 | typedef UINT64 EFI_VIRTUAL_ADDRESS;
|
---|
120 |
|
---|
121 | typedef enum {
|
---|
122 | AllocateAnyPages,
|
---|
123 | AllocateMaxAddress,
|
---|
124 | AllocateAddress,
|
---|
125 | MaxAllocateType
|
---|
126 | } EFI_ALLOCATE_TYPE;
|
---|
127 |
|
---|
128 | //Preseve the attr on any range supplied.
|
---|
129 | //ConventialMemory must have WB,SR,SW when supplied.
|
---|
130 | //When allocating from ConventialMemory always make it WB,SR,SW
|
---|
131 | //When returning to ConventialMemory always make it WB,SR,SW
|
---|
132 | //When getting the memory map, or on RT for runtime types
|
---|
133 |
|
---|
134 |
|
---|
135 | typedef enum {
|
---|
136 | EfiReservedMemoryType,
|
---|
137 | EfiLoaderCode,
|
---|
138 | EfiLoaderData,
|
---|
139 | EfiBootServicesCode,
|
---|
140 | EfiBootServicesData,
|
---|
141 | EfiRuntimeServicesCode,
|
---|
142 | EfiRuntimeServicesData,
|
---|
143 | EfiConventionalMemory,
|
---|
144 | EfiUnusableMemory,
|
---|
145 | EfiACPIReclaimMemory,
|
---|
146 | EfiACPIMemoryNVS,
|
---|
147 | EfiMemoryMappedIO,
|
---|
148 | EfiMemoryMappedIOPortSpace,
|
---|
149 | EfiPalCode,
|
---|
150 | EfiMaxMemoryType
|
---|
151 | } EFI_MEMORY_TYPE;
|
---|
152 |
|
---|
153 | // possible caching types for the memory range
|
---|
154 | #define EFI_MEMORY_UC 0x0000000000000001
|
---|
155 | #define EFI_MEMORY_WC 0x0000000000000002
|
---|
156 | #define EFI_MEMORY_WT 0x0000000000000004
|
---|
157 | #define EFI_MEMORY_WB 0x0000000000000008
|
---|
158 | #define EFI_MEMORY_UCE 0x0000000000000010
|
---|
159 |
|
---|
160 | // physical memory protection on range
|
---|
161 | #define EFI_MEMORY_WP 0x0000000000001000
|
---|
162 | #define EFI_MEMORY_RP 0x0000000000002000
|
---|
163 | #define EFI_MEMORY_XP 0x0000000000004000
|
---|
164 |
|
---|
165 | // range requires a runtime mapping
|
---|
166 | #define EFI_MEMORY_RUNTIME 0x8000000000000000
|
---|
167 |
|
---|
168 | #define EFI_MEMORY_DESCRIPTOR_VERSION 1
|
---|
169 | typedef struct {
|
---|
170 | UINT32 Type; // Field size is 32 bits followed by 32 bit pad
|
---|
171 | EFI_PHYSICAL_ADDRESS PhysicalStart; // Field size is 64 bits
|
---|
172 | EFI_VIRTUAL_ADDRESS VirtualStart; // Field size is 64 bits
|
---|
173 | UINT64 NumberOfPages; // Field size is 64 bits
|
---|
174 | UINT64 Attribute; // Field size is 64 bits
|
---|
175 | } EFI_MEMORY_DESCRIPTOR;
|
---|
176 |
|
---|
177 | //
|
---|
178 | // International Language
|
---|
179 | //
|
---|
180 |
|
---|
181 | typedef UINT8 ISO_639_2;
|
---|
182 | #define ISO_639_2_ENTRY_SIZE 3
|
---|
183 |
|
---|
184 | //
|
---|
185 | //
|
---|
186 | //
|
---|
187 |
|
---|
188 | #define EFI_PAGE_SIZE 4096
|
---|
189 | #define EFI_PAGE_MASK 0xFFF
|
---|
190 | #define EFI_PAGE_SHIFT 12
|
---|
191 |
|
---|
192 | #define EFI_SIZE_TO_PAGES(a) \
|
---|
193 | ( ((a) >> EFI_PAGE_SHIFT) + ((a) & EFI_PAGE_MASK ? 1 : 0) )
|
---|
194 |
|
---|
195 | #endif
|
---|