xref: /haiku/headers/private/kernel/platform/efi/system-table.h (revision 485b5cf8bc00ab5aaee5db81a91d135dc61d9cc3)
1 // Copyright 2016 The Fuchsia Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #pragma once
6 
7 #include <stdint.h>
8 
9 #include <efi/types.h>
10 #include <efi/boot-services.h>
11 #include <efi/runtime-services.h>
12 #include <efi/protocol/simple-text-input.h>
13 #include <efi/protocol/simple-text-output.h>
14 
15 #define EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249
16 #define EFI_2_60_SYSTEM_TABLE_REVISION ((2<<16) | (60))
17 #define EFI_2_50_SYSTEM_TABLE_REVISION ((2<<16) | (50))
18 #define EFI_2_40_SYSTEM_TABLE_REVISION ((2<<16) | (40))
19 #define EFI_2_31_SYSTEM_TABLE_REVISION ((2<<16) | (31))
20 #define EFI_2_30_SYSTEM_TABLE_REVISION ((2<<16) | (30))
21 #define EFI_2_20_SYSTEM_TABLE_REVISION ((2<<16) | (20))
22 #define EFI_2_10_SYSTEM_TABLE_REVISION ((2<<16) | (10))
23 #define EFI_2_00_SYSTEM_TABLE_REVISION ((2<<16) | (00))
24 #define EFI_1_10_SYSTEM_TABLE_REVISION ((1<<16) | (10))
25 #define EFI_1_02_SYSTEM_TABLE_REVISION ((1<<16) | (02))
26 #define EFI_SPECIFICATION_VERSION EFI_SYSTEM_TABLE_REVISION
27 #define EFI_SYSTEM_TABLE_REVISION EFI_2_60_SYSTEM_TABLE_REVISION
28 
29 typedef struct {
30     efi_guid VendorGuid;
31     void* VendorTable;
32 } efi_configuration_table;
33 
34 typedef struct efi_system_table {
35     efi_table_header Hdr;
36     char16_t* FirmwareVendor;
37     uint32_t FirmwareRevision;
38     efi_handle ConsoleInHandle;
39     efi_simple_text_input_protocol* ConIn;
40     efi_handle ConsoleOutHandle;
41     efi_simple_text_output_protocol* ConOut;
42     efi_handle StandardErrorHandle;
43     efi_simple_text_output_protocol* StdErr;
44     efi_runtime_services *RuntimeServices;
45     efi_boot_services* BootServices;
46     size_t NumberOfTableEntries;
47     efi_configuration_table *ConfigurationTable;
48 } efi_system_table;
49