xref: /titanic_53/usr/src/boot/sys/boot/efi/include/efiapi.h (revision eb58a23ea2b909e8250bdee2fe950a58e294747e)
1 /* $FreeBSD$ */
2 #ifndef _EFI_API_H
3 #define _EFI_API_H
4 
5 /*++
6 
7 Copyright (c)  1999 - 2002 Intel Corporation. All rights reserved
8 This software and associated documentation (if any) is furnished
9 under a license and may only be used or copied in accordance
10 with the terms of the license. Except as permitted by such
11 license, no part of this software or documentation may be
12 reproduced, stored in a retrieval system, or transmitted in any
13 form or by any means without the express written consent of
14 Intel Corporation.
15 
16 Module Name:
17 
18     efiapi.h
19 
20 Abstract:
21 
22     Global EFI runtime & boot service interfaces
23 
24 
25 
26 
27 Revision History
28 
29 --*/
30 
31 //
32 // EFI Specification Revision
33 //
34 
35 #define EFI_SPECIFICATION_MAJOR_REVISION 1
36 #define EFI_SPECIFICATION_MINOR_REVISION 10
37 
38 //
39 // Declare forward referenced data structures
40 //
41 
42 INTERFACE_DECL(_EFI_SYSTEM_TABLE);
43 
44 //
45 // EFI Memory
46 //
47 
48 typedef
49 EFI_STATUS
50 (EFIAPI *EFI_ALLOCATE_PAGES) (
51     IN EFI_ALLOCATE_TYPE            Type,
52     IN EFI_MEMORY_TYPE              MemoryType,
53     IN UINTN                        NoPages,
54     OUT EFI_PHYSICAL_ADDRESS        *Memory
55     );
56 
57 typedef
58 EFI_STATUS
59 (EFIAPI *EFI_FREE_PAGES) (
60     IN EFI_PHYSICAL_ADDRESS         Memory,
61     IN UINTN                        NoPages
62     );
63 
64 typedef
65 EFI_STATUS
66 (EFIAPI *EFI_GET_MEMORY_MAP) (
67     IN OUT UINTN                    *MemoryMapSize,
68     IN OUT EFI_MEMORY_DESCRIPTOR    *MemoryMap,
69     OUT UINTN                       *MapKey,
70     OUT UINTN                       *DescriptorSize,
71     OUT UINT32                      *DescriptorVersion
72     );
73 
74 #define NextMemoryDescriptor(Ptr,Size)  ((EFI_MEMORY_DESCRIPTOR *) (((UINT8 *) Ptr) + Size))
75 
76 
77 typedef
78 EFI_STATUS
79 (EFIAPI *EFI_ALLOCATE_POOL) (
80     IN EFI_MEMORY_TYPE              PoolType,
81     IN UINTN                        Size,
82     OUT VOID                        **Buffer
83     );
84 
85 typedef
86 EFI_STATUS
87 (EFIAPI *EFI_FREE_POOL) (
88     IN VOID                         *Buffer
89     );
90 
91 typedef
92 EFI_STATUS
93 (EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP) (
94     IN UINTN                        MemoryMapSize,
95     IN UINTN                        DescriptorSize,
96     IN UINT32                       DescriptorVersion,
97     IN EFI_MEMORY_DESCRIPTOR        *VirtualMap
98     );
99 
100 
101 #define EFI_OPTIONAL_PTR            0x00000001
102 #define EFI_INTERNAL_FNC            0x00000002      // Pointer to internal runtime fnc
103 #define EFI_INTERNAL_PTR            0x00000004      // Pointer to internal runtime data
104 
105 
106 typedef
107 EFI_STATUS
108 (EFIAPI *EFI_CONVERT_POINTER) (
109     IN UINTN                        DebugDisposition,
110     IN OUT VOID                     **Address
111     );
112 
113 
114 //
115 // EFI Events
116 //
117 
118 
119 
120 #define EVT_TIMER                           0x80000000
121 #define EVT_RUNTIME                         0x40000000
122 #define EVT_RUNTIME_CONTEXT                 0x20000000
123 
124 #define EVT_NOTIFY_WAIT                     0x00000100
125 #define EVT_NOTIFY_SIGNAL                   0x00000200
126 
127 #define EVT_SIGNAL_EXIT_BOOT_SERVICES       0x00000201
128 #define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE   0x60000202
129 
130 #define EVT_EFI_SIGNAL_MASK                 0x000000FF
131 #define EVT_EFI_SIGNAL_MAX                  2
132 
133 typedef
134 VOID
135 (EFIAPI *EFI_EVENT_NOTIFY) (
136     IN EFI_EVENT                Event,
137     IN VOID                     *Context
138     );
139 
140 typedef
141 EFI_STATUS
142 (EFIAPI *EFI_CREATE_EVENT) (
143     IN UINT32                       Type,
144     IN EFI_TPL                      NotifyTpl,
145     IN EFI_EVENT_NOTIFY             NotifyFunction,
146     IN VOID                         *NotifyContext,
147     OUT EFI_EVENT                   *Event
148     );
149 
150 typedef enum {
151     TimerCancel,
152     TimerPeriodic,
153     TimerRelative,
154     TimerTypeMax
155 } EFI_TIMER_DELAY;
156 
157 typedef
158 EFI_STATUS
159 (EFIAPI *EFI_SET_TIMER) (
160     IN EFI_EVENT                Event,
161     IN EFI_TIMER_DELAY          Type,
162     IN UINT64                   TriggerTime
163     );
164 
165 typedef
166 EFI_STATUS
167 (EFIAPI *EFI_SIGNAL_EVENT) (
168     IN EFI_EVENT                Event
169     );
170 
171 typedef
172 EFI_STATUS
173 (EFIAPI *EFI_WAIT_FOR_EVENT) (
174     IN UINTN                    NumberOfEvents,
175     IN EFI_EVENT                *Event,
176     OUT UINTN                   *Index
177     );
178 
179 typedef
180 EFI_STATUS
181 (EFIAPI *EFI_CLOSE_EVENT) (
182     IN EFI_EVENT                Event
183     );
184 
185 typedef
186 EFI_STATUS
187 (EFIAPI *EFI_CHECK_EVENT) (
188     IN EFI_EVENT                Event
189     );
190 
191 //
192 // Task priority level
193 //
194 
195 #define TPL_APPLICATION    4
196 #define TPL_CALLBACK       8
197 #define TPL_NOTIFY        16
198 #define TPL_HIGH_LEVEL    31
199 
200 typedef
201 EFI_TPL
202 (EFIAPI *EFI_RAISE_TPL) (
203     IN EFI_TPL      NewTpl
204     );
205 
206 typedef
207 VOID
208 (EFIAPI *EFI_RESTORE_TPL) (
209     IN EFI_TPL      OldTpl
210     );
211 
212 
213 //
214 // EFI platform varibles
215 //
216 
217 #define EFI_GLOBAL_VARIABLE \
218     { 0x8BE4DF61, 0x93CA, 0x11d2, {0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C} }
219 
220 // Variable attributes
221 #define EFI_VARIABLE_NON_VOLATILE		0x00000001
222 #define EFI_VARIABLE_BOOTSERVICE_ACCESS		0x00000002
223 #define EFI_VARIABLE_RUNTIME_ACCESS		0x00000004
224 #define EFI_VARIABLE_HARDWARE_ERROR_RECORD	0x00000008
225 #define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS	0x00000010
226 #define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS	0x00000020
227 #define EFI_VARIABLE_APPEND_WRITE		0x00000040
228 
229 // Variable size limitation
230 #define EFI_MAXIMUM_VARIABLE_SIZE           1024
231 
232 typedef
233 EFI_STATUS
234 (EFIAPI *EFI_GET_VARIABLE) (
235     IN CHAR16                       *VariableName,
236     IN EFI_GUID                     *VendorGuid,
237     OUT UINT32                      *Attributes OPTIONAL,
238     IN OUT UINTN                    *DataSize,
239     OUT VOID                        *Data
240     );
241 
242 typedef
243 EFI_STATUS
244 (EFIAPI *EFI_GET_NEXT_VARIABLE_NAME) (
245     IN OUT UINTN                    *VariableNameSize,
246     IN OUT CHAR16                   *VariableName,
247     IN OUT EFI_GUID                 *VendorGuid
248     );
249 
250 
251 typedef
252 EFI_STATUS
253 (EFIAPI *EFI_SET_VARIABLE) (
254     IN CHAR16                       *VariableName,
255     IN EFI_GUID                     *VendorGuid,
256     IN UINT32                       Attributes,
257     IN UINTN                        DataSize,
258     IN VOID                         *Data
259     );
260 
261 
262 //
263 // EFI Time
264 //
265 
266 typedef struct {
267         UINT32                      Resolution;     // 1e-6 parts per million
268         UINT32                      Accuracy;       // hertz
269         BOOLEAN                     SetsToZero;     // Set clears sub-second time
270 } EFI_TIME_CAPABILITIES;
271 
272 
273 typedef
274 EFI_STATUS
275 (EFIAPI *EFI_GET_TIME) (
276     OUT EFI_TIME                    *Time,
277     OUT EFI_TIME_CAPABILITIES       *Capabilities OPTIONAL
278     );
279 
280 typedef
281 EFI_STATUS
282 (EFIAPI *EFI_SET_TIME) (
283     IN EFI_TIME                     *Time
284     );
285 
286 typedef
287 EFI_STATUS
288 (EFIAPI *EFI_GET_WAKEUP_TIME) (
289     OUT BOOLEAN                     *Enabled,
290     OUT BOOLEAN                     *Pending,
291     OUT EFI_TIME                    *Time
292     );
293 
294 typedef
295 EFI_STATUS
296 (EFIAPI *EFI_SET_WAKEUP_TIME) (
297     IN BOOLEAN                      Enable,
298     IN EFI_TIME                     *Time OPTIONAL
299     );
300 
301 
302 //
303 // Image functions
304 //
305 
306 
307 // PE32+ Subsystem type for EFI images
308 
309 #if !defined(IMAGE_SUBSYSTEM_EFI_APPLICATION)
310 #define IMAGE_SUBSYSTEM_EFI_APPLICATION             10
311 #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER     11
312 #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER          12
313 #endif
314 
315 // PE32+ Machine type for EFI images
316 
317 #if !defined(EFI_IMAGE_MACHINE_IA32)
318 #define EFI_IMAGE_MACHINE_IA32      0x014c
319 #endif
320 
321 #if !defined(EFI_IMAGE_MACHINE_EBC)
322 #define EFI_IMAGE_MACHINE_EBC       0x0EBC
323 #endif
324 
325 // Image Entry prototype
326 
327 typedef
328 EFI_STATUS
329 (EFIAPI *EFI_IMAGE_ENTRY_POINT) (
330     IN EFI_HANDLE                   ImageHandle,
331     IN struct _EFI_SYSTEM_TABLE     *SystemTable
332     );
333 
334 typedef
335 EFI_STATUS
336 (EFIAPI *EFI_IMAGE_LOAD) (
337     IN BOOLEAN                      BootPolicy,
338     IN EFI_HANDLE                   ParentImageHandle,
339     IN EFI_DEVICE_PATH              *FilePath,
340     IN VOID                         *SourceBuffer   OPTIONAL,
341     IN UINTN                        SourceSize,
342     OUT EFI_HANDLE                  *ImageHandle
343     );
344 
345 typedef
346 EFI_STATUS
347 (EFIAPI *EFI_IMAGE_START) (
348     IN EFI_HANDLE                   ImageHandle,
349     OUT UINTN                       *ExitDataSize,
350     OUT CHAR16                      **ExitData  OPTIONAL
351     );
352 
353 typedef
354 EFI_STATUS
355 (EFIAPI *EFI_EXIT) (
356     IN EFI_HANDLE                   ImageHandle,
357     IN EFI_STATUS                   ExitStatus,
358     IN UINTN                        ExitDataSize,
359     IN CHAR16                       *ExitData OPTIONAL
360     );
361 
362 typedef
363 EFI_STATUS
364 (EFIAPI *EFI_IMAGE_UNLOAD) (
365     IN EFI_HANDLE                   ImageHandle
366     );
367 
368 
369 // Image handle
370 #define LOADED_IMAGE_PROTOCOL \
371     { 0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
372 
373 #define EFI_LOADED_IMAGE_INFORMATION_REVISION      0x1000
374 typedef struct {
375     UINT32                          Revision;
376     EFI_HANDLE                      ParentHandle;
377     struct _EFI_SYSTEM_TABLE        *SystemTable;
378 
379     // Source location of image
380     EFI_HANDLE                      DeviceHandle;
381     EFI_DEVICE_PATH                 *FilePath;
382     VOID                            *Reserved;
383 
384     // Images load options
385     UINT32                          LoadOptionsSize;
386     VOID                            *LoadOptions;
387 
388     // Location of where image was loaded
389     VOID                            *ImageBase;
390     UINT64                          ImageSize;
391     EFI_MEMORY_TYPE                 ImageCodeType;
392     EFI_MEMORY_TYPE                 ImageDataType;
393 
394     // If the driver image supports a dynamic unload request
395     EFI_IMAGE_UNLOAD                Unload;
396 
397 } EFI_LOADED_IMAGE;
398 
399 
400 typedef
401 EFI_STATUS
402 (EFIAPI *EFI_EXIT_BOOT_SERVICES) (
403     IN EFI_HANDLE                   ImageHandle,
404     IN UINTN                        MapKey
405     );
406 
407 //
408 // Misc
409 //
410 
411 
412 typedef
413 EFI_STATUS
414 (EFIAPI *EFI_STALL) (
415     IN UINTN                    Microseconds
416     );
417 
418 typedef
419 EFI_STATUS
420 (EFIAPI *EFI_SET_WATCHDOG_TIMER) (
421     IN UINTN                    Timeout,
422     IN UINT64                   WatchdogCode,
423     IN UINTN                    DataSize,
424     IN CHAR16                   *WatchdogData OPTIONAL
425     );
426 
427 
428 typedef enum {
429     EfiResetCold,
430     EfiResetWarm,
431     EfiResetShutdown
432 } EFI_RESET_TYPE;
433 
434 typedef
435 VOID
436 (EFIAPI *EFI_RESET_SYSTEM) (
437     IN EFI_RESET_TYPE           ResetType,
438     IN EFI_STATUS               ResetStatus,
439     IN UINTN                    DataSize,
440     IN CHAR16                   *ResetData OPTIONAL
441     );
442 
443 typedef
444 EFI_STATUS
445 (EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
446     OUT UINT64                  *Count
447     );
448 
449 typedef
450 EFI_STATUS
451 (EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
452     OUT UINT32                  *HighCount
453     );
454 
455 //
456 // Protocol handler functions
457 //
458 
459 typedef enum {
460     EFI_NATIVE_INTERFACE
461 } EFI_INTERFACE_TYPE;
462 
463 typedef
464 EFI_STATUS
465 (EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE) (
466     IN OUT EFI_HANDLE           *Handle,
467     IN EFI_GUID                 *Protocol,
468     IN EFI_INTERFACE_TYPE       InterfaceType,
469     IN VOID                     *Interface
470     );
471 
472 typedef
473 EFI_STATUS
474 (EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE) (
475     IN EFI_HANDLE               Handle,
476     IN EFI_GUID                 *Protocol,
477     IN VOID                     *OldInterface,
478     IN VOID                     *NewInterface
479     );
480 
481 typedef
482 EFI_STATUS
483 (EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
484     IN EFI_HANDLE               Handle,
485     IN EFI_GUID                 *Protocol,
486     IN VOID                     *Interface
487     );
488 
489 typedef
490 EFI_STATUS
491 (EFIAPI *EFI_HANDLE_PROTOCOL) (
492     IN EFI_HANDLE               Handle,
493     IN EFI_GUID                 *Protocol,
494     OUT VOID                    **Interface
495     );
496 
497 typedef
498 EFI_STATUS
499 (EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
500     IN EFI_GUID                 *Protocol,
501     IN EFI_EVENT                Event,
502     OUT VOID                    **Registration
503     );
504 
505 typedef enum {
506     AllHandles,
507     ByRegisterNotify,
508     ByProtocol
509 } EFI_LOCATE_SEARCH_TYPE;
510 
511 typedef
512 EFI_STATUS
513 (EFIAPI *EFI_LOCATE_HANDLE) (
514     IN EFI_LOCATE_SEARCH_TYPE   SearchType,
515     IN EFI_GUID                 *Protocol OPTIONAL,
516     IN VOID                     *SearchKey OPTIONAL,
517     IN OUT UINTN                *BufferSize,
518     OUT EFI_HANDLE              *Buffer
519     );
520 
521 typedef
522 EFI_STATUS
523 (EFIAPI *EFI_LOCATE_DEVICE_PATH) (
524     IN EFI_GUID                 *Protocol,
525     IN OUT EFI_DEVICE_PATH      **DevicePath,
526     OUT EFI_HANDLE              *Device
527     );
528 
529 typedef
530 EFI_STATUS
531 (EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
532     IN EFI_GUID                 *Guid,
533     IN VOID                     *Table
534     );
535 
536 typedef
537 EFI_STATUS
538 (EFIAPI *EFI_RESERVED_SERVICE) (
539     VOID
540     );
541 
542 typedef
543 EFI_STATUS
544 (EFIAPI *EFI_CONNECT_CONTROLLER) (
545   IN  EFI_HANDLE                    ControllerHandle,
546   IN  EFI_HANDLE                    *DriverImageHandle    OPTIONAL,
547   IN  EFI_DEVICE_PATH               *RemainingDevicePath  OPTIONAL,
548   IN  BOOLEAN                       Recursive
549   );
550 
551 typedef
552 EFI_STATUS
553 (EFIAPI *EFI_DISCONNECT_CONTROLLER)(
554   IN EFI_HANDLE           ControllerHandle,
555   IN EFI_HANDLE           DriverImageHandle, OPTIONAL
556   IN EFI_HANDLE           ChildHandle        OPTIONAL
557   );
558 
559 #define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL	 0x00000001
560 #define EFI_OPEN_PROTOCOL_GET_PROTOCOL	       0x00000002
561 #define EFI_OPEN_PROTOCOL_TEST_PROTOCOL        0x00000004
562 #define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER  0x00000008
563 #define EFI_OPEN_PROTOCOL_BY_DRIVER            0x00000010
564 #define EFI_OPEN_PROTOCOL_EXCLUSIVE            0x00000020
565 
566 typedef
567 EFI_STATUS
568 (EFIAPI *EFI_OPEN_PROTOCOL) (
569   IN EFI_HANDLE                 Handle,
570   IN EFI_GUID                   *Protocol,
571   OUT VOID                      **Interface,
572   IN  EFI_HANDLE                ImageHandle,
573   IN  EFI_HANDLE                ControllerHandle, OPTIONAL
574   IN  UINT32                    Attributes
575   );
576 
577 typedef
578 EFI_STATUS
579 (EFIAPI *EFI_CLOSE_PROTOCOL) (
580   IN EFI_HANDLE               Handle,
581   IN EFI_GUID                 *Protocol,
582   IN EFI_HANDLE               ImageHandle,
583   IN EFI_HANDLE               DeviceHandle
584   );
585 
586 typedef struct {
587   EFI_HANDLE                  AgentHandle;
588   EFI_HANDLE                  ControllerHandle;
589   UINT32                      Attributes;
590   UINT32                      OpenCount;
591 } EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
592 
593 typedef
594 EFI_STATUS
595 (EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION) (
596   IN  EFI_HANDLE                          UserHandle,
597   IN  EFI_GUID                            *Protocol,
598   IN  EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
599   OUT UINTN                               *EntryCount
600   );
601 
602 typedef
603 EFI_STATUS
604 (EFIAPI *EFI_PROTOCOLS_PER_HANDLE) (
605   IN EFI_HANDLE       UserHandle,
606   OUT EFI_GUID        ***ProtocolBuffer,
607   OUT UINTN           *ProtocolBufferCount
608   );
609 
610 typedef
611 EFI_STATUS
612 (EFIAPI *EFI_LOCATE_HANDLE_BUFFER) (
613   IN EFI_LOCATE_SEARCH_TYPE       SearchType,
614   IN EFI_GUID                     *Protocol OPTIONAL,
615   IN VOID                         *SearchKey OPTIONAL,
616   IN OUT UINTN                    *NumberHandles,
617   OUT EFI_HANDLE                  **Buffer
618   );
619 
620 typedef
621 EFI_STATUS
622 (EFIAPI *EFI_LOCATE_PROTOCOL) (
623   EFI_GUID  *Protocol,
624   VOID      *Registration, OPTIONAL
625   VOID      **Interface
626   );
627 
628 typedef
629 EFI_STATUS
630 (EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
631   IN OUT EFI_HANDLE           *Handle,
632   ...
633   );
634 
635 typedef
636 EFI_STATUS
637 (EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
638   IN EFI_HANDLE           Handle,
639   ...
640   );
641 
642 typedef
643 EFI_STATUS
644 (EFIAPI *EFI_CALCULATE_CRC32) (
645   IN  VOID                              *Data,
646   IN  UINTN                             DataSize,
647   OUT UINT32                            *Crc32
648   );
649 
650 typedef
651 VOID
652 (EFIAPI *EFI_COPY_MEM) (
653   IN VOID     *Destination,
654   IN VOID     *Source,
655   IN UINTN    Length
656   );
657 
658 typedef
659 VOID
660 (EFIAPI *EFI_SET_MEM) (
661   IN VOID     *Buffer,
662   IN UINTN    Size,
663   IN UINT8    Value
664   );
665 
666 //
667 // Standard EFI table header
668 //
669 
670 typedef struct _EFI_TABLE_HEARDER {
671   UINT64                      Signature;
672   UINT32                      Revision;
673   UINT32                      HeaderSize;
674   UINT32                      CRC32;
675   UINT32                      Reserved;
676 } EFI_TABLE_HEADER;
677 
678 
679 //
680 // EFI Runtime Serivces Table
681 //
682 
683 #define EFI_RUNTIME_SERVICES_SIGNATURE  0x56524553544e5552
684 #define EFI_RUNTIME_SERVICES_REVISION   ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
685 
686 typedef struct  {
687   EFI_TABLE_HEADER                Hdr;
688 
689   //
690   // Time services
691   //
692 
693   EFI_GET_TIME                    GetTime;
694   EFI_SET_TIME                    SetTime;
695   EFI_GET_WAKEUP_TIME             GetWakeupTime;
696   EFI_SET_WAKEUP_TIME             SetWakeupTime;
697 
698   //
699   // Virtual memory services
700   //
701 
702   EFI_SET_VIRTUAL_ADDRESS_MAP     SetVirtualAddressMap;
703   EFI_CONVERT_POINTER             ConvertPointer;
704 
705   //
706   // Variable serviers
707   //
708 
709   EFI_GET_VARIABLE                GetVariable;
710   EFI_GET_NEXT_VARIABLE_NAME      GetNextVariableName;
711   EFI_SET_VARIABLE                SetVariable;
712 
713   //
714   // Misc
715   //
716 
717   EFI_GET_NEXT_HIGH_MONO_COUNT    GetNextHighMonotonicCount;
718   EFI_RESET_SYSTEM                ResetSystem;
719 
720 } EFI_RUNTIME_SERVICES;
721 
722 
723 //
724 // EFI Boot Services Table
725 //
726 
727 #define EFI_BOOT_SERVICES_SIGNATURE     0x56524553544f4f42
728 #define EFI_BOOT_SERVICES_REVISION      ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
729 
730 typedef struct {
731 
732   EFI_TABLE_HEADER                Hdr;
733 
734   //
735   // Task priority functions
736   //
737 
738   EFI_RAISE_TPL                   RaiseTPL;
739   EFI_RESTORE_TPL                 RestoreTPL;
740 
741   //
742   // Memory functions
743   //
744 
745   EFI_ALLOCATE_PAGES              AllocatePages;
746   EFI_FREE_PAGES                  FreePages;
747   EFI_GET_MEMORY_MAP              GetMemoryMap;
748   EFI_ALLOCATE_POOL               AllocatePool;
749   EFI_FREE_POOL                   FreePool;
750 
751   //
752   // Event & timer functions
753   //
754 
755   EFI_CREATE_EVENT                CreateEvent;
756   EFI_SET_TIMER                   SetTimer;
757   EFI_WAIT_FOR_EVENT              WaitForEvent;
758   EFI_SIGNAL_EVENT                SignalEvent;
759   EFI_CLOSE_EVENT                 CloseEvent;
760   EFI_CHECK_EVENT                 CheckEvent;
761 
762   //
763   // Protocol handler functions
764   //
765 
766   EFI_INSTALL_PROTOCOL_INTERFACE  InstallProtocolInterface;
767   EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
768   EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
769   EFI_HANDLE_PROTOCOL             HandleProtocol;
770   VOID                            *Reserved;
771   EFI_REGISTER_PROTOCOL_NOTIFY    RegisterProtocolNotify;
772   EFI_LOCATE_HANDLE               LocateHandle;
773   EFI_LOCATE_DEVICE_PATH          LocateDevicePath;
774   EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
775 
776   //
777   // Image functions
778   //
779 
780   EFI_IMAGE_LOAD                  LoadImage;
781   EFI_IMAGE_START                 StartImage;
782   EFI_EXIT                        Exit;
783   EFI_IMAGE_UNLOAD                UnloadImage;
784   EFI_EXIT_BOOT_SERVICES          ExitBootServices;
785 
786   //
787   // Misc functions
788   //
789 
790   EFI_GET_NEXT_MONOTONIC_COUNT    GetNextMonotonicCount;
791   EFI_STALL                       Stall;
792   EFI_SET_WATCHDOG_TIMER          SetWatchdogTimer;
793 
794   //
795   // DriverSupport Services
796   //
797   EFI_CONNECT_CONTROLLER	        ConnectController;
798   EFI_DISCONNECT_CONTROLLER       DisconnectController;
799 
800   //
801   // Open and Close Protocol Services
802   //
803   EFI_OPEN_PROTOCOL               OpenProtocol;
804   EFI_CLOSE_PROTOCOL              CloseProtocol;
805   EFI_OPEN_PROTOCOL_INFORMATION   OpenProtocolInformation;
806 
807   //
808   // Library Services to reduce size of drivers
809   //
810   EFI_PROTOCOLS_PER_HANDLE        ProtocolsPerHandle;
811   EFI_LOCATE_HANDLE_BUFFER        LocateHandleBuffer;
812   EFI_LOCATE_PROTOCOL             LocateProtocol;
813 
814   EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES    InstallMultipleProtocolInterfaces;
815   EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES  UninstallMultipleProtocolInterfaces;
816 
817   //
818   // CRC32 services
819   //
820   EFI_CALCULATE_CRC32             CalculateCrc32;
821 
822   //
823   // Memory Utility Services
824   //
825   EFI_COPY_MEM                    CopyMem;
826   EFI_SET_MEM                     SetMem;
827 
828 } EFI_BOOT_SERVICES;
829 
830 
831 //
832 // EFI Configuration Table and GUID definitions
833 //
834 
835 #define MPS_TABLE_GUID \
836     { 0xeb9d2d2f, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
837 
838 #define ACPI_TABLE_GUID \
839     { 0xeb9d2d30, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
840 
841 #define ACPI_20_TABLE_GUID \
842     { 0x8868e871, 0xe4f1, 0x11d3, {0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
843 
844 #define SMBIOS_TABLE_GUID \
845     { 0xeb9d2d31, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
846 
847 #define SAL_SYSTEM_TABLE_GUID  \
848     { 0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
849 
850 #define SMBIOS3_TABLE_GUID    \
851     { 0xf2fd1544, 0x9794, 0x4a2c, {0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94 } }
852 
853 #define FDT_TABLE_GUID \
854     { 0xb1b621d5, 0xf19c, 0x41a5, {0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0} }
855 
856 #define DXE_SERVICES_TABLE_GUID \
857     { 0x5ad34ba, 0x6f02, 0x4214, {0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9} }
858 
859 #define HOB_LIST_TABLE_GUID \
860     { 0x7739f24c, 0x93d7, 0x11d4, {0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
861 
862 #define MEMORY_TYPE_INFORMATION_TABLE_GUID \
863     { 0x4c19049f, 0x4137, 0x4dd3, {0x9c, 0x10, 0x8b, 0x97, 0xa8, 0x3f, 0xfd, 0xfa} }
864 
865 #define DEBUG_IMAGE_INFO_TABLE_GUID \
866     { 0x49152e77, 0x1ada, 0x4764, {0xb7, 0xa2, 0x7a, 0xfe, 0xfe, 0xd9, 0x5e, 0x8b} }
867 
868 typedef struct _EFI_CONFIGURATION_TABLE {
869   EFI_GUID                VendorGuid;
870   VOID                    *VendorTable;
871 } EFI_CONFIGURATION_TABLE;
872 
873 
874 //
875 // EFI System Table
876 //
877 
878 
879 #define EFI_SYSTEM_TABLE_SIGNATURE      0x5453595320494249
880 #define EFI_SYSTEM_TABLE_REVISION      ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
881 #define EFI_1_10_SYSTEM_TABLE_REVISION ((1<<16) | 10)
882 #define EFI_1_02_SYSTEM_TABLE_REVISION ((1<<16) | 02)
883 
884 typedef struct _EFI_SYSTEM_TABLE {
885   EFI_TABLE_HEADER                Hdr;
886 
887   CHAR16                          *FirmwareVendor;
888   UINT32                          FirmwareRevision;
889 
890   EFI_HANDLE                      ConsoleInHandle;
891   SIMPLE_INPUT_INTERFACE          *ConIn;
892 
893   EFI_HANDLE                      ConsoleOutHandle;
894   SIMPLE_TEXT_OUTPUT_INTERFACE    *ConOut;
895 
896   EFI_HANDLE                      StandardErrorHandle;
897   SIMPLE_TEXT_OUTPUT_INTERFACE    *StdErr;
898 
899   EFI_RUNTIME_SERVICES            *RuntimeServices;
900   EFI_BOOT_SERVICES               *BootServices;
901 
902   UINTN                           NumberOfTableEntries;
903   EFI_CONFIGURATION_TABLE         *ConfigurationTable;
904 
905 } EFI_SYSTEM_TABLE;
906 
907 /*
908  * unlisted GUID's..
909  */
910 #define EFI_EBC_INTERPRETER_PROTOCOL_GUID \
911 { 0x13AC6DD1, 0x73D0, 0x11D4, {0xB0, 0x6B, 0x00, 0xAA, 0x00, 0xBD, 0x6D, 0xE7} }
912 
913 #define EFI_DRIVER_CONFIGURATION2_PROTOCOL_GUID \
914 { 0xbfd7dc1d, 0x24f1, 0x40d9, {0x82, 0xe7, 0x2e, 0x09, 0xbb, 0x6b, 0x4e, 0xbe} }
915 
916 #define EFI_DRIVER_CONFIGURATION_PROTOCOL_GUID \
917 { 0x107a772b, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
918 
919 #define EFI_DRIVER_BINDING_PROTOCOL_GUID \
920   { 0x18A031AB, 0xB443, 0x4D1A, \
921     { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71 } \
922   }
923 
924 #define EFI_TAPE_IO_PROTOCOL_GUID \
925   { 0x1e93e633, 0xd65a, 0x459e, \
926     { 0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18 } \
927   }
928 
929 #define EFI_SCSI_IO_PROTOCOL_GUID \
930   { 0x932f47e6, 0x2362, 0x4002, \
931     { 0x80, 0x3e, 0x3c, 0xd5, 0x4b, 0x13, 0x8f, 0x85 } \
932   }
933 
934 #define EFI_USB2_HC_PROTOCOL_GUID \
935   { 0x3e745226, 0x9818, 0x45b6, \
936     { 0xa2, 0xac, 0xd7, 0xcd, 0x0e, 0x8b, 0xa2, 0xbc } \
937   }
938 
939 #define EFI_DEBUG_SUPPORT_PROTOCOL_GUID \
940   { 0x2755590C, 0x6F3C, 0x42FA, \
941     { 0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 } \
942   }
943 
944 #define EFI_DEBUGPORT_PROTOCOL_GUID \
945   { 0xEBA4E8D2, 0x3858, 0x41EC, \
946     { 0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0 } \
947   }
948 
949 #define EFI_DECOMPRESS_PROTOCOL_GUID \
950   { 0xd8117cfe, 0x94a6, 0x11d4, \
951     { 0x9a, 0x3a, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
952   }
953 
954 #define EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID \
955   { 0x8b843e20, 0x8132, 0x4852, \
956     { 0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c } \
957   }
958 
959 #define EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID \
960   { 0x379be4e, 0xd706, 0x437d, \
961     { 0xb0, 0x37, 0xed, 0xb8, 0x2f, 0xb7, 0x72, 0xa4 } \
962   }
963 
964 #define EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID \
965   { 0x5c99a21, 0xc70f, 0x4ad2, \
966     { 0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e } \
967   }
968 
969 #define EFI_ACPI_TABLE_PROTOCOL_GUID \
970   { 0xffe06bdd, 0x6107, 0x46a6, \
971     { 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c} \
972   }
973 
974 #define EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID \
975   { 0x587e72d7, 0xcc50, 0x4f79, \
976     { 0x82, 0x09, 0xca, 0x29, 0x1f, 0xc1, 0xa1, 0x0f } \
977   }
978 
979 #define EFI_HII_DATABASE_PROTOCOL_GUID \
980   { 0xef9fc172, 0xa1b2, 0x4693, \
981     { 0xb3, 0x27, 0x6d, 0x32, 0xfc, 0x41, 0x60, 0x42 } \
982   }
983 
984 #define EFI_HII_STRING_PROTOCOL_GUID \
985   { 0xfd96974, 0x23aa, 0x4cdc, \
986     { 0xb9, 0xcb, 0x98, 0xd1, 0x77, 0x50, 0x32, 0x2a } \
987   }
988 
989 #define EFI_HII_IMAGE_PROTOCOL_GUID \
990   { 0x31a6406a, 0x6bdf, 0x4e46, \
991     { 0xb2, 0xa2, 0xeb, 0xaa, 0x89, 0xc4, 0x9, 0x20 } \
992   }
993 
994 #define EFI_HII_FONT_PROTOCOL_GUID \
995   { 0xe9ca4775, 0x8657, 0x47fc, \
996     { 0x97, 0xe7, 0x7e, 0xd6, 0x5a, 0x8, 0x43, 0x24 } \
997   }
998 #define EFI_HII_CONFIGURATION_ACCESS_PROTOCOL_GUID \
999   { 0x330d4706, 0xf2a0, 0x4e4f, \
1000     { 0xa3, 0x69, 0xb6, 0x6f, 0xa8, 0xd5, 0x43, 0x85 } \
1001   }
1002 
1003 #define EFI_COMPONENT_NAME_PROTOCOL_GUID \
1004 { 0x107a772c, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1005 
1006 #define EFI_COMPONENT_NAME2_PROTOCOL_GUID \
1007   { 0x6a7a5cff, 0xe8d9, 0x4f70, \
1008     { 0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14} \
1009   }
1010 
1011 #define EFI_USB_IO_PROTOCOL_GUID \
1012   { 0x2B2F68D6, 0x0CD2, 0x44cf, \
1013     { 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 } \
1014   }
1015 #define EFI_HCDP_TABLE_GUID \
1016   { 0xf951938d, 0x620b, 0x42ef, \
1017       { 0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98 } \
1018   }
1019 
1020 #define EFI_DEVICE_TREE_GUID \
1021   { 0xb1b621d5, 0xf19c, 0x41a5, \
1022       { 0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0 } \
1023   }
1024 
1025 #define EFI_VENDOR_APPLE_GUID \
1026   { 0x2B0585EB, 0xD8B8, 0x49A9, \
1027       { 0x8B, 0x8C, 0xE2, 0x1B, 0x01, 0xAE, 0xF2, 0xB7 } \
1028   }
1029 
1030 #define EFI_CONSOLE_IN_DEVICE_GUID    \
1031 { 0xd3b36f2b, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1032 
1033 #define EFI_CONSOLE_OUT_DEVICE_GUID    \
1034 { 0xd3b36f2c, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1035 
1036 #define EFI_STANDARD_ERROR_DEVICE_GUID	\
1037 { 0xd3b36f2d, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1038 
1039 #define EFI_UNICODE_COLLATION2_PROTOCOL_GUID \
1040 { 0xa4c751fc, 0x23ae, 0x4c3e, {0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49} }
1041 
1042 #define EFI_FORM_BROWSER2_PROTOCOL_GUID \
1043 { 0xb9d4c360, 0xbcfb, 0x4f9b, {0x92, 0x98, 0x53, 0xc1, 0x36, 0x98, 0x22, 0x58} }
1044 
1045 #define EFI_ARP_SERVICE_BINDING_PROTOCOL_GUID \
1046 { 0xf44c00ee, 0x1f2c, 0x4a00, {0xaa, 0x9, 0x1c, 0x9f, 0x3e, 0x8, 0x0, 0xa3} }
1047 
1048 #define EFI_ARP_PROTOCOL_GUID \
1049 { 0xf4b427bb, 0xba21, 0x4f16, {0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c} }
1050 
1051 #define EFI_IP4_CONFIG_PROTOCOL_GUID \
1052 { 0x3b95aa31, 0x3793, 0x434b, {0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e} }
1053 
1054 #define EFI_IP6_CONFIG_PROTOCOL_GUID \
1055 { 0x937fe521, 0x95ae, 0x4d1a, {0x89, 0x29, 0x48, 0xbc, 0xd9, 0x0a, 0xd3, 0x1a} }
1056 
1057 #define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID \
1058 { 0xbc62157e, 0x3e33, 0x4fec, {0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf} }
1059 
1060 #define EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL_GUID \
1061 { 0xf36ff770, 0xa7e1, 0x42cf, {0x9e, 0xd2, 0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c} }
1062 
1063 #define EFI_MANAGED_NETWORK_PROTOCOL_GUID \
1064 { 0x7ab33a91, 0xace5, 0x4326, {0xb5, 0x72, 0xe7, 0xee, 0x33, 0xd3, 0x9f, 0x16} }
1065 
1066 #define EFI_MTFTP4_SERVICE_BINDING_PROTOCOL_GUID \
1067 { 0x2FE800BE, 0x8F01, 0x4aa6, {0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F} }
1068 
1069 #define EFI_MTFTP4_PROTOCOL_GUID \
1070 { 0x78247c57, 0x63db, 0x4708, {0x99, 0xc2, 0xa8, 0xb4, 0xa9, 0xa6, 0x1f, 0x6b} }
1071 
1072 #define EFI_MTFTP6_SERVICE_BINDING_PROTOCOL_GUID \
1073 { 0xd9760ff3, 0x3cca, 0x4267, {0x80, 0xf9, 0x75, 0x27, 0xfa, 0xfa, 0x42, 0x23} }
1074 
1075 #define EFI_MTFTP6_PROTOCOL_GUID \
1076 { 0xbf0a78ba, 0xec29, 0x49cf, {0xa1, 0xc9, 0x7a, 0xe5, 0x4e, 0xab, 0x6a, 0x51} }
1077 
1078 #define EFI_DHCP4_PROTOCOL_GUID \
1079 { 0x8a219718, 0x4ef5, 0x4761, {0x91, 0xc8, 0xc0, 0xf0, 0x4b, 0xda, 0x9e, 0x56} }
1080 
1081 #define EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID \
1082 { 0x9d9a39d8, 0xbd42, 0x4a73, {0xa4, 0xd5, 0x8e, 0xe9, 0x4b, 0xe1, 0x13, 0x80} }
1083 
1084 #define EFI_DHCP6_SERVICE_BINDING_PROTOCOL_GUID \
1085 { 0x9fb9a8a1, 0x2f4a, 0x43a6, {0x88, 0x9c, 0xd0, 0xf7, 0xb6, 0xc4, 0x7a, 0xd5} }
1086 
1087 #define EFI_DHCP6_PROTOCOL_GUID \
1088 { 0x87c8bad7, 0x595, 0x4053, {0x82, 0x97, 0xde, 0xde, 0x39, 0x5f, 0x5d, 0x5b} }
1089 
1090 #define EFI_SCSI_PASS_THRU_PROTOCOL_GUID \
1091 { 0xa59e8fcf, 0xbda0, 0x43bb, {0x90, 0xb1, 0xd3, 0x73, 0x2e, 0xca, 0xa8, 0x77} }
1092 
1093 #define EFI_EXT_SCSI_PASS_THRU_PROTOCOL_GUID \
1094 { 0x143b7632, 0xb81b, 0x4cb7, {0xab, 0xd3, 0xb6, 0x25, 0xa5, 0xb9, 0xbf, 0xfe} }
1095 
1096 #define EFI_DISK_INFO_PROTOCOL_GUID \
1097 { 0xd432a67f, 0x14dc, 0x484b, {0xb3, 0xbb, 0x3f, 0x2, 0x91, 0x84, 0x93, 0x27} }
1098 
1099 #define EFI_ISA_IO_PROTOCOL_GUID \
1100 { 0x7ee2bd44, 0x3da0, 0x11d4, { 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1101 
1102 #define EFI_VLAN_CONFIG_PROTOCOL_GUID \
1103 { 0x9e23d768, 0xd2f3, 0x4366, {0x9f, 0xc3, 0x3a, 0x7a, 0xba, 0x86, 0x43, 0x74} }
1104 
1105 #define EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID \
1106 { 0xa1e37052, 0x80d9, 0x4e65, {0xa3, 0x17, 0x3e, 0x9a, 0x55, 0xc4, 0x3e, 0xc9} }
1107 
1108 #define EFI_ISA_ACPI_PROTOCOL_GUID \
1109 { 0x64a892dc, 0x5561, 0x4536, {0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55} }
1110 
1111 #define EFI_PCI_ENUMERATION_COMPLETE_GUID \
1112 { 0x30cfe3e7, 0x3de1, 0x4586, {0xbe, 0x20, 0xde, 0xab, 0xa1, 0xb3, 0xb7, 0x93} }
1113 
1114 #define EFI_DRIVER_DIAGNOSTICS_PROTOCOL_GUID \
1115 { 0x0784924f, 0xe296, 0x11d4, {0x9a, 0x49, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
1116 
1117 #define EFI_DRIVER_DIAGNOSTICS2_PROTOCOL_GUID \
1118 { 0x4d330321, 0x025f, 0x4aac, {0x90, 0xd8, 0x5e, 0xd9, 0x00, 0x17, 0x3b, 0x63} }
1119 
1120 #define EFI_CAPSULE_ARCH_PROTOCOL_GUID \
1121 { 0x5053697e, 0x2cbc, 0x4819, {0x90, 0xd9, 0x05, 0x80, 0xde, 0xee, 0x57, 0x54} }
1122 
1123 #define EFI_MONOTONIC_COUNTER_ARCH_PROTOCOL_GUID \
1124 {0x1da97072, 0xbddc, 0x4b30, {0x99, 0xf1, 0x72, 0xa0, 0xb5, 0x6f, 0xff, 0x2a} }
1125 
1126 #define EFI_REALTIME_CLOCK_ARCH_PROTOCOL_GUID \
1127 {0x27cfac87, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1128 
1129 #define EFI_MP_SERVICES_PROTOCOL_GUID \
1130 { 0x3fdda605, 0xa76e, 0x4f46, {0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08} }
1131 
1132 #define EFI_VARIABLE_ARCH_PROTOCOL_GUID \
1133 { 0x1e5668e2, 0x8481, 0x11d4, {0xbc, 0xf1, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1134 
1135 #define EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID \
1136 { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1137 
1138 #define EFI_WATCHDOG_TIMER_ARCH_PROTOCOL_GUID \
1139 { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1140 
1141 #define EFI_ACPI_SUPPORT_PROTOCOL_GUID \
1142 { 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1143 
1144 #define EFI_BDS_ARCH_PROTOCOL_GUID \
1145 { 0x665e3ff6, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1146 
1147 #define EFI_METRONOME_ARCH_PROTOCOL_GUID \
1148 { 0x26baccb2, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1149 
1150 #define EFI_TIMER_ARCH_PROTOCOL_GUID \
1151 { 0x26baccb3, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1152 
1153 #define EFI_DPC_PROTOCOL_GUID \
1154 { 0x480f8ae9, 0xc46, 0x4aa9, { 0xbc, 0x89, 0xdb, 0x9f, 0xba, 0x61, 0x98, 0x6} }
1155 
1156 #define EFI_PRINT2_PROTOCOL_GUID  \
1157 { 0xf05976ef, 0x83f1, 0x4f3d, {0x86, 0x19, 0xf7, 0x59, 0x5d, 0x41, 0xe5, 0x38} }
1158 
1159 #define EFI_RESET_ARCH_PROTOCOL_GUID  \
1160 { 0x27cfac88, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1161 
1162 #define EFI_CPU_ARCH_PROTOCOL_GUID \
1163 { 0x26baccb1, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1164 
1165 #define EFI_CPU_IO2_PROTOCOL_GUID \
1166 { 0xad61f191, 0xae5f, 0x4c0e, {0xb9, 0xfa, 0xe8, 0x69, 0xd2, 0x88, 0xc6, 0x4f} }
1167 
1168 #define EFI_LEGACY_8259_PROTOCOL_GUID \
1169 { 0x38321dba, 0x4fe0, 0x4e17, {0x8a, 0xec, 0x41, 0x30, 0x55, 0xea, 0xed, 0xc1} }
1170 
1171 #define EFI_SECURITY_ARCH_PROTOCOL_GUID \
1172 { 0xa46423e3, 0x4617, 0x49f1, {0xb9, 0xff, 0xd1, 0xbf, 0xa9, 0x11, 0x58, 0x39} }
1173 
1174 #define EFI_SECURITY2_ARCH_PROTOCOL_GUID \
1175 { 0x94ab2f58, 0x1438, 0x4ef1, {0x91, 0x52, 0x18, 0x94, 0x1a, 0x3a, 0x0e, 0x68} }
1176 
1177 #define EFI_RUNTIME_ARCH_PROTOCOL_GUID \
1178 { 0xb7dfb4e1, 0x52f, 0x449f, {0x87, 0xbe, 0x98, 0x18, 0xfc, 0x91, 0xb7, 0x33} }
1179 
1180 #define EFI_STATUS_CODE_RUNTIME_PROTOCOL_GUID  \
1181 { 0xd2b2b828, 0x826, 0x48a7, {0xb3, 0xdf, 0x98, 0x3c, 0x0, 0x60, 0x24, 0xf0} }
1182 
1183 #define EFI_DATA_HUB_PROTOCOL_GUID \
1184 { 0xae80d021, 0x618e, 0x11d4, {0xbc, 0xd7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
1185 
1186 #define PCD_PROTOCOL_GUID \
1187 { 0x11b34006, 0xd85b, 0x4d0a, { 0xa2, 0x90, 0xd5, 0xa5, 0x71, 0x31, 0xe, 0xf7} }
1188 
1189 #define EFI_PCD_PROTOCOL_GUID \
1190 { 0x13a3f0f6, 0x264a, 0x3ef0, {0xf2, 0xe0, 0xde, 0xc5, 0x12, 0x34, 0x2f, 0x34} }
1191 
1192 #define EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID \
1193 { 0x8f644fa9, 0xe850, 0x4db1, {0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4 } }
1194 
1195 #define EFI_FIRMWARE_VOLUME2_PROTOCOL_GUID \
1196 { 0x220e73b6, 0x6bdb, 0x4413, { 0x84, 0x5, 0xb9, 0x74, 0xb1, 0x8, 0x61, 0x9a } }
1197 
1198 #define EFI_FIRMWARE_VOLUME_DISPATCH_PROTOCOL_GUID \
1199 { 0x7aa35a69, 0x506c, 0x444f, {0xa7, 0xaf, 0x69, 0x4b, 0xf5, 0x6f, 0x71, 0xc8} }
1200 
1201 #define LZMA_COMPRESS_GUID \
1202 { 0xee4e5898, 0x3914, 0x4259, {0x9d, 0x6e, 0xdc, 0x7b, 0xd7, 0x94, 0x03, 0xcf} }
1203 
1204 #endif
1205