Rev 2726 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2726 | vana | 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 |