~vojtech-horky/helenos/numa

« back to all changes in this revision

Viewing changes to boot/arch/ia64/loader/gefi/inc/efidef.h

  • Committer: Martin Decky
  • Date: 2009-08-04 11:19:19 UTC
  • Revision ID: martin@uranus.dsrg.hide.ms.mff.cuni.cz-20090804111919-evyclddlr3v5lhmp
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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