Subversion Repositories HelenOS

Rev

Details | 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