source: mainline/boot/arch/ia64/loader/gefi/inc/efidef.h@ 86018c1

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 86018c1 was 7208b6c, checked in by Jakub Vana <jakub.vana@…>, 17 years ago

Basic IA64 boot and kernel suport for real machines

  • Property mode set to 100644
File size: 4.1 KB
Line 
1#ifndef _EFI_DEF_H
2#define _EFI_DEF_H
3
4/*++
5
6Copyright (c) 1998 Intel Corporation
7
8Module Name:
9
10 efidef.h
11
12Abstract:
13
14 EFI definitions
15
16
17
18
19Revision History
20
21--*/
22
23typedef UINT16 CHAR16;
24typedef UINT8 CHAR8;
25typedef 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
36typedef UINTN EFI_STATUS;
37typedef UINT64 EFI_LBA;
38typedef UINTN EFI_TPL;
39typedef VOID *EFI_HANDLE;
40typedef 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
63typedef struct {
64 UINT32 Data1;
65 UINT16 Data2;
66 UINT16 Data3;
67 UINT8 Data4[8];
68} EFI_GUID;
69
70
71//
72// Time
73//
74
75typedef 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
102typedef struct {
103 UINT8 Addr[4];
104} EFI_IPv4_ADDRESS;
105
106typedef struct {
107 UINT8 Addr[16];
108} EFI_IPv6_ADDRESS;
109
110typedef struct {
111 UINT8 Addr[32];
112} EFI_MAC_ADDRESS;
113
114//
115// Memory
116//
117
118typedef UINT64 EFI_PHYSICAL_ADDRESS;
119typedef UINT64 EFI_VIRTUAL_ADDRESS;
120
121typedef 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
135typedef 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
169typedef 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
181typedef 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
Note: See TracBrowser for help on using the repository browser.