From d4468cdf14e37bdbb35bff98c04e984d0622fcd1 Mon Sep 17 00:00:00 2001 From: Ruiyu Ni Date: Wed, 18 Dec 2013 05:51:22 +0000 Subject: Rollback the change to EFI_BOOT_KEY_DATA structure since UEFI Spec adds the clarification that bitfields are ordered such that bit 0 is the least significant bit. Signed-off-by: Ruiyu Ni git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15000 6f19259b-4bc3-4df7-8a09-765794883524 --- MdePkg/Include/Uefi/UefiSpec.h | 75 ++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 35 deletions(-) (limited to 'MdePkg/Include') diff --git a/MdePkg/Include/Uefi/UefiSpec.h b/MdePkg/Include/Uefi/UefiSpec.h index e6819aa28b..168ebf511e 100644 --- a/MdePkg/Include/Uefi/UefiSpec.h +++ b/MdePkg/Include/Uefi/UefiSpec.h @@ -2043,41 +2043,46 @@ EFI_STATUS /// /// EFI Boot Key Data /// -typedef UINT32 EFI_BOOT_KEY_DATA; -/// -/// Indicates the revision of the EFI_KEY_OPTION structure. This revision level should be 0. -/// -#define EFI_KEY_OPTION_REVISION_MASK 0x000000FF -/// -/// Either the left or right Shift keys must be pressed (1) or must not be pressed (0). -/// -#define EFI_KEY_OPTION_SHIFT_PRESSED_MASK BIT8 -/// -/// Either the left or right Control keys must be pressed (1) or must not be pressed (0). -/// -#define EFI_KEY_OPTION_CONTROL_PRESSED_MASK BIT9 -/// -/// Either the left or right Alt keys must be pressed (1) or must not be pressed (0). -/// -#define EFI_KEY_OPTION_ALT_PRESSED_MASK BIT10 -/// -/// Either the left or right Logo keys must be pressed (1) or must not be pressed (0). -/// -#define EFI_KEY_OPTION_LOGO_PRESSED_MASK BIT11 -/// -/// The Menu key must be pressed (1) or must not be pressed (0). -/// -#define EFI_KEY_OPTION_MENU_PRESSED_MASK BIT12 -/// -/// The SysReq key must be pressed (1) or must not be pressed (0). -/// -#define EFI_KEY_OPTION_SYS_REQ_PRESSED_MASK BIT13 -/// -/// Specifies the actual number of entries in EFI_KEY_OPTION.Keys, from 0-3. If -/// zero, then only the shift state is considered. If more than one, then the boot option will -/// only be launched if all of the specified keys are pressed with the same shift state. -/// -#define EFI_KEY_OPTION_INPUT_KEY_COUNT_MASK (BIT30 | BIT31) +typedef union { + struct { + /// + /// Indicates the revision of the EFI_KEY_OPTION structure. This revision level should be 0. + /// + UINT32 Revision : 8; + /// + /// Either the left or right Shift keys must be pressed (1) or must not be pressed (0). + /// + UINT32 ShiftPressed : 1; + /// + /// Either the left or right Control keys must be pressed (1) or must not be pressed (0). + /// + UINT32 ControlPressed : 1; + /// + /// Either the left or right Alt keys must be pressed (1) or must not be pressed (0). + /// + UINT32 AltPressed : 1; + /// + /// Either the left or right Logo keys must be pressed (1) or must not be pressed (0). + /// + UINT32 LogoPressed : 1; + /// + /// The Menu key must be pressed (1) or must not be pressed (0). + /// + UINT32 MenuPressed : 1; + /// + /// The SysReq key must be pressed (1) or must not be pressed (0). + /// + UINT32 SysReqPressed : 1; + UINT32 Reserved : 16; + /// + /// Specifies the actual number of entries in EFI_KEY_OPTION.Keys, from 0-3. If + /// zero, then only the shift state is considered. If more than one, then the boot option will + /// only be launched if all of the specified keys are pressed with the same shift state. + /// + UINT32 InputKeyCount : 2; + } Options; + UINT32 PackedValue; +} EFI_BOOT_KEY_DATA; /// /// EFI Key Option. -- cgit v1.2.3