1 /** @file 2 Defines the data structure that is the volume header found at the beginning of 3 all firmware volumes that are either memory mapped or have an 4 associated FirmwareVolumeBlock protocol. 5 6 Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR> 7 This program and the accompanying materials are licensed and made available under 8 the terms and conditions of the BSD License that accompanies this distribution. 9 The full text of the license may be found at 10 http://opensource.org/licenses/bsd-license.php. 11 12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 14 15 @par Revision Reference: 16 These definitions are from the Firmware Volume Block Spec 0.9. 17 18 **/ 19 20 #ifndef __EFI_FIRMWARE_VOLUME_HEADER_H__ 21 #define __EFI_FIRMWARE_VOLUME_HEADER_H__ 22 23 /// 24 /// Firmware Volume Block Attributes bit definitions. 25 ///@{ 26 #define EFI_FVB_READ_DISABLED_CAP 0x00000001 27 #define EFI_FVB_READ_ENABLED_CAP 0x00000002 28 #define EFI_FVB_READ_STATUS 0x00000004 29 30 #define EFI_FVB_WRITE_DISABLED_CAP 0x00000008 31 #define EFI_FVB_WRITE_ENABLED_CAP 0x00000010 32 #define EFI_FVB_WRITE_STATUS 0x00000020 33 34 #define EFI_FVB_LOCK_CAP 0x00000040 35 #define EFI_FVB_LOCK_STATUS 0x00000080 36 37 #define EFI_FVB_STICKY_WRITE 0x00000200 38 #define EFI_FVB_MEMORY_MAPPED 0x00000400 39 #define EFI_FVB_ERASE_POLARITY 0x00000800 40 41 #define EFI_FVB_ALIGNMENT_CAP 0x00008000 42 #define EFI_FVB_ALIGNMENT_2 0x00010000 43 #define EFI_FVB_ALIGNMENT_4 0x00020000 44 #define EFI_FVB_ALIGNMENT_8 0x00040000 45 #define EFI_FVB_ALIGNMENT_16 0x00080000 46 #define EFI_FVB_ALIGNMENT_32 0x00100000 47 #define EFI_FVB_ALIGNMENT_64 0x00200000 48 #define EFI_FVB_ALIGNMENT_128 0x00400000 49 #define EFI_FVB_ALIGNMENT_256 0x00800000 50 #define EFI_FVB_ALIGNMENT_512 0x01000000 51 #define EFI_FVB_ALIGNMENT_1K 0x02000000 52 #define EFI_FVB_ALIGNMENT_2K 0x04000000 53 #define EFI_FVB_ALIGNMENT_4K 0x08000000 54 #define EFI_FVB_ALIGNMENT_8K 0x10000000 55 #define EFI_FVB_ALIGNMENT_16K 0x20000000 56 #define EFI_FVB_ALIGNMENT_32K 0x40000000 57 #define EFI_FVB_ALIGNMENT_64K 0x80000000 58 ///@} 59 60 /// This is a simple macro defined as the set of all FV Block Attributes signifying capabilities. 61 #define EFI_FVB_CAPABILITIES ( EFI_FVB_READ_DISABLED_CAP | \ 62 EFI_FVB_READ_ENABLED_CAP | \ 63 EFI_FVB_WRITE_DISABLED_CAP | \ 64 EFI_FVB_WRITE_ENABLED_CAP | \ 65 EFI_FVB_LOCK_CAP \ 66 ) 67 68 /** A parameterized macro defining a boolean expression that tests the state of a particular bit. 69 * 70 * @param FvbAttributes Indicates a test for CLEAR if EFI_FVB_ERASE_POLARITY is 1, else test for SET. 71 * 72 * @param TestAttributes The set of bits to test. 73 * 74 * @param Bit A value indicating the bit(s) to test. 75 * If multiple bits are set, the logical OR of their tests is the expression's value. 76 **/ 77 #define EFI_TEST_FFS_ATTRIBUTES_BIT( FvbAttributes, TestAttributes, Bit) \ 78 ((BOOLEAN) \ 79 ((FvbAttributes & EFI_FVB_ERASE_POLARITY) ? (((~TestAttributes) & Bit) == Bit) : ((TestAttributes & Bit) == Bit)) \ 80 ) 81 82 /// A simple macro defined as the set of all FV Block Attribute bits that indicate status. 83 #define EFI_FVB_STATUS (EFI_FVB_READ_STATUS | EFI_FVB_WRITE_STATUS | EFI_FVB_LOCK_STATUS) 84 85 #endif /* __EFI_FIRMWARE_VOLUME_HEADER_H__ */ 86