Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/stand/efi/include/efiprot.h
34866 views
1
#ifndef _EFI_PROT_H
2
#define _EFI_PROT_H
3
4
/*++
5
6
Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
7
This software and associated documentation (if any) is furnished
8
under a license and may only be used or copied in accordance
9
with the terms of the license. Except as permitted by such
10
license, no part of this software or documentation may be
11
reproduced, stored in a retrieval system, or transmitted in any
12
form or by any means without the express written consent of
13
Intel Corporation.
14
15
Module Name:
16
17
efiprot.h
18
19
Abstract:
20
21
EFI Protocols
22
23
24
25
Revision History
26
27
--*/
28
29
#include <efidef.h>
30
31
//
32
// Device Path protocol
33
//
34
35
#define DEVICE_PATH_PROTOCOL \
36
{ 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
37
38
39
//
40
// Block IO protocol
41
//
42
43
#define BLOCK_IO_PROTOCOL \
44
{ 0x964e5b21, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
45
#define EFI_BLOCK_IO_INTERFACE_REVISION 0x00010000
46
47
INTERFACE_DECL(_EFI_BLOCK_IO);
48
49
typedef
50
EFI_STATUS
51
(EFIAPI *EFI_BLOCK_RESET) (
52
IN struct _EFI_BLOCK_IO *This,
53
IN BOOLEAN ExtendedVerification
54
);
55
56
typedef
57
EFI_STATUS
58
(EFIAPI *EFI_BLOCK_READ) (
59
IN struct _EFI_BLOCK_IO *This,
60
IN UINT32 MediaId,
61
IN EFI_LBA LBA,
62
IN UINTN BufferSize,
63
OUT VOID *Buffer
64
);
65
66
67
typedef
68
EFI_STATUS
69
(EFIAPI *EFI_BLOCK_WRITE) (
70
IN struct _EFI_BLOCK_IO *This,
71
IN UINT32 MediaId,
72
IN EFI_LBA LBA,
73
IN UINTN BufferSize,
74
IN VOID *Buffer
75
);
76
77
78
typedef
79
EFI_STATUS
80
(EFIAPI *EFI_BLOCK_FLUSH) (
81
IN struct _EFI_BLOCK_IO *This
82
);
83
84
85
86
typedef struct {
87
UINT32 MediaId;
88
BOOLEAN RemovableMedia;
89
BOOLEAN MediaPresent;
90
91
BOOLEAN LogicalPartition;
92
BOOLEAN ReadOnly;
93
BOOLEAN WriteCaching;
94
95
UINT32 BlockSize;
96
UINT32 IoAlign;
97
98
EFI_LBA LastBlock;
99
} EFI_BLOCK_IO_MEDIA;
100
101
typedef struct _EFI_BLOCK_IO {
102
UINT64 Revision;
103
104
EFI_BLOCK_IO_MEDIA *Media;
105
106
EFI_BLOCK_RESET Reset;
107
EFI_BLOCK_READ ReadBlocks;
108
EFI_BLOCK_WRITE WriteBlocks;
109
EFI_BLOCK_FLUSH FlushBlocks;
110
111
} EFI_BLOCK_IO;
112
113
114
115
//
116
// Disk Block IO protocol
117
//
118
119
#define DISK_IO_PROTOCOL \
120
{ 0xce345171, 0xba0b, 0x11d2, {0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
121
#define EFI_DISK_IO_INTERFACE_REVISION 0x00010000
122
123
INTERFACE_DECL(_EFI_DISK_IO);
124
125
typedef
126
EFI_STATUS
127
(EFIAPI *EFI_DISK_READ) (
128
IN struct _EFI_DISK_IO *This,
129
IN UINT32 MediaId,
130
IN UINT64 Offset,
131
IN UINTN BufferSize,
132
OUT VOID *Buffer
133
);
134
135
136
typedef
137
EFI_STATUS
138
(EFIAPI *EFI_DISK_WRITE) (
139
IN struct _EFI_DISK_IO *This,
140
IN UINT32 MediaId,
141
IN UINT64 Offset,
142
IN UINTN BufferSize,
143
IN VOID *Buffer
144
);
145
146
147
typedef struct _EFI_DISK_IO {
148
UINT64 Revision;
149
EFI_DISK_READ ReadDisk;
150
EFI_DISK_WRITE WriteDisk;
151
} EFI_DISK_IO;
152
153
154
//
155
// Simple file system protocol
156
//
157
158
#define SIMPLE_FILE_SYSTEM_PROTOCOL \
159
{ 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
160
161
INTERFACE_DECL(_EFI_FILE_IO_INTERFACE);
162
INTERFACE_DECL(_EFI_FILE_HANDLE);
163
164
typedef
165
EFI_STATUS
166
(EFIAPI *EFI_VOLUME_OPEN) (
167
IN struct _EFI_FILE_IO_INTERFACE *This,
168
OUT struct _EFI_FILE_HANDLE **Root
169
);
170
171
#define EFI_FILE_IO_INTERFACE_REVISION 0x00010000
172
173
typedef struct _EFI_FILE_IO_INTERFACE {
174
UINT64 Revision;
175
EFI_VOLUME_OPEN OpenVolume;
176
} EFI_FILE_IO_INTERFACE;
177
178
//
179
//
180
//
181
182
typedef
183
EFI_STATUS
184
(EFIAPI *EFI_FILE_OPEN) (
185
IN struct _EFI_FILE_HANDLE *File,
186
OUT struct _EFI_FILE_HANDLE **NewHandle,
187
IN CHAR16 *FileName,
188
IN UINT64 OpenMode,
189
IN UINT64 Attributes
190
);
191
192
// Open modes
193
#define EFI_FILE_MODE_READ 0x0000000000000001
194
#define EFI_FILE_MODE_WRITE 0x0000000000000002
195
#define EFI_FILE_MODE_CREATE 0x8000000000000000
196
197
// File attributes
198
#define EFI_FILE_READ_ONLY 0x0000000000000001
199
#define EFI_FILE_HIDDEN 0x0000000000000002
200
#define EFI_FILE_SYSTEM 0x0000000000000004
201
#define EFI_FILE_RESERVIED 0x0000000000000008
202
#define EFI_FILE_DIRECTORY 0x0000000000000010
203
#define EFI_FILE_ARCHIVE 0x0000000000000020
204
#define EFI_FILE_VALID_ATTR 0x0000000000000037
205
206
typedef
207
EFI_STATUS
208
(EFIAPI *EFI_FILE_CLOSE) (
209
IN struct _EFI_FILE_HANDLE *File
210
);
211
212
typedef
213
EFI_STATUS
214
(EFIAPI *EFI_FILE_DELETE) (
215
IN struct _EFI_FILE_HANDLE *File
216
);
217
218
typedef
219
EFI_STATUS
220
(EFIAPI *EFI_FILE_READ) (
221
IN struct _EFI_FILE_HANDLE *File,
222
IN OUT UINTN *BufferSize,
223
OUT VOID *Buffer
224
);
225
226
typedef
227
EFI_STATUS
228
(EFIAPI *EFI_FILE_WRITE) (
229
IN struct _EFI_FILE_HANDLE *File,
230
IN OUT UINTN *BufferSize,
231
IN VOID *Buffer
232
);
233
234
typedef
235
EFI_STATUS
236
(EFIAPI *EFI_FILE_SET_POSITION) (
237
IN struct _EFI_FILE_HANDLE *File,
238
IN UINT64 Position
239
);
240
241
typedef
242
EFI_STATUS
243
(EFIAPI *EFI_FILE_GET_POSITION) (
244
IN struct _EFI_FILE_HANDLE *File,
245
OUT UINT64 *Position
246
);
247
248
typedef
249
EFI_STATUS
250
(EFIAPI *EFI_FILE_GET_INFO) (
251
IN struct _EFI_FILE_HANDLE *File,
252
IN EFI_GUID *InformationType,
253
IN OUT UINTN *BufferSize,
254
OUT VOID *Buffer
255
);
256
257
typedef
258
EFI_STATUS
259
(EFIAPI *EFI_FILE_SET_INFO) (
260
IN struct _EFI_FILE_HANDLE *File,
261
IN EFI_GUID *InformationType,
262
IN UINTN BufferSize,
263
IN VOID *Buffer
264
);
265
266
typedef
267
EFI_STATUS
268
(EFIAPI *EFI_FILE_FLUSH) (
269
IN struct _EFI_FILE_HANDLE *File
270
);
271
272
273
274
#define EFI_FILE_HANDLE_REVISION 0x00010000
275
typedef struct _EFI_FILE_HANDLE {
276
UINT64 Revision;
277
EFI_FILE_OPEN Open;
278
EFI_FILE_CLOSE Close;
279
EFI_FILE_DELETE Delete;
280
EFI_FILE_READ Read;
281
EFI_FILE_WRITE Write;
282
EFI_FILE_GET_POSITION GetPosition;
283
EFI_FILE_SET_POSITION SetPosition;
284
EFI_FILE_GET_INFO GetInfo;
285
EFI_FILE_SET_INFO SetInfo;
286
EFI_FILE_FLUSH Flush;
287
} EFI_FILE, *EFI_FILE_HANDLE;
288
289
290
//
291
// File information types
292
//
293
294
#define EFI_FILE_INFO_ID \
295
{ 0x9576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
296
297
typedef struct {
298
UINT64 Size;
299
UINT64 FileSize;
300
UINT64 PhysicalSize;
301
EFI_TIME CreateTime;
302
EFI_TIME LastAccessTime;
303
EFI_TIME ModificationTime;
304
UINT64 Attribute;
305
CHAR16 FileName[1];
306
} EFI_FILE_INFO;
307
308
//
309
// The FileName field of the EFI_FILE_INFO data structure is variable length.
310
// Whenever code needs to know the size of the EFI_FILE_INFO data structure, it needs to
311
// be the size of the data structure without the FileName field. The following macro
312
// computes this size correctly no matter how big the FileName array is declared.
313
// This is required to make the EFI_FILE_INFO data structure ANSI compilant.
314
//
315
316
#define SIZE_OF_EFI_FILE_INFO EFI_FIELD_OFFSET(EFI_FILE_INFO,FileName)
317
318
#define EFI_FILE_SYSTEM_INFO_ID \
319
{ 0x9576e93, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
320
321
typedef struct {
322
UINT64 Size;
323
BOOLEAN ReadOnly;
324
UINT64 VolumeSize;
325
UINT64 FreeSpace;
326
UINT32 BlockSize;
327
CHAR16 VolumeLabel[1];
328
} EFI_FILE_SYSTEM_INFO;
329
330
//
331
// The VolumeLabel field of the EFI_FILE_SYSTEM_INFO data structure is variable length.
332
// Whenever code needs to know the size of the EFI_FILE_SYSTEM_INFO data structure, it needs
333
// to be the size of the data structure without the VolumeLable field. The following macro
334
// computes this size correctly no matter how big the VolumeLable array is declared.
335
// This is required to make the EFI_FILE_SYSTEM_INFO data structure ANSI compilant.
336
//
337
338
#define SIZE_OF_EFI_FILE_SYSTEM_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_INFO,VolumeLabel)
339
340
#define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID \
341
{ 0xDB47D7D3,0xFE81, 0x11d3, {0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
342
343
typedef struct {
344
CHAR16 VolumeLabel[1];
345
} EFI_FILE_SYSTEM_VOLUME_LABEL_INFO;
346
347
#define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL_INFO,VolumeLabel)
348
349
//
350
// Load file protocol
351
//
352
353
354
#define LOAD_FILE_PROTOCOL \
355
{ 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
356
357
INTERFACE_DECL(_EFI_LOAD_FILE_INTERFACE);
358
359
typedef
360
EFI_STATUS
361
(EFIAPI *EFI_LOAD_FILE) (
362
IN struct _EFI_LOAD_FILE_INTERFACE *This,
363
IN EFI_DEVICE_PATH *FilePath,
364
IN BOOLEAN BootPolicy,
365
IN OUT UINTN *BufferSize,
366
IN VOID *Buffer OPTIONAL
367
);
368
369
typedef struct _EFI_LOAD_FILE_INTERFACE {
370
EFI_LOAD_FILE LoadFile;
371
} EFI_LOAD_FILE_INTERFACE;
372
373
374
//
375
// Device IO protocol
376
//
377
378
#define DEVICE_IO_PROTOCOL \
379
{ 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
380
381
INTERFACE_DECL(_EFI_DEVICE_IO_INTERFACE);
382
383
typedef enum {
384
IO_UINT8,
385
IO_UINT16,
386
IO_UINT32,
387
IO_UINT64,
388
//
389
// Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO
390
//
391
MMIO_COPY_UINT8,
392
MMIO_COPY_UINT16,
393
MMIO_COPY_UINT32,
394
MMIO_COPY_UINT64
395
} EFI_IO_WIDTH;
396
397
#define EFI_PCI_ADDRESS(bus,dev,func,reg) \
398
( (UINT64) ( (((UINTN)bus) << 24) + (((UINTN)dev) << 16) + (((UINTN)func) << 8) + ((UINTN)reg) ))
399
400
typedef
401
EFI_STATUS
402
(EFIAPI *EFI_DEVICE_IO) (
403
IN struct _EFI_DEVICE_IO_INTERFACE *This,
404
IN EFI_IO_WIDTH Width,
405
IN UINT64 Address,
406
IN UINTN Count,
407
IN OUT VOID *Buffer
408
);
409
410
typedef struct {
411
EFI_DEVICE_IO Read;
412
EFI_DEVICE_IO Write;
413
} EFI_IO_ACCESS;
414
415
typedef
416
EFI_STATUS
417
(EFIAPI *EFI_PCI_DEVICE_PATH) (
418
IN struct _EFI_DEVICE_IO_INTERFACE *This,
419
IN UINT64 Address,
420
IN OUT EFI_DEVICE_PATH **PciDevicePath
421
);
422
423
typedef enum {
424
EfiBusMasterRead,
425
EfiBusMasterWrite,
426
EfiBusMasterCommonBuffer
427
} EFI_IO_OPERATION_TYPE;
428
429
typedef
430
EFI_STATUS
431
(EFIAPI *EFI_IO_MAP) (
432
IN struct _EFI_DEVICE_IO_INTERFACE *This,
433
IN EFI_IO_OPERATION_TYPE Operation,
434
IN EFI_PHYSICAL_ADDRESS *HostAddress,
435
IN OUT UINTN *NumberOfBytes,
436
OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
437
OUT VOID **Mapping
438
);
439
440
typedef
441
EFI_STATUS
442
(EFIAPI *EFI_IO_UNMAP) (
443
IN struct _EFI_DEVICE_IO_INTERFACE *This,
444
IN VOID *Mapping
445
);
446
447
typedef
448
EFI_STATUS
449
(EFIAPI *EFI_IO_ALLOCATE_BUFFER) (
450
IN struct _EFI_DEVICE_IO_INTERFACE *This,
451
IN EFI_ALLOCATE_TYPE Type,
452
IN EFI_MEMORY_TYPE MemoryType,
453
IN UINTN Pages,
454
IN OUT EFI_PHYSICAL_ADDRESS *HostAddress
455
);
456
457
typedef
458
EFI_STATUS
459
(EFIAPI *EFI_IO_FLUSH) (
460
IN struct _EFI_DEVICE_IO_INTERFACE *This
461
);
462
463
typedef
464
EFI_STATUS
465
(EFIAPI *EFI_IO_FREE_BUFFER) (
466
IN struct _EFI_DEVICE_IO_INTERFACE *This,
467
IN UINTN Pages,
468
IN EFI_PHYSICAL_ADDRESS HostAddress
469
);
470
471
typedef struct _EFI_DEVICE_IO_INTERFACE {
472
EFI_IO_ACCESS Mem;
473
EFI_IO_ACCESS Io;
474
EFI_IO_ACCESS Pci;
475
EFI_IO_MAP Map;
476
EFI_PCI_DEVICE_PATH PciDevicePath;
477
EFI_IO_UNMAP Unmap;
478
EFI_IO_ALLOCATE_BUFFER AllocateBuffer;
479
EFI_IO_FLUSH Flush;
480
EFI_IO_FREE_BUFFER FreeBuffer;
481
} EFI_DEVICE_IO_INTERFACE;
482
483
484
//
485
// Unicode Collation protocol
486
//
487
488
#define UNICODE_COLLATION_PROTOCOL \
489
{ 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
490
491
#define UNICODE_BYTE_ORDER_MARK (CHAR16)(0xfeff)
492
493
INTERFACE_DECL(_EFI_UNICODE_COLLATION_INTERFACE);
494
495
typedef
496
INTN
497
(EFIAPI *EFI_UNICODE_COLLATION_STRICOLL) (
498
IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
499
IN CHAR16 *s1,
500
IN CHAR16 *s2
501
);
502
503
typedef
504
BOOLEAN
505
(EFIAPI *EFI_UNICODE_COLLATION_METAIMATCH) (
506
IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
507
IN CHAR16 *String,
508
IN CHAR16 *Pattern
509
);
510
511
typedef
512
VOID
513
(EFIAPI *EFI_UNICODE_COLLATION_STRLWR) (
514
IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
515
IN OUT CHAR16 *Str
516
);
517
518
typedef
519
VOID
520
(EFIAPI *EFI_UNICODE_COLLATION_STRUPR) (
521
IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
522
IN OUT CHAR16 *Str
523
);
524
525
typedef
526
VOID
527
(EFIAPI *EFI_UNICODE_COLLATION_FATTOSTR) (
528
IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
529
IN UINTN FatSize,
530
IN CHAR8 *Fat,
531
OUT CHAR16 *String
532
);
533
534
typedef
535
BOOLEAN
536
(EFIAPI *EFI_UNICODE_COLLATION_STRTOFAT) (
537
IN struct _EFI_UNICODE_COLLATION_INTERFACE *This,
538
IN CHAR16 *String,
539
IN UINTN FatSize,
540
OUT CHAR8 *Fat
541
);
542
543
544
typedef struct _EFI_UNICODE_COLLATION_INTERFACE {
545
546
// general
547
EFI_UNICODE_COLLATION_STRICOLL StriColl;
548
EFI_UNICODE_COLLATION_METAIMATCH MetaiMatch;
549
EFI_UNICODE_COLLATION_STRLWR StrLwr;
550
EFI_UNICODE_COLLATION_STRUPR StrUpr;
551
552
// for supporting fat volumes
553
EFI_UNICODE_COLLATION_FATTOSTR FatToStr;
554
EFI_UNICODE_COLLATION_STRTOFAT StrToFat;
555
556
CHAR8 *SupportedLanguages;
557
} EFI_UNICODE_COLLATION_INTERFACE;
558
559
//
560
// Driver Binding protocol
561
//
562
563
#define DRIVER_BINDING_PROTOCOL \
564
{ 0x18a031ab, 0xb443, 0x4d1a, {0xa5, 0xc0, 0x0c, 0x09, 0x26, 0x1e, 0x9f, 0x71} }
565
566
INTERFACE_DECL(_EFI_DRIVER_BINDING);
567
568
typedef
569
EFI_STATUS
570
(EFIAPI *EFI_DRIVER_BINDING_SUPPORTED) (
571
IN struct _EFI_DRIVER_BINDING *This,
572
IN EFI_HANDLE ControllerHandle,
573
IN EFI_DEVICE_PATH *RemainingPath
574
);
575
576
typedef
577
EFI_STATUS
578
(EFIAPI *EFI_DRIVER_BINDING_START) (
579
IN struct _EFI_DRIVER_BINDING *This,
580
IN EFI_HANDLE ControllerHandle,
581
IN EFI_DEVICE_PATH *RemainingPath
582
);
583
584
typedef
585
EFI_STATUS
586
(EFIAPI *EFI_DRIVER_BINDING_STOP) (
587
IN struct _EFI_DRIVER_BINDING *This,
588
IN EFI_HANDLE ControllerHandle,
589
IN UINTN NumberOfChildren,
590
IN EFI_HANDLE *ChildHandleBuffer
591
);
592
593
typedef struct _EFI_DRIVER_BINDING {
594
EFI_DRIVER_BINDING_SUPPORTED Supported;
595
EFI_DRIVER_BINDING_START Start;
596
EFI_DRIVER_BINDING_STOP Stop;
597
UINT32 Version;
598
EFI_HANDLE ImageHandle;
599
EFI_HANDLE DriverBindingHandle;
600
} EFI_DRIVER_BINDING;
601
602
//
603
// Component Name Protocol 2
604
//
605
606
#define COMPONENT_NAME2_PROTOCOL \
607
{ 0x6a7a5cff, 0xe8d9, 0x4f70, {0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14 } }
608
609
INTERFACE_DECL(_EFI_COMPONENT_NAME2);
610
611
typedef
612
EFI_STATUS
613
(EFIAPI *EFI_COMPONENT_NAME_GET_DRIVER_NAME) (
614
IN struct _EFI_COMPONENT_NAME2 *This,
615
IN CHAR8 * Language,
616
OUT CHAR16 **DriverName
617
);
618
619
typedef
620
EFI_STATUS
621
(EFIAPI *EFI_COMPONENT_NAME_GET_CONTROLLER_NAME) (
622
IN struct _EFI_COMPONENT_NAME2 *This,
623
IN EFI_HANDLE ControllerHandle,
624
IN EFI_HANDLE ChildHandle OPTIONAL,
625
IN CHAR8 *Language,
626
OUT CHAR16 **ControllerName
627
);
628
629
typedef struct _EFI_COMPONENT_NAME2 {
630
EFI_COMPONENT_NAME_GET_DRIVER_NAME GetDriverName;
631
EFI_COMPONENT_NAME_GET_CONTROLLER_NAME GetControllerName;
632
CHAR8 **SupportedLanguages;
633
} EFI_COMPONENT_NAME2;
634
635
//
636
// RISC-V EFI Boot Protocol
637
//
638
// https://github.com/riscv-non-isa/riscv-uefi
639
//
640
641
#define RISCV_EFI_BOOT_PROTOCOL_GUID \
642
{ 0xccd15fec, 0x6f73, 0x4eec, {0x83, 0x95, 0x3e, 0x69, 0xe4, 0xb9, 0x40, 0xbf} }
643
644
INTERFACE_DECL(_RISCV_EFI_BOOT_PROTOCOL);
645
646
#define RISCV_EFI_BOOT_PROTOCOL_REVISION 0x00010000
647
#define RISCV_EFI_BOOT_PROTOCOL_LATEST_VERSION \
648
RISCV_EFI_BOOT_PROTOCOL_REVISION
649
650
typedef
651
EFI_STATUS
652
(EFIAPI *EFI_GET_BOOT_HARTID) (
653
IN struct _RISCV_EFI_BOOT_PROTOCOL *This,
654
OUT UINTN *BootHartId
655
);
656
657
typedef struct _RISCV_EFI_BOOT_PROTOCOL {
658
UINT64 Revision;
659
EFI_GET_BOOT_HARTID GetBootHartId;
660
} RISCV_EFI_BOOT_PROTOCOL;
661
662
#endif
663
664