From 5814775c43bc86e7f11dfab485bd5618c702a194 Mon Sep 17 00:00:00 2001 From: Rafal Kupiec Date: Thu, 7 Mar 2024 21:55:58 +0100 Subject: [PATCH] Add EFI legacy BIOS protocol related structures --- sdk/xtdk/xtstruct.h | 12 +++ sdk/xtdk/xtuefi.h | 215 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 227 insertions(+) diff --git a/sdk/xtdk/xtstruct.h b/sdk/xtdk/xtstruct.h index 9f998f8..ba4d612 100644 --- a/sdk/xtdk/xtstruct.h +++ b/sdk/xtdk/xtstruct.h @@ -62,7 +62,10 @@ typedef struct _EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR EFI_ACPI_ADDRESS_SPACE_DESCRIP typedef struct _EFI_ACPI_ADR_DEVICE_PATH EFI_ACPI_ADR_DEVICE_PATH, *PEFI_ACPI_ADR_DEVICE_PATH; typedef struct _EFI_ACPI_HID_DEVICE_PATH EFI_ACPI_HID_DEVICE_PATH, *PEFI_ACPI_HID_DEVICE_PATH; typedef struct _EFI_ATAPI_DEVICE_PATH EFI_ATAPI_DEVICE_PATH, *PEFI_ATAPI_DEVICE_PATH; +typedef struct _EFI_ATAPI_IDENTIFY EFI_ATAPI_IDENTIFY, *PEFI_ATAPI_IDENTIFY; typedef struct _EFI_BBS_BBS_DEVICE_PATH EFI_BBS_BBS_DEVICE_PATH, *PEFI_BBS_BBS_DEVICE_PATH; +typedef struct _EFI_BBS_STATUS_FLAGS EFI_BBS_STATUS_FLAGS, *PEFI_BBS_STATUS_FLAGS; +typedef struct _EFI_BBS_TABLE EFI_BBS_TABLE, *PEFI_BBS_TABLE; typedef struct _EFI_BLOCK_DEVICE EFI_BLOCK_DEVICE, *PEFI_BLOCK_DEVICE; typedef struct _EFI_BLOCK_DEVICE_DATA EFI_BLOCK_DEVICE_DATA, *PEFI_BLOCK_DEVICE_DATA; typedef struct _EFI_BLOCK_IO_MEDIA EFI_BLOCK_IO_MEDIA, *PEFI_BLOCK_IO_MEDIA; @@ -71,6 +74,7 @@ typedef struct _EFI_BLOCK_IO2_PROTOCOL EFI_BLOCK_IO2_PROTOCOL, *PEFI_BLOCK_IO2_P typedef struct _EFI_BLOCK_IO2_TOKEN EFI_BLOCK_IO2_TOKEN, *PEFI_BLOCK_IO2_TOKEN; typedef struct _EFI_BOOT_SERVICES EFI_BOOT_SERVICES, *PEFI_BOOT_SERVICES; typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL, *PEFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL; +typedef struct _EFI_BYTE_REGS EFI_BYTE_REGS, *PEFI_BYTE_REGS; typedef struct _EFI_CAPSULE_BLOCK_DESCRIPTOR EFI_CAPSULE_BLOCK_DESCRIPTOR, *PEFI_CAPSULE_BLOCK_DESCRIPTOR; typedef struct _EFI_CAPSULE_HEADER EFI_CAPSULE_HEADER, *PEFI_CAPSULE_HEADER; typedef struct _EFI_CDROM_DEVICE_PATH EFI_CDROM_DEVICE_PATH, *PEFI_CDROM_DEVICE_PATH; @@ -89,10 +93,12 @@ typedef struct _EFI_DISK_IO2_PROTOCOL EFI_DISK_IO2_PROTOCOL, *PEFI_DISK_IO2_PROT typedef struct _EFI_DISK_IO2_TOKEN EFI_DISK_IO2_TOKEN, *PEFI_DISK_IO2_TOKEN; typedef struct _EFI_DRIVER_BINDING_PROTOCOL EFI_DRIVER_BINDING_PROTOCOL, *PEFI_DRIVER_BINDING_PROTOCOL; typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL, *PEFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL; +typedef struct _EFI_DWORD_REGS EFI_DWORD_REGS, *PEFI_DWORD_REGS; typedef struct _EFI_EBC_PROTOCOL EFI_EBC_PROTOCOL, *PEFI_EBC_PROTOCOL; typedef struct _EFI_EDID_ACTIVE_PROTOCOL EFI_EDID_ACTIVE_PROTOCOL, *PEFI_EDID_ACTIVE_PROTOCOL; typedef struct _EFI_EDID_DISCOVERED_PROTOCOL EFI_EDID_DISCOVERED_PROTOCOL, *PEFI_EDID_DISCOVERED_PROTOCOL; typedef struct _EFI_EDID_OVERRIDE_PROTOCOL EFI_EDID_OVERRIDE_PROTOCOL, *PEFI_EDID_OVERRIDE_PROTOCOL; +typedef struct _EFI_EFLAGS_REG EFLAGS_REG, *PEFI_EFLAGS_REG; typedef struct _EFI_EXPANDED_ACPI_HID_DEVICE_PATH EFI_EXPANDED_ACPI_HID_DEVICE_PATH, *PEFI_EXPANDED_ACPI_HID_DEVICE_PATH; typedef struct _EFI_FIBRECHANNEL_DEVICE_PATH EFI_FIBRECHANNEL_DEVICE_PATH, *PEFI_FIBRECHANNEL_DEVICE_PATH; typedef struct _EFI_FIBRECHANNELEX_DEVICE_PATH EFI_FIBRECHANNELEX_DEVICE_PATH, *PEFI_FIBRECHANNELEX_DEVICE_PATH; @@ -103,6 +109,7 @@ typedef struct _EFI_FILE_IO_TOKEN EFI_FILE_IO_TOKEN, *PEFI_FILE_IO_TOKEN; typedef struct _EFI_FILE_SYSTEM_INFO EFI_FILE_SYSTEM_INFO, *PEFI_FILE_SYSTEM_INFO; typedef struct _EFI_FILE_SYSTEM_VOLUME_LABEL EFI_FILE_SYSTEM_VOLUME_LABEL, *PEFI_FILE_SYSTEM_VOLUME_LABEL; typedef struct _EFI_FILEPATH_DEVICE_PATH EFI_FILEPATH_DEVICE_PATH, *PEFI_FILEPATH_DEVICE_PATH; +typedef struct _EFI_FLAGS_REG EFI_FLAGS_REG, *PEFI_FLAGS_REG; typedef struct _EFI_FRAMEWORK_MP_HEALTH EFI_FRAMEWORK_MP_HEALTH, *PEFI_FRAMEWORK_MP_HEALTH; typedef struct _EFI_FRAMEWORK_MP_PROCESSOR_CONTEXT EFI_FRAMEWORK_MP_PROCESSOR_CONTEXT, *PEFI_FRAMEWORK_MP_PROCESSOR_CONTEXT; typedef struct _EFI_FRAMEWORK_MP_SERVICES_PROTOCOL EFI_FRAMEWORK_MP_SERVICES_PROTOCOL, *PEFI_FRAMEWORK_MP_SERVICES_PROTOCOL; @@ -115,6 +122,7 @@ typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE EFI_GRAPHICS_OUTPUT_PROTOCOL_M typedef struct _EFI_GUID EFI_GUID, *PEFI_GUID; typedef struct _EFI_HARDDRIVE_DEVICE_PATH EFI_HARDDRIVE_DEVICE_PATH, *PEFI_HARDDRIVE_DEVICE_PATH; typedef struct _EFI_HASH_PROTOCOL EFI_HASH_PROTOCOL, *PEFI_HASH_PROTOCOL; +typedef struct _EFI_HDD_INFO EFI_HDD_INFO, *PEFI_HDD_INFO; typedef struct _EFI_I2O_DEVICE_PATH EFI_I2O_DEVICE_PATH, *PEFI_I2O_DEVICE_PATH; typedef struct _EFI_INFINIBAND_DEVICE_PATH EFI_INFINIBAND_DEVICE_PATH, *PEFI_INFINIBAND_DEVICE_PATH; typedef struct _EFI_INPUT_KEY EFI_INPUT_KEY, *PEFI_INPUT_KEY; @@ -126,6 +134,7 @@ typedef struct _EFI_IPv6_DEVICE_PATH EFI_IPv6_DEVICE_PATH, *PEFI_IPv6_DEVICE_PAT typedef struct _EFI_KEY_DATA EFI_KEY_DATA, *PEFI_KEY_DATA; typedef struct _EFI_KEY_STATE EFI_KEY_STATE, *PEFI_KEY_STATE; typedef struct _EFI_LBAL EFI_LBAL, *PEFI_LBAL; +typedef struct _EFI_LEGACY_BIOS_PROTOCOL EFI_LEGACY_BIOS_PROTOCOL, *PEFI_LEGACY_BIOS_PROTOCOL; typedef struct _EFI_LOAD_FILE_PROTOCOL EFI_LOAD_FILE_PROTOCOL, *PEFI_LOAD_FILE_PROTOCOL; typedef struct _EFI_LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE_PROTOCOL, *PEFI_LOADED_IMAGE_PROTOCOL; typedef struct _EFI_MAC_ADDR_DEVICE_PATH EFI_MAC_ADDR_DEVICE_PATH, *PEFI_MAC_ADDR_DEVICE_PATH; @@ -190,6 +199,7 @@ typedef struct _EFI_TIME_CAPABILITIES EFI_TIME_CAPABILITIES, *PEFI_TIME_CAPABILI typedef struct _EFI_UART_DEVICE_PATH EFI_UART_DEVICE_PATH, *PEFI_UART_DEVICE_PATH; typedef struct _EFI_UART_IO_MODE EFI_UART_IO_MODE, *PEFI_UART_IO_MODE; typedef struct _EFI_UART_IO_PROTOCOL EFI_UART_IO_PROTOCOL, *PEFI_UART_IO_PROTOCOL; +typedef struct _EFI_UDC_ATTRIBUTES EFI_UDC_ATTRIBUTES, *PEFI_UDC_ATTRIBUTES; typedef struct _EFI_UKNOWN_DEVICE_VENDOR_DEVICE_PATH EFI_UNKNOWN_DEVICE_VENDOR_DEVICE_PATH, *PEFI_UNKNOWN_DEVICE_VENDOR_DEVICE_PATH; typedef struct _EFI_UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL, *PEFI_UNICODE_COLLATION_PROTOCOL; typedef struct _EFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL EFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL, *PEFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL; @@ -200,6 +210,7 @@ typedef struct _EFI_USB_DEVICE_PATH EFI_USB_DEVICE_PATH, *PEFI_USB_DEVICE_PATH; typedef struct _EFI_USB_WWID_DEVICE_PATH EFI_USB_WWID_DEVICE_PATH, *PEFI_USB_WWID_DEVICE_PATH; typedef struct _EFI_VENDOR_DEVICE_PATH EFI_VENDOR_DEVICE_PATH, *PEFI_VENDOR_DEVICE_PATH; typedef struct _EFI_VLAN_DEVICE_PATH EFI_VLAN_DEVICE_PATH, *PEFI_VLAN_DEVICE_PATH; +typedef struct _EFI_WORD_REGS EFI_WORD_REGS, *PEFI_WORD_REGS; typedef struct _EPROCESS EPROCESS, *PEPROCESS; typedef struct _ETHREAD ETHREAD, *PETHREAD; typedef struct _EX_RUNDOWN_REFERENCE EX_RUNDOWN_REFERENCE, *PEX_RUNDOWN_REFERENCE; @@ -294,6 +305,7 @@ typedef union _EFI_DEV_PATH_PTR EFI_DEV_PATH_PTR, *PEFI_DEV_PATH_PTR; typedef union _EFI_FRAMEWORK_MP_HEALTH_FLAGS EFI_FRAMEWORK_MP_HEALTH_FLAGS, *PEFI_FRAMEWORK_MP_HEALTH_FLAGS; typedef union _EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION, *PEFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION; typedef union _EFI_HASH_OUTPUT EFI_HASH_OUTPUT, *PEFI_HASH_OUTPUT; +typedef union _EFI_IA32_REGISTER_SET EFI_IA32_REGISTER_SET, *PEFI_IA32_REGISTER_SET; typedef union _EFI_IP_ADDRESS EFI_IP_ADDRESS, *PEFI_IP_ADDRESS; typedef union _EFI_PXE_BASE_CODE_PACKET EFI_PXE_BASE_CODE_PACKET, *PEFI_PXE_BASE_CODE_PACKET; typedef union _LARGE_INTEGER LARGE_INTEGER, *PLARGE_INTEGER; diff --git a/sdk/xtdk/xtuefi.h b/sdk/xtdk/xtuefi.h index d89aa11..4d76de7 100644 --- a/sdk/xtdk/xtuefi.h +++ b/sdk/xtdk/xtuefi.h @@ -339,6 +339,7 @@ #define EFI_GLOBAL_VARIABLE_GUID {0x8BE4DF61, 0x93CA, 0x11D2, {0xAA, 0x0D, 0x00, 0xE0, 0x98, 0x03, 0x2B, 0x8C}} #define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID {0x9042A9DE, 0x23DC, 0x4A38, {0x96, 0xFB, 0x7A, 0xDE, 0xD0, 0x80, 0x51, 0x6A}} #define EFI_HASH_PROTOCOL_GUID {0xC5184932, 0xDBA5, 0x46DB, {0xA5, 0xBA, 0xCC, 0x0B, 0xDA, 0x9C, 0x14, 0x35}} +#define EFI_LEGACY_BIOS_PROTOCOL_GUID {0xDB9A1E3D, 0x45CB, 0x4ABB, {0x85, 0x3B, 0xE5, 0x38, 0x7F, 0xDB, 0x2E, 0x2D}} #define EFI_LOAD_FILE_PROTOCOL_GUID {0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B}} #define EFI_LOADED_IMAGE_PROTOCOL_GUID {0x5B1B31A1, 0x9562, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B}} #define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID {0xBC62157E, 0x3E33, 0x4FEC, {0x99, 0x20, 0x2D, 0x3B, 0x36, 0xD7, 0x50, 0xDF}} @@ -785,6 +786,18 @@ typedef EFI_STATUS (*PEFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL_GET_MODE)(IN PEFI_ typedef EFI_STATUS (*PEFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL_SET_MODE)(IN PEFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL This, IN UINT32 HorizontalResolution, IN UINT32 VerticalResolution, IN UINT32 ColorDepth, IN UINT32 RefreshRate); typedef EFI_STATUS (*PEFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL_BLT)(IN PEFI_UNIVERSAL_GRAPHICS_ADAPTER_PROTOCOL This, IN PEFI_UNIVERSAL_GRAPHICS_BLT_PIXEL BltBuffer, IN EFI_UNIVERSA_GRAPHICS_BLT_OPERATION BltOperation, IN UINT_PTR SourceX, IN UINT_PTR SourceY, IN UINT_PTR DestinationX, IN UINT_PTR DestinationY, IN UINT_PTR Width, IN UINT_PTR Height, IN UINT_PTR Delta); typedef EFI_STATUS (*PEFI_EDID_OVERRIDE_PROTOCOL_GET_EDID)(IN PEFI_EDID_OVERRIDE_PROTOCOL This, IN PEFI_HANDLE ChildHandle, OUT PUINT32 Attributes, IN OUT PUINT_PTR EdidSize, IN OUT PUINT8 *Edid); +typedef EFI_STATUS (*PEFI_LEGACY_BIOS_BOOT)(IN PEFI_LEGACY_BIOS_PROTOCOL This, IN PEFI_BBS_BBS_DEVICE_PATH BootOption, IN UINT32 LoadOptionsSize, IN PVOID LoadOptions); +typedef EFI_STATUS (*PEFI_LEGACY_BIOS_BOOT_UNCONVENTIONAL_DEVICE)(IN PEFI_LEGACY_BIOS_PROTOCOL This, IN EFI_UDC_ATTRIBUTES Attributes, IN UINT_PTR BbsEntry, IN PVOID BeerData, IN PVOID ServiceAreaData); +typedef EFI_STATUS (*PEFI_LEGACY_BIOS_CHECK_ROM)(IN PEFI_LEGACY_BIOS_PROTOCOL This, IN EFI_HANDLE PciHandle, OUT PVOID *RomImage, OUT PUINT_PTR RomSize, OUT PUINT_PTR Flags); +typedef EFI_STATUS (*PEFI_LEGACY_BIOS_COPY_LEGACY_REGION)(IN PEFI_LEGACY_BIOS_PROTOCOL This, IN UINT_PTR LegacyMemorySize, IN VOID *LegacyMemoryAddress, IN VOID *LegacyMemorySourceAddress); +typedef BOOLEAN (*PEFI_LEGACY_BIOS_FARCALL86)(IN PEFI_LEGACY_BIOS_PROTOCOL This, IN UINT16 Segment, IN UINT16 Offset, IN PEFI_IA32_REGISTER_SET Regs, IN PVOID Stack, IN UINT_PTR StackSize); +typedef EFI_STATUS (*PEFI_LEGACY_BIOS_GET_BBS_INFO)(IN PEFI_LEGACY_BIOS_PROTOCOL This, OUT PUINT16 HddCount, OUT PEFI_HDD_INFO *HddInfo, OUT PUINT16 BbsCount, IN OUT PEFI_BBS_TABLE *BbsTable); +typedef EFI_STATUS (*PEFI_LEGACY_BIOS_GET_LEGACY_REGION)(IN PEFI_LEGACY_BIOS_PROTOCOL This, IN UINT_PTR LegacyMemorySize, IN UINT_PTR Region, IN UINT_PTR Alignment, OUT PVOID *LegacyMemoryAddress); +typedef EFI_STATUS (*PEFI_LEGACY_BIOS_INSTALL_ROM)(IN PEFI_LEGACY_BIOS_PROTOCOL This, IN EFI_HANDLE PciHandle, IN PVOID *RomImage, OUT PUINT_PTR Flags, OUT PUINT8 DiskStart, OUT PUINT8 DiskEnd, OUT PVOID *RomShadowAddress, OUT PUINT32 ShadowedRomSize); +typedef BOOLEAN (*PEFI_LEGACY_BIOS_INT86)(IN PEFI_LEGACY_BIOS_PROTOCOL This, IN UINT8 BiosInt, IN OUT PEFI_IA32_REGISTER_SET Regs); +typedef EFI_STATUS (*PEFI_LEGACY_BIOS_PREPARE_TO_BOOT_EFI)(IN PEFI_LEGACY_BIOS_PROTOCOL This, OUT PUINT16 BbsCount, OUT PEFI_BBS_TABLE *BbsTable); +typedef EFI_STATUS (*PEFI_LEGACY_BIOS_SHADOW_ALL_LEGACY_OPROMS)(IN PEFI_LEGACY_BIOS_PROTOCOL This); +typedef EFI_STATUS (*PEFI_LEGACY_BIOS_UPDATE_KEYBOARD_LED_STATUS)(IN PEFI_LEGACY_BIOS_PROTOCOL This, IN UINT8 Leds); typedef EFI_STATUS (*PEFI_SERVICE_BINDING_CREATE_CHILD)(IN PEFI_SERVICE_BINDING This, IN PEFI_HANDLE ChildHandle); typedef EFI_STATUS (*PEFI_SERVICE_BINDING_DESTROY_CHILD)(IN PEFI_SERVICE_BINDING This, IN EFI_HANDLE ChildHandle); typedef EFI_STATUS (*PEFI_DRIVER_BINDING_PROTOCOL_SUPPORTED)(IN PEFI_DRIVER_BINDING_PROTOCOL This, IN EFI_HANDLE ControllerHandle, IN PEFI_DEVICE_PATH_PROTOCOL RemainingDevicePath); @@ -1953,6 +1966,208 @@ typedef struct _EFI_EDID_OVERRIDE_PROTOCOL PEFI_EDID_OVERRIDE_PROTOCOL_GET_EDID GetEdid; } EFI_EDID_OVERRIDE_PROTOCOL, *PEFI_EDID_OVERRIDE_PROTOCOL; +/* EFI BBS status flags */ +typedef struct _EFI_BBS_STATUS_FLAGS +{ + UINT16 OldPosition:4; + UINT16 Reserved1:4; + UINT16 Enabled:1; + UINT16 Failed:1; + UINT16 MediaPresent:2; + UINT16 Reserved2:4; +} EFI_BBS_STATUS_FLAGS, *PEFI_BBS_STATUS_FLAGS; + +/* EFI BBS table */ +typedef struct _EFI_BBS_TABLE +{ + UINT16 BootPriority; + UINT32 Bus; + UINT32 Device; + UINT32 Function; + UINT8 Class; + UINT8 SubClass; + UINT16 MfgStringOffset; + UINT16 MfgStringSegment; + UINT16 DeviceType; + EFI_BBS_STATUS_FLAGS StatusFlags; + UINT16 BootHandlerOffset; + UINT16 BootHandlerSegment; + UINT16 DescStringOffset; + UINT16 DescStringSegment; + UINT32 InitPerReserved; + UINT32 AdditionalIrq13Handler; + UINT32 AdditionalIrq18Handler; + UINT32 AdditionalIrq19Handler; + UINT32 AdditionalIrq40Handler; + UINT8 AssignedDriveNumber; + UINT32 AdditionalIrq41Handler; + UINT32 AdditionalIrq46Handler; + UINT32 IBV1; + UINT32 IBV2; +} EFI_BBS_TABLE, *PEFI_BBS_TABLE; + +/* EFI ATAPI identify data */ +typedef struct _EFI_ATAPI_IDENTIFY +{ + UINT16 Raw[256]; +} EFI_ATAPI_IDENTIFY, *PEFI_ATAPI_IDENTIFY; + +/* EFI HDD info structure */ +typedef struct _EFI_HDD_INFO +{ + UINT16 Status; + UINT32 Bus; + UINT32 Device; + UINT32 Function; + UINT16 CommandBaseAddress; + UINT16 ControlBaseAddress; + UINT16 BusMasterAddress; + UINT8 HddIrq; + EFI_ATAPI_IDENTIFY IdentifyDrive[2]; +} EFI_HDD_INFO, *PEFI_HDD_INFO; + +/* EFI x86 EFLAGS register set */ +typedef struct _EFI_EFLAGS_REG +{ + UINT32 CF:1; + UINT32 Reserved1:1; + UINT32 PF:1; + UINT32 Reserved2:1; + UINT32 AF:1; + UINT32 Reserved3:1; + UINT32 ZF:1; + UINT32 SF:1; + UINT32 TF:1; + UINT32 IF:1; + UINT32 DF:1; + UINT32 OF:1; + UINT32 IOPL:2; + UINT32 NT:1; + UINT32 Reserved4:2; + UINT32 VM:1; + UINT32 Reserved5:14; +} EFI_EFLAGS_REG, *PEFI_EFLAGS_REG; + +/* EFI x86 FLAGS register set */ +typedef struct _EFI_FLAGS_REG +{ + UINT16 CF:1; + UINT16 Reserved1:1; + UINT16 PF:1; + UINT16 Reserved2:1; + UINT16 AF:1; + UINT16 Reserved3:1; + UINT16 ZF:1; + UINT16 SF:1; + UINT16 TF:1; + UINT16 IF:1; + UINT16 DF:1; + UINT16 OF:1; + UINT16 IOPL:2; + UINT16 NT:1; + UINT16 Reserved4:1; +} EFI_FLAGS_REG, *PEFI_FLAGS_REG; + +/* EFI x86 BYTE register set */ +typedef struct _EFI_BYTE_REGS +{ + UINT8 AL; + UINT8 AH; + UINT16 ReservedAX; + UINT8 BL; + UINT8 BH; + UINT16 ReservedBX; + UINT8 CL; + UINT8 CH; + UINT16 ReservedCX; + UINT8 DL; + UINT8 DH; + UINT16 ReservedDX; +} EFI_BYTE_REGS, *PEFI_BYTE_REGS; + +/* EFI x86 DWORD register set */ +typedef struct _EFI_DWORD_REGS +{ + UINT32 EAX; + UINT32 EBX; + UINT32 ECX; + UINT32 EDX; + UINT32 ESI; + UINT32 EDI; + EFI_EFLAGS_REG EFlags; + UINT16 ES; + UINT16 CS; + UINT16 SS; + UINT16 DS; + UINT16 FS; + UINT16 GS; + UINT32 EBP; + UINT32 ESP; +} EFI_DWORD_REGS, *PEFI_DWORD_REGS; + +/* EFI x86 WORD register set */ +typedef struct _EFI_WORD_REGS +{ + UINT16 AX; + UINT16 ReservedAX; + UINT16 BX; + UINT16 ReservedBX; + UINT16 CX; + UINT16 ReservedCX; + UINT16 DX; + UINT16 ReservedDX; + UINT16 SI; + UINT16 ReservedSI; + UINT16 DI; + UINT16 ReservedDI; + EFI_FLAGS_REG Flags; + UINT16 ReservedFlags; + UINT16 ES; + UINT16 CS; + UINT16 SS; + UINT16 DS; + UINT16 FS; + UINT16 GS; + UINT16 BP; + UINT16 ReservedBP; + UINT16 SP; + UINT16 ReservedSP; +} EFI_WORD_REGS, *PEFI_WORD_REGS; + +/* EFI x86 register set union */ +typedef union _EFI_IA32_REGISTER_SET +{ + EFI_DWORD_REGS E; + EFI_WORD_REGS X; + EFI_BYTE_REGS H; +} EFI_IA32_REGISTER_SET, *PEFI_IA32_REGISTER_SET; + +/* EFI legacy BIOS (CSM) support protocol */ +typedef struct _EFI_LEGACY_BIOS_PROTOCOL +{ + PEFI_LEGACY_BIOS_INT86 Int86; + PEFI_LEGACY_BIOS_FARCALL86 FarCall86; + PEFI_LEGACY_BIOS_CHECK_ROM CheckPciRom; + PEFI_LEGACY_BIOS_INSTALL_ROM InstallPciRom; + PEFI_LEGACY_BIOS_BOOT LegacyBoot; + PEFI_LEGACY_BIOS_UPDATE_KEYBOARD_LED_STATUS UpdateKeyboardLedStatus; + PEFI_LEGACY_BIOS_GET_BBS_INFO GetBbsInfo; + PEFI_LEGACY_BIOS_SHADOW_ALL_LEGACY_OPROMS ShadowAllLegacyOproms; + PEFI_LEGACY_BIOS_PREPARE_TO_BOOT_EFI PrepareToBootEfi; + PEFI_LEGACY_BIOS_GET_LEGACY_REGION GetLegacyRegion; + PEFI_LEGACY_BIOS_COPY_LEGACY_REGION CopyLegacyRegion; + PEFI_LEGACY_BIOS_BOOT_UNCONVENTIONAL_DEVICE BootUnconventionalDevice; +} EFI_LEGACY_BIOS_PROTOCOL, *PEFI_LEGACY_BIOS_PROTOCOL; + +/* EFI UDC attributes */ +typedef struct _EFI_UDC_ATTRIBUTES +{ + UINT8 DirectoryServiceValidity:1; + UINT8 RabcaUsedFlag:1; + UINT8 ExecuteHddDiagnosticsFlag:1; + UINT8 Reserved:5; +} EFI_UDC_ATTRIBUTES, *PEFI_UDC_ATTRIBUTES; + /* EFI Service binding */ typedef struct _EFI_SERVICE_BINDING {