- most of the churn here is from code and headers imported from trunk.
[reactos.git] / reactos / include / reactos / arc / arc.h
1 #ifndef _ARC_
2 #define _ARC_
3
4 typedef enum _IDENTIFIER_FLAG
5 {
6 Failed = 0x01,
7 ReadOnly = 0x02,
8 Removable = 0x04,
9 ConsoleIn = 0x08,
10 ConsoleOut = 0x10,
11 Input = 0x20,
12 Output = 0x40
13 } IDENTIFIER_FLAG;
14
15 typedef enum _CONFIGURATION_CLASS
16 {
17 SystemClass,
18 ProcessorClass,
19 CacheClass,
20 AdapterClass,
21 ControllerClass,
22 PeripheralClass,
23 MemoryClass,
24 MaximumClass
25 } CONFIGURATION_CLASS;
26
27 typedef enum _TYPE_OF_MEMORY
28 {
29 LoaderExceptionBlock,
30 LoaderSystemBlock,
31 LoaderFree,
32 LoaderBad,
33 LoaderLoadedProgram,
34 LoaderFirmwareTemporary,
35 LoaderFirmwarePermanent,
36 LoaderOsloaderHeap,
37 LoaderOsloaderStack,
38 LoaderSystemCode,
39 LoaderHalCode,
40 LoaderBootDriver,
41 LoaderConsoleInDriver,
42 LoaderConsoleOutDriver,
43 LoaderStartupDpcStack,
44 LoaderStartupKernelStack,
45 LoaderStartupPanicStack,
46 LoaderStartupPcrPage,
47 LoaderStartupPdrPage,
48 LoaderRegistryData,
49 LoaderMemoryData,
50 LoaderNlsData,
51 LoaderSpecialMemory,
52 LoaderBBTMemory,
53 LoaderReserve,
54 LoaderXIPRom,
55 LoaderHALCachedMemory,
56 LoaderLargePageFiller,
57 LoaderMaximum
58 } TYPE_OF_MEMORY;
59
60 typedef struct _MEMORY_ALLOCATION_DESCRIPTOR
61 {
62 LIST_ENTRY ListEntry;
63 TYPE_OF_MEMORY MemoryType;
64 ULONG BasePage;
65 ULONG PageCount;
66 } MEMORY_ALLOCATION_DESCRIPTOR, *PMEMORY_ALLOCATION_DESCRIPTOR;
67
68 typedef struct _BOOT_DRIVER_LIST_ENTRY
69 {
70 LIST_ENTRY ListEntry;
71 UNICODE_STRING FilePath;
72 UNICODE_STRING RegistryPath;
73 struct _LDR_DATA_TABLE_ENTRY *DataTableEntry;
74 } BOOT_DRIVER_LIST_ENTRY, *PBOOT_DRIVER_LIST_ENTRY;
75
76 typedef struct _ARC_DISK_SIGNATURE
77 {
78 LIST_ENTRY ListEntry;
79 ULONG Signature;
80 PCHAR ArcName;
81 ULONG CheckSum;
82 BOOLEAN ValidPartitionTable;
83 BOOLEAN xInt13;
84 BOOLEAN IsGpt;
85 BOOLEAN Reserved;
86 CHAR GptSignature[16];
87 } ARC_DISK_SIGNATURE, *PARC_DISK_SIGNATURE;
88
89 typedef struct _CONFIGURATION_COMPONENT
90 {
91 CONFIGURATION_CLASS Class;
92 CONFIGURATION_TYPE Type;
93 IDENTIFIER_FLAG Flags;
94 USHORT Version;
95 USHORT Revision;
96 ULONG Key;
97 ULONG AffinityMask;
98 ULONG ConfigurationDataLength;
99 ULONG IdentifierLength;
100 LPSTR Identifier;
101 } CONFIGURATION_COMPONENT, *PCONFIGURATION_COMPONENT;
102
103 typedef struct _CONFIGURATION_COMPONENT_DATA
104 {
105 struct _CONFIGURATION_COMPONENT_DATA *Parent;
106 struct _CONFIGURATION_COMPONENT_DATA *Child;
107 struct _CONFIGURATION_COMPONENT_DATA *Sibling;
108 CONFIGURATION_COMPONENT ComponentEntry;
109 PVOID ConfigurationData;
110 } CONFIGURATION_COMPONENT_DATA, *PCONFIGURATION_COMPONENT_DATA;
111
112 typedef struct _ARC_DISK_INFORMATION
113 {
114 LIST_ENTRY DiskSignatureListHead;
115 } ARC_DISK_INFORMATION, *PARC_DISK_INFORMATION;
116
117 typedef struct _MONITOR_CONFIGURATION_DATA
118 {
119 USHORT Version;
120 USHORT Revision;
121 USHORT HorizontalResolution;
122 USHORT HorizontalDisplayTime;
123 USHORT HorizontalBackPorch;
124 USHORT HorizontalFrontPorch;
125 USHORT HorizontalSync;
126 USHORT VerticalResolution;
127 USHORT VerticalBackPorch;
128 USHORT VerticalFrontPorch;
129 USHORT VerticalSync;
130 USHORT HorizontalScreenSize;
131 USHORT VerticalScreenSize;
132 } MONITOR_CONFIGURATION_DATA, *PMONITOR_CONFIGURATION_DATA;
133
134 typedef struct _FLOPPY_CONFIGURATION_DATA
135 {
136 USHORT Version;
137 USHORT Revision;
138 CHAR Size[8];
139 ULONG MaxDensity;
140 ULONG MountDensity;
141 } FLOPPY_CONFIGURATION_DATA, *PFLOPPY_CONFIGURATION_DATA;
142
143 //
144 // SMBIOS Table Header (FIXME: maybe move to smbios.h?)
145 //
146 typedef struct _SMBIOS_TABLE_HEADER
147 {
148 CHAR Signature[4];
149 UCHAR Checksum;
150 UCHAR Length;
151 UCHAR MajorVersion;
152 UCHAR MinorVersion;
153 USHORT MaximumStructureSize;
154 UCHAR EntryPointRevision;
155 UCHAR Reserved[5];
156 CHAR Signature2[5];
157 UCHAR IntermediateChecksum;
158 USHORT StructureTableLength;
159 ULONG StructureTableAddress;
160 USHORT NumberStructures;
161 UCHAR Revision;
162 } SMBIOS_TABLE_HEADER, *PSMBIOS_TABLE_HEADER;
163
164 //
165 // NLS Data Block
166 //
167 typedef struct _NLS_DATA_BLOCK
168 {
169 PVOID AnsiCodePageData;
170 PVOID OemCodePageData;
171 PVOID UnicodeCodePageData;
172 } NLS_DATA_BLOCK, *PNLS_DATA_BLOCK;
173
174 //
175 // ACPI Docking State
176 //
177 typedef struct _PROFILE_ACPI_DOCKING_STATE
178 {
179 USHORT DockingState;
180 USHORT SerialLength;
181 WCHAR SerialNumber[1];
182 } PROFILE_ACPI_DOCKING_STATE, *PPROFILE_ACPI_DOCKING_STATE;
183
184 //
185 // Subsystem Specific Loader Blocks
186 //
187 typedef struct _PROFILE_PARAMETER_BLOCK
188 {
189 USHORT Status;
190 USHORT Reserved;
191 USHORT DockingState;
192 USHORT Capabilities;
193 ULONG DockID;
194 ULONG SerialNumber;
195 } PROFILE_PARAMETER_BLOCK, *PPROFILE_PARAMETER_BLOCK;
196
197 typedef struct _HEADLESS_LOADER_BLOCK
198 {
199 UCHAR UsedBiosSettings;
200 UCHAR DataBits;
201 UCHAR StopBits;
202 UCHAR Parity;
203 ULONG BaudRate;
204 ULONG PortNumber;
205 PUCHAR PortAddress;
206 USHORT PciDeviceId;
207 USHORT PciVendorId;
208 UCHAR PciBusNumber;
209 UCHAR PciSlotNumber;
210 UCHAR PciFunctionNumber;
211 ULONG PciFlags;
212 GUID SystemGUID;
213 UCHAR IsMMIODevice;
214 UCHAR TerminalType;
215 } HEADLESS_LOADER_BLOCK, *PHEADLESS_LOADER_BLOCK;
216
217 typedef struct _NETWORK_LOADER_BLOCK
218 {
219 PCHAR DHCPServerACK;
220 ULONG DHCPServerACKLength;
221 PCHAR BootServerReplyPacket;
222 ULONG BootServerReplyPacketLength;
223 } NETWORK_LOADER_BLOCK, *PNETWORK_LOADER_BLOCK;
224
225 typedef struct _LOADER_PERFORMANCE_DATA
226 {
227 ULONGLONG StartTime;
228 ULONGLONG EndTime;
229 } LOADER_PERFORMANCE_DATA, *PLOADER_PERFORMANCE_DATA;
230
231 //
232 // Extended Loader Parameter Block
233 //
234 typedef struct _LOADER_PARAMETER_EXTENSION
235 {
236 ULONG Size;
237 PROFILE_PARAMETER_BLOCK Profile;
238 ULONG MajorVersion;
239 ULONG MinorVersion;
240 PVOID EmInfFileImage;
241 ULONG EmInfFileSize;
242 PVOID TriageDumpBlock;
243 //
244 // NT 5.1
245 //
246 ULONG LoaderPagesSpanned;
247 PHEADLESS_LOADER_BLOCK HeadlessLoaderBlock;
248 PSMBIOS_TABLE_HEADER SMBiosEPSHeader;
249 PVOID DrvDBImage;
250 ULONG DrvDBSize;
251 PNETWORK_LOADER_BLOCK NetworkLoaderBlock;
252 //
253 // NT 5.2+
254 //
255 PCHAR HalpIRQLToTPR;
256 PCHAR HalpVectorToIRQL;
257 LIST_ENTRY FirmwareDescriptorListHead;
258 PVOID AcpiTable;
259 ULONG AcpiTableSize;
260 //
261 // NT 5.2 SP1+
262 //
263 ULONG BootViaWinload:1;
264 ULONG BootViaEFI:1;
265 ULONG Reserved:30;
266 LOADER_PERFORMANCE_DATA LoaderPerformanceData;
267 LIST_ENTRY BootApplicationPersistentData;
268 PVOID WmdTestResult;
269 GUID BootIdentifier;
270 } LOADER_PARAMETER_EXTENSION, *PLOADER_PARAMETER_EXTENSION;
271
272 //
273 // Architecture specific Loader Parameter Blocks
274 //
275 typedef struct _IA64_LOADER_BLOCK
276 {
277 ULONG PlaceHolder;
278 } IA64_LOADER_BLOCK, *PIA64_LOADER_BLOCK;
279
280 typedef struct _ALPHA_LOADER_BLOCK
281 {
282 ULONG PlaceHolder;
283 } ALPHA_LOADER_BLOCK, *PALPHA_LOADER_BLOCK;
284
285 typedef struct _I386_LOADER_BLOCK
286 {
287 PVOID CommonDataArea;
288 ULONG MachineType;
289 ULONG Reserved;
290 } I386_LOADER_BLOCK, *PI386_LOADER_BLOCK;
291
292 typedef struct _POWERPC_LOADER_BLOCK
293 {
294 PVOID BootInfo;
295 } POWERPC_LOADER_BLOCK, *PPOWERPC_LOADER_BLOCK;
296
297 //
298 // Loader Parameter Block
299 //
300 typedef struct _LOADER_PARAMETER_BLOCK
301 {
302 LIST_ENTRY LoadOrderListHead;
303 LIST_ENTRY MemoryDescriptorListHead;
304 LIST_ENTRY BootDriverListHead;
305 ULONG_PTR KernelStack;
306 ULONG_PTR Prcb;
307 ULONG_PTR Process;
308 ULONG_PTR Thread;
309 ULONG RegistryLength;
310 PVOID RegistryBase;
311 PCONFIGURATION_COMPONENT_DATA ConfigurationRoot;
312 LPSTR ArcBootDeviceName;
313 LPSTR ArcHalDeviceName;
314 LPSTR NtBootPathName;
315 LPSTR NtHalPathName;
316 LPSTR LoadOptions;
317 PNLS_DATA_BLOCK NlsData;
318 PARC_DISK_INFORMATION ArcDiskInformation;
319 PVOID OemFontFile;
320 struct _SETUP_LOADER_BLOCK *SetupLdrBlock;
321 PLOADER_PARAMETER_EXTENSION Extension;
322 union
323 {
324 I386_LOADER_BLOCK I386;
325 ALPHA_LOADER_BLOCK Alpha;
326 IA64_LOADER_BLOCK Ia64;
327 POWERPC_LOADER_BLOCK PowerPC;
328 } u;
329 } LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK;
330
331 #endif