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