1/* $FreeBSD: stable/11/stand/efi/include/efiapi.h 346482 2019-04-21 04:26:02Z kevans $ */
2#ifndef _EFI_API_H
3#define _EFI_API_H
4
5/*++
6
7Copyright (c)  1999 - 2002 Intel Corporation. All rights reserved
8This software and associated documentation (if any) is furnished
9under a license and may only be used or copied in accordance
10with the terms of the license. Except as permitted by such
11license, no part of this software or documentation may be
12reproduced, stored in a retrieval system, or transmitted in any
13form or by any means without the express written consent of
14Intel Corporation.
15
16Module Name:
17
18    efiapi.h
19
20Abstract:
21
22    Global EFI runtime & boot service interfaces
23
24
25
26
27Revision 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
42INTERFACE_DECL(_EFI_SYSTEM_TABLE);
43
44//
45// EFI Memory
46//
47
48typedef
49EFI_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
57typedef
58EFI_STATUS
59(EFIAPI *EFI_FREE_PAGES) (
60    IN EFI_PHYSICAL_ADDRESS         Memory,
61    IN UINTN                        NoPages
62    );
63
64typedef
65EFI_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
77typedef
78EFI_STATUS
79(EFIAPI *EFI_ALLOCATE_POOL) (
80    IN EFI_MEMORY_TYPE              PoolType,
81    IN UINTN                        Size,
82    OUT VOID                        **Buffer
83    );
84
85typedef
86EFI_STATUS
87(EFIAPI *EFI_FREE_POOL) (
88    IN VOID                         *Buffer
89    );
90
91typedef
92EFI_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
106typedef
107EFI_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
133typedef
134VOID
135(EFIAPI *EFI_EVENT_NOTIFY) (
136    IN EFI_EVENT                Event,
137    IN VOID                     *Context
138    );
139
140typedef
141EFI_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
150typedef enum {
151    TimerCancel,
152    TimerPeriodic,
153    TimerRelative,
154    TimerTypeMax
155} EFI_TIMER_DELAY;
156
157typedef
158EFI_STATUS
159(EFIAPI *EFI_SET_TIMER) (
160    IN EFI_EVENT                Event,
161    IN EFI_TIMER_DELAY          Type,
162    IN UINT64                   TriggerTime
163    );
164
165typedef
166EFI_STATUS
167(EFIAPI *EFI_SIGNAL_EVENT) (
168    IN EFI_EVENT                Event
169    );
170
171typedef
172EFI_STATUS
173(EFIAPI *EFI_WAIT_FOR_EVENT) (
174    IN UINTN                    NumberOfEvents,
175    IN EFI_EVENT                *Event,
176    OUT UINTN                   *Index
177    );
178
179typedef
180EFI_STATUS
181(EFIAPI *EFI_CLOSE_EVENT) (
182    IN EFI_EVENT                Event
183    );
184
185typedef
186EFI_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
200typedef
201EFI_TPL
202(EFIAPI *EFI_RAISE_TPL) (
203    IN EFI_TPL      NewTpl
204    );
205
206typedef
207VOID
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
232typedef
233EFI_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
242typedef
243EFI_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
251typedef
252EFI_STATUS
253(EFIAPI *EFI_SET_VARIABLE) (
254    IN const 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
266typedef 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
273typedef
274EFI_STATUS
275(EFIAPI *EFI_GET_TIME) (
276    OUT EFI_TIME                    *Time,
277    OUT EFI_TIME_CAPABILITIES       *Capabilities OPTIONAL
278    );
279
280typedef
281EFI_STATUS
282(EFIAPI *EFI_SET_TIME) (
283    IN EFI_TIME                     *Time
284    );
285
286typedef
287EFI_STATUS
288(EFIAPI *EFI_GET_WAKEUP_TIME) (
289    OUT BOOLEAN                     *Enabled,
290    OUT BOOLEAN                     *Pending,
291    OUT EFI_TIME                    *Time
292    );
293
294typedef
295EFI_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
327typedef
328EFI_STATUS
329(EFIAPI *EFI_IMAGE_ENTRY_POINT) (
330    IN EFI_HANDLE                   ImageHandle,
331    IN struct _EFI_SYSTEM_TABLE     *SystemTable
332    );
333
334typedef
335EFI_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
345typedef
346EFI_STATUS
347(EFIAPI *EFI_IMAGE_START) (
348    IN EFI_HANDLE                   ImageHandle,
349    OUT UINTN                       *ExitDataSize,
350    OUT CHAR16                      **ExitData  OPTIONAL
351    );
352
353typedef
354EFI_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    ) __dead2;
361
362typedef
363EFI_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
374typedef 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
400typedef
401EFI_STATUS
402(EFIAPI *EFI_EXIT_BOOT_SERVICES) (
403    IN EFI_HANDLE                   ImageHandle,
404    IN UINTN                        MapKey
405    );
406
407//
408// Misc
409//
410
411
412typedef
413EFI_STATUS
414(EFIAPI *EFI_STALL) (
415    IN UINTN                    Microseconds
416    );
417
418typedef
419EFI_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
428typedef enum {
429    EfiResetCold,
430    EfiResetWarm,
431    EfiResetShutdown
432} EFI_RESET_TYPE;
433
434typedef
435VOID
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
443typedef
444EFI_STATUS
445(EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT) (
446    OUT UINT64                  *Count
447    );
448
449typedef
450EFI_STATUS
451(EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT) (
452    OUT UINT32                  *HighCount
453    );
454
455//
456// Protocol handler functions
457//
458
459typedef enum {
460    EFI_NATIVE_INTERFACE
461} EFI_INTERFACE_TYPE;
462
463typedef
464EFI_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
472typedef
473EFI_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
481typedef
482EFI_STATUS
483(EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE) (
484    IN EFI_HANDLE               Handle,
485    IN EFI_GUID                 *Protocol,
486    IN VOID                     *Interface
487    );
488
489typedef
490EFI_STATUS
491(EFIAPI *EFI_HANDLE_PROTOCOL) (
492    IN EFI_HANDLE               Handle,
493    IN EFI_GUID                 *Protocol,
494    OUT VOID                    **Interface
495    );
496
497typedef
498EFI_STATUS
499(EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY) (
500    IN EFI_GUID                 *Protocol,
501    IN EFI_EVENT                Event,
502    OUT VOID                    **Registration
503    );
504
505typedef enum {
506    AllHandles,
507    ByRegisterNotify,
508    ByProtocol
509} EFI_LOCATE_SEARCH_TYPE;
510
511typedef
512EFI_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
521typedef
522EFI_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
529typedef
530EFI_STATUS
531(EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE) (
532    IN EFI_GUID                 *Guid,
533    IN VOID                     *Table
534    );
535
536typedef
537EFI_STATUS
538(EFIAPI *EFI_RESERVED_SERVICE) (
539    VOID
540    );
541
542typedef
543EFI_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
551typedef
552EFI_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
566typedef
567EFI_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
577typedef
578EFI_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
586typedef struct {
587  EFI_HANDLE                  AgentHandle;
588  EFI_HANDLE                  ControllerHandle;
589  UINT32                      Attributes;
590  UINT32                      OpenCount;
591} EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
592
593typedef
594EFI_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
602typedef
603EFI_STATUS
604(EFIAPI *EFI_PROTOCOLS_PER_HANDLE) (
605  IN EFI_HANDLE       UserHandle,
606  OUT EFI_GUID        ***ProtocolBuffer,
607  OUT UINTN           *ProtocolBufferCount
608  );
609
610typedef
611EFI_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
620typedef
621EFI_STATUS
622(EFIAPI *EFI_LOCATE_PROTOCOL) (
623  EFI_GUID  *Protocol,
624  VOID      *Registration, OPTIONAL
625  VOID      **Interface
626  );
627
628typedef
629EFI_STATUS
630(EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
631  IN OUT EFI_HANDLE           *Handle,
632  ...
633  );
634
635typedef
636EFI_STATUS
637(EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES) (
638  IN EFI_HANDLE           Handle,
639  ...
640  );
641
642typedef
643EFI_STATUS
644(EFIAPI *EFI_CALCULATE_CRC32) (
645  IN  VOID                              *Data,
646  IN  UINTN                             DataSize,
647  OUT UINT32                            *Crc32
648  );
649
650typedef
651VOID
652(EFIAPI *EFI_COPY_MEM) (
653  IN VOID     *Destination,
654  IN VOID     *Source,
655  IN UINTN    Length
656  );
657
658typedef
659VOID
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
670typedef 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
686typedef 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
730typedef 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 SMBIOS3_TABLE_GUID \
848	{ 0xf2fd1544, 0x9794, 0x4a2c, {0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94} }
849
850#define SAL_SYSTEM_TABLE_GUID  \
851    { 0xeb9d2d32, 0x2d88, 0x11d3, {0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
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 LZMA_DECOMPRESSION_GUID \
863	{ 0xee4e5898, 0x3914, 0x4259, {0x9d, 0x6e, 0xdc, 0x7b, 0xd7, 0x94, 0x3, 0xcf} }
864
865#define ARM_MP_CORE_INFO_TABLE_GUID \
866	{ 0xa4ee0728, 0xe5d7, 0x4ac5, {0xb2, 0x1e, 0x65, 0x8e, 0xd8, 0x57, 0xe8, 0x34} }
867
868#define ESRT_TABLE_GUID \
869	{ 0xb122a263, 0x3661, 0x4f68, {0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80} }
870
871#define MEMORY_TYPE_INFORMATION_TABLE_GUID \
872    { 0x4c19049f, 0x4137, 0x4dd3, {0x9c, 0x10, 0x8b, 0x97, 0xa8, 0x3f, 0xfd, 0xfa} }
873
874#define DEBUG_IMAGE_INFO_TABLE_GUID \
875    { 0x49152e77, 0x1ada, 0x4764, {0xb7, 0xa2, 0x7a, 0xfe, 0xfe, 0xd9, 0x5e, 0x8b} }
876
877typedef struct _EFI_CONFIGURATION_TABLE {
878  EFI_GUID                VendorGuid;
879  VOID                    *VendorTable;
880} EFI_CONFIGURATION_TABLE;
881
882
883//
884// EFI System Table
885//
886
887
888
889
890#define EFI_SYSTEM_TABLE_SIGNATURE      0x5453595320494249
891#define EFI_SYSTEM_TABLE_REVISION      ((EFI_SPECIFICATION_MAJOR_REVISION<<16) | (EFI_SPECIFICATION_MINOR_REVISION))
892#define EFI_1_10_SYSTEM_TABLE_REVISION ((1<<16) | 10)
893#define EFI_1_02_SYSTEM_TABLE_REVISION ((1<<16) | 02)
894
895typedef struct _EFI_SYSTEM_TABLE {
896  EFI_TABLE_HEADER                Hdr;
897
898  CHAR16                          *FirmwareVendor;
899  UINT32                          FirmwareRevision;
900
901  EFI_HANDLE                      ConsoleInHandle;
902  SIMPLE_INPUT_INTERFACE          *ConIn;
903
904  EFI_HANDLE                      ConsoleOutHandle;
905  SIMPLE_TEXT_OUTPUT_INTERFACE    *ConOut;
906
907  EFI_HANDLE                      StandardErrorHandle;
908  SIMPLE_TEXT_OUTPUT_INTERFACE    *StdErr;
909
910  EFI_RUNTIME_SERVICES            *RuntimeServices;
911  EFI_BOOT_SERVICES               *BootServices;
912
913  UINTN                           NumberOfTableEntries;
914  EFI_CONFIGURATION_TABLE         *ConfigurationTable;
915
916} EFI_SYSTEM_TABLE;
917
918/*
919 * unlisted GUID's..
920 */
921#define EFI_EBC_INTERPRETER_PROTOCOL_GUID \
922{ 0x13AC6DD1, 0x73D0, 0x11D4, {0xB0, 0x6B, 0x00, 0xAA, 0x00, 0xBD, 0x6D, 0xE7} }
923
924#define EFI_DRIVER_CONFIGURATION2_PROTOCOL_GUID \
925{ 0xbfd7dc1d, 0x24f1, 0x40d9, {0x82, 0xe7, 0x2e, 0x09, 0xbb, 0x6b, 0x4e, 0xbe} }
926
927#define EFI_DRIVER_CONFIGURATION_PROTOCOL_GUID \
928{ 0x107a772b, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
929
930#define EFI_DRIVER_BINDING_PROTOCOL_GUID \
931  { 0x18A031AB, 0xB443, 0x4D1A, \
932    { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71 } \
933  }
934
935#define EFI_TAPE_IO_PROTOCOL_GUID \
936  { 0x1e93e633, 0xd65a, 0x459e, \
937    { 0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18 } \
938  }
939
940#define EFI_SCSI_IO_PROTOCOL_GUID \
941  { 0x932f47e6, 0x2362, 0x4002, \
942    { 0x80, 0x3e, 0x3c, 0xd5, 0x4b, 0x13, 0x8f, 0x85 } \
943  }
944
945#define EFI_USB2_HC_PROTOCOL_GUID \
946  { 0x3e745226, 0x9818, 0x45b6, \
947    { 0xa2, 0xac, 0xd7, 0xcd, 0x0e, 0x8b, 0xa2, 0xbc } \
948  }
949
950#define EFI_DEBUG_SUPPORT_PROTOCOL_GUID \
951  { 0x2755590C, 0x6F3C, 0x42FA, \
952    { 0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 } \
953  }
954
955#define EFI_DEBUGPORT_PROTOCOL_GUID \
956  { 0xEBA4E8D2, 0x3858, 0x41EC, \
957    { 0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0 } \
958  }
959
960#define EFI_DECOMPRESS_PROTOCOL_GUID \
961  { 0xd8117cfe, 0x94a6, 0x11d4, \
962    { 0x9a, 0x3a, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
963  }
964
965#define EFI_ACPI_TABLE_PROTOCOL_GUID \
966  { 0xffe06bdd, 0x6107, 0x46a6, \
967    { 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c} \
968  }
969
970#define EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID \
971  { 0x587e72d7, 0xcc50, 0x4f79, \
972    { 0x82, 0x09, 0xca, 0x29, 0x1f, 0xc1, 0xa1, 0x0f } \
973  }
974
975#define EFI_HII_DATABASE_PROTOCOL_GUID \
976  { 0xef9fc172, 0xa1b2, 0x4693, \
977    { 0xb3, 0x27, 0x6d, 0x32, 0xfc, 0x41, 0x60, 0x42 } \
978  }
979
980#define EFI_HII_STRING_PROTOCOL_GUID \
981  { 0xfd96974, 0x23aa, 0x4cdc, \
982    { 0xb9, 0xcb, 0x98, 0xd1, 0x77, 0x50, 0x32, 0x2a } \
983  }
984
985#define EFI_HII_IMAGE_PROTOCOL_GUID \
986  { 0x31a6406a, 0x6bdf, 0x4e46, \
987    { 0xb2, 0xa2, 0xeb, 0xaa, 0x89, 0xc4, 0x9, 0x20 } \
988  }
989
990#define EFI_HII_FONT_PROTOCOL_GUID \
991  { 0xe9ca4775, 0x8657, 0x47fc, \
992    { 0x97, 0xe7, 0x7e, 0xd6, 0x5a, 0x8, 0x43, 0x24 } \
993  }
994#define EFI_HII_CONFIGURATION_ACCESS_PROTOCOL_GUID \
995  { 0x330d4706, 0xf2a0, 0x4e4f, \
996    { 0xa3, 0x69, 0xb6, 0x6f, 0xa8, 0xd5, 0x43, 0x85 } \
997  }
998
999#define EFI_COMPONENT_NAME_PROTOCOL_GUID \
1000{ 0x107a772c, 0xd5e1, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1001
1002#define EFI_COMPONENT_NAME2_PROTOCOL_GUID \
1003  { 0x6a7a5cff, 0xe8d9, 0x4f70, \
1004    { 0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14} \
1005  }
1006
1007#define EFI_USB_IO_PROTOCOL_GUID \
1008  { 0x2B2F68D6, 0x0CD2, 0x44cf, \
1009    { 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 } \
1010  }
1011#define EFI_HCDP_TABLE_GUID \
1012  { 0xf951938d, 0x620b, 0x42ef, \
1013      { 0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98 } \
1014  }
1015
1016#define EFI_DEVICE_TREE_GUID \
1017  { 0xb1b621d5, 0xf19c, 0x41a5, \
1018      { 0x83, 0x0b, 0xd9, 0x15, 0x2c, 0x69, 0xaa, 0xe0 } \
1019  }
1020
1021#define EFI_VENDOR_APPLE_GUID \
1022  { 0x2B0585EB, 0xD8B8, 0x49A9, \
1023      { 0x8B, 0x8C, 0xE2, 0x1B, 0x01, 0xAE, 0xF2, 0xB7 } \
1024  }
1025
1026#define EFI_CONSOLE_IN_DEVICE_GUID    \
1027{ 0xd3b36f2b, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1028
1029#define EFI_CONSOLE_OUT_DEVICE_GUID    \
1030{ 0xd3b36f2c, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1031
1032#define EFI_STANDARD_ERROR_DEVICE_GUID	\
1033{ 0xd3b36f2d, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1034
1035#define EFI_UNICODE_COLLATION2_PROTOCOL_GUID \
1036{ 0xa4c751fc, 0x23ae, 0x4c3e, {0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49} }
1037
1038#define EFI_FORM_BROWSER2_PROTOCOL_GUID \
1039{ 0xb9d4c360, 0xbcfb, 0x4f9b, {0x92, 0x98, 0x53, 0xc1, 0x36, 0x98, 0x22, 0x58} }
1040
1041#define EFI_ARP_SERVICE_BINDING_PROTOCOL_GUID \
1042{ 0xf44c00ee, 0x1f2c, 0x4a00, {0xaa, 0x9, 0x1c, 0x9f, 0x3e, 0x8, 0x0, 0xa3} }
1043
1044#define EFI_ARP_PROTOCOL_GUID \
1045{ 0xf4b427bb, 0xba21, 0x4f16, {0xbc, 0x4e, 0x43, 0xe4, 0x16, 0xab, 0x61, 0x9c} }
1046
1047#define EFI_IP4_CONFIG_PROTOCOL_GUID \
1048{ 0x3b95aa31, 0x3793, 0x434b, {0x86, 0x67, 0xc8, 0x07, 0x08, 0x92, 0xe0, 0x5e} }
1049
1050#define EFI_IP6_CONFIG_PROTOCOL_GUID \
1051{ 0x937fe521, 0x95ae, 0x4d1a, {0x89, 0x29, 0x48, 0xbc, 0xd9, 0x0a, 0xd3, 0x1a} }
1052
1053#define EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL_GUID \
1054{ 0xf36ff770, 0xa7e1, 0x42cf, {0x9e, 0xd2, 0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c} }
1055
1056#define EFI_MANAGED_NETWORK_PROTOCOL_GUID \
1057{ 0x7ab33a91, 0xace5, 0x4326, {0xb5, 0x72, 0xe7, 0xee, 0x33, 0xd3, 0x9f, 0x16} }
1058
1059#define EFI_MTFTP4_SERVICE_BINDING_PROTOCOL_GUID \
1060{ 0x2FE800BE, 0x8F01, 0x4aa6, {0x94, 0x6B, 0xD7, 0x13, 0x88, 0xE1, 0x83, 0x3F} }
1061
1062#define EFI_MTFTP4_PROTOCOL_GUID \
1063{ 0x78247c57, 0x63db, 0x4708, {0x99, 0xc2, 0xa8, 0xb4, 0xa9, 0xa6, 0x1f, 0x6b} }
1064
1065#define EFI_MTFTP6_SERVICE_BINDING_PROTOCOL_GUID \
1066{ 0xd9760ff3, 0x3cca, 0x4267, {0x80, 0xf9, 0x75, 0x27, 0xfa, 0xfa, 0x42, 0x23} }
1067
1068#define EFI_MTFTP6_PROTOCOL_GUID \
1069{ 0xbf0a78ba, 0xec29, 0x49cf, {0xa1, 0xc9, 0x7a, 0xe5, 0x4e, 0xab, 0x6a, 0x51} }
1070
1071#define EFI_DHCP4_PROTOCOL_GUID \
1072{ 0x8a219718, 0x4ef5, 0x4761, {0x91, 0xc8, 0xc0, 0xf0, 0x4b, 0xda, 0x9e, 0x56} }
1073
1074#define EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID \
1075{ 0x9d9a39d8, 0xbd42, 0x4a73, {0xa4, 0xd5, 0x8e, 0xe9, 0x4b, 0xe1, 0x13, 0x80} }
1076
1077#define EFI_DHCP6_SERVICE_BINDING_PROTOCOL_GUID \
1078{ 0x9fb9a8a1, 0x2f4a, 0x43a6, {0x88, 0x9c, 0xd0, 0xf7, 0xb6, 0xc4, 0x7a, 0xd5} }
1079
1080#define EFI_DHCP6_PROTOCOL_GUID \
1081{ 0x87c8bad7, 0x595, 0x4053, {0x82, 0x97, 0xde, 0xde, 0x39, 0x5f, 0x5d, 0x5b} }
1082
1083#define EFI_SCSI_PASS_THRU_PROTOCOL_GUID \
1084{ 0xa59e8fcf, 0xbda0, 0x43bb, {0x90, 0xb1, 0xd3, 0x73, 0x2e, 0xca, 0xa8, 0x77} }
1085
1086#define EFI_EXT_SCSI_PASS_THRU_PROTOCOL_GUID \
1087{ 0x143b7632, 0xb81b, 0x4cb7, {0xab, 0xd3, 0xb6, 0x25, 0xa5, 0xb9, 0xbf, 0xfe} }
1088
1089#define EFI_DISK_INFO_PROTOCOL_GUID \
1090{ 0xd432a67f, 0x14dc, 0x484b, {0xb3, 0xbb, 0x3f, 0x2, 0x91, 0x84, 0x93, 0x27} }
1091
1092#define EFI_ISA_IO_PROTOCOL_GUID \
1093{ 0x7ee2bd44, 0x3da0, 0x11d4, { 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1094
1095#define EFI_VLAN_CONFIG_PROTOCOL_GUID \
1096{ 0x9e23d768, 0xd2f3, 0x4366, {0x9f, 0xc3, 0x3a, 0x7a, 0xba, 0x86, 0x43, 0x74} }
1097
1098#define EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID \
1099{ 0xa1e37052, 0x80d9, 0x4e65, {0xa3, 0x17, 0x3e, 0x9a, 0x55, 0xc4, 0x3e, 0xc9} }
1100
1101#define EFI_ISA_ACPI_PROTOCOL_GUID \
1102{ 0x64a892dc, 0x5561, 0x4536, {0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55} }
1103
1104#define EFI_PCI_ENUMERATION_COMPLETE_GUID \
1105{ 0x30cfe3e7, 0x3de1, 0x4586, {0xbe, 0x20, 0xde, 0xab, 0xa1, 0xb3, 0xb7, 0x93} }
1106
1107#define EFI_DRIVER_DIAGNOSTICS_PROTOCOL_GUID \
1108{ 0x0784924f, 0xe296, 0x11d4, {0x9a, 0x49, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
1109
1110#define EFI_DRIVER_DIAGNOSTICS2_PROTOCOL_GUID \
1111{ 0x4d330321, 0x025f, 0x4aac, {0x90, 0xd8, 0x5e, 0xd9, 0x00, 0x17, 0x3b, 0x63} }
1112
1113#define EFI_CAPSULE_ARCH_PROTOCOL_GUID \
1114{ 0x5053697e, 0x2cbc, 0x4819, {0x90, 0xd9, 0x05, 0x80, 0xde, 0xee, 0x57, 0x54} }
1115
1116#define EFI_MONOTONIC_COUNTER_ARCH_PROTOCOL_GUID \
1117{0x1da97072, 0xbddc, 0x4b30, {0x99, 0xf1, 0x72, 0xa0, 0xb5, 0x6f, 0xff, 0x2a} }
1118
1119#define EFI_REALTIME_CLOCK_ARCH_PROTOCOL_GUID \
1120{0x27cfac87, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1121
1122#define EFI_MP_SERVICES_PROTOCOL_GUID \
1123{ 0x3fdda605, 0xa76e, 0x4f46, {0xad, 0x29, 0x12, 0xf4, 0x53, 0x1b, 0x3d, 0x08} }
1124
1125#define EFI_VARIABLE_ARCH_PROTOCOL_GUID \
1126{ 0x1e5668e2, 0x8481, 0x11d4, {0xbc, 0xf1, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1127
1128#define EFI_VARIABLE_WRITE_ARCH_PROTOCOL_GUID \
1129{ 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1130
1131#define EFI_WATCHDOG_TIMER_ARCH_PROTOCOL_GUID \
1132{ 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1133
1134#define EFI_ACPI_SUPPORT_PROTOCOL_GUID \
1135{ 0x6441f818, 0x6362, 0x4e44, {0xb5, 0x70, 0x7d, 0xba, 0x31, 0xdd, 0x24, 0x53} }
1136
1137#define EFI_BDS_ARCH_PROTOCOL_GUID \
1138{ 0x665e3ff6, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1139
1140#define EFI_METRONOME_ARCH_PROTOCOL_GUID \
1141{ 0x26baccb2, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1142
1143#define EFI_TIMER_ARCH_PROTOCOL_GUID \
1144{ 0x26baccb3, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1145
1146#define EFI_DPC_PROTOCOL_GUID \
1147{ 0x480f8ae9, 0xc46, 0x4aa9, { 0xbc, 0x89, 0xdb, 0x9f, 0xba, 0x61, 0x98, 0x6} }
1148
1149#define EFI_PRINT2_PROTOCOL_GUID  \
1150{ 0xf05976ef, 0x83f1, 0x4f3d, {0x86, 0x19, 0xf7, 0x59, 0x5d, 0x41, 0xe5, 0x38} }
1151
1152#define EFI_RESET_ARCH_PROTOCOL_GUID  \
1153{ 0x27cfac88, 0x46cc, 0x11d4, {0x9a, 0x38, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
1154
1155#define EFI_CPU_ARCH_PROTOCOL_GUID \
1156{ 0x26baccb1, 0x6f42, 0x11d4, {0xbc, 0xe7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
1157
1158#define EFI_CPU_IO2_PROTOCOL_GUID \
1159{ 0xad61f191, 0xae5f, 0x4c0e, {0xb9, 0xfa, 0xe8, 0x69, 0xd2, 0x88, 0xc6, 0x4f} }
1160
1161#define EFI_LEGACY_8259_PROTOCOL_GUID \
1162{ 0x38321dba, 0x4fe0, 0x4e17, {0x8a, 0xec, 0x41, 0x30, 0x55, 0xea, 0xed, 0xc1} }
1163
1164#define EFI_SECURITY_ARCH_PROTOCOL_GUID \
1165{ 0xa46423e3, 0x4617, 0x49f1, {0xb9, 0xff, 0xd1, 0xbf, 0xa9, 0x11, 0x58, 0x39} }
1166
1167#define EFI_SECURITY2_ARCH_PROTOCOL_GUID \
1168{ 0x94ab2f58, 0x1438, 0x4ef1, {0x91, 0x52, 0x18, 0x94, 0x1a, 0x3a, 0x0e, 0x68} }
1169
1170#define EFI_RUNTIME_ARCH_PROTOCOL_GUID \
1171{ 0xb7dfb4e1, 0x52f, 0x449f, {0x87, 0xbe, 0x98, 0x18, 0xfc, 0x91, 0xb7, 0x33} }
1172
1173#define EFI_STATUS_CODE_RUNTIME_PROTOCOL_GUID  \
1174{ 0xd2b2b828, 0x826, 0x48a7, {0xb3, 0xdf, 0x98, 0x3c, 0x0, 0x60, 0x24, 0xf0} }
1175
1176#define EFI_DATA_HUB_PROTOCOL_GUID \
1177{ 0xae80d021, 0x618e, 0x11d4, {0xbc, 0xd7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
1178
1179#define PCD_PROTOCOL_GUID \
1180{ 0x11b34006, 0xd85b, 0x4d0a, { 0xa2, 0x90, 0xd5, 0xa5, 0x71, 0x31, 0xe, 0xf7} }
1181
1182#define EFI_PCD_PROTOCOL_GUID \
1183{ 0x13a3f0f6, 0x264a, 0x3ef0, {0xf2, 0xe0, 0xde, 0xc5, 0x12, 0x34, 0x2f, 0x34} }
1184
1185#define EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID \
1186{ 0x8f644fa9, 0xe850, 0x4db1, {0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4 } }
1187
1188#define EFI_FIRMWARE_VOLUME2_PROTOCOL_GUID \
1189{ 0x220e73b6, 0x6bdb, 0x4413, { 0x84, 0x5, 0xb9, 0x74, 0xb1, 0x8, 0x61, 0x9a } }
1190
1191#define EFI_FIRMWARE_VOLUME_DISPATCH_PROTOCOL_GUID \
1192{ 0x7aa35a69, 0x506c, 0x444f, {0xa7, 0xaf, 0x69, 0x4b, 0xf5, 0x6f, 0x71, 0xc8} }
1193
1194#define LZMA_COMPRESS_GUID \
1195{ 0xee4e5898, 0x3914, 0x4259, {0x9d, 0x6e, 0xdc, 0x7b, 0xd7, 0x94, 0x03, 0xcf} }
1196#endif
1197