]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Csm/Include/Framework/FirmwareVolumeHeader.h
OvmfPkg: Copy the required CSM components from framework packages
[mirror_edk2.git] / OvmfPkg / Csm / Include / Framework / FirmwareVolumeHeader.h
diff --git a/OvmfPkg/Csm/Include/Framework/FirmwareVolumeHeader.h b/OvmfPkg/Csm/Include/Framework/FirmwareVolumeHeader.h
new file mode 100644 (file)
index 0000000..e2b5a28
--- /dev/null
@@ -0,0 +1,79 @@
+/** @file\r
+  Defines the data structure that is the volume header found at the beginning of\r
+  all firmware volumes that are either memory mapped or have an\r
+  associated FirmwareVolumeBlock protocol.\r
+\r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+  @par Revision Reference:\r
+  These definitions are from the Firmware Volume Block Spec 0.9.\r
+\r
+**/\r
+\r
+#ifndef __EFI_FIRMWARE_VOLUME_HEADER_H__\r
+#define __EFI_FIRMWARE_VOLUME_HEADER_H__\r
+\r
+///\r
+/// Firmware Volume Block Attributes bit definitions.\r
+///@{\r
+#define EFI_FVB_READ_DISABLED_CAP   0x00000001\r
+#define EFI_FVB_READ_ENABLED_CAP    0x00000002\r
+#define EFI_FVB_READ_STATUS         0x00000004\r
+\r
+#define EFI_FVB_WRITE_DISABLED_CAP  0x00000008\r
+#define EFI_FVB_WRITE_ENABLED_CAP   0x00000010\r
+#define EFI_FVB_WRITE_STATUS        0x00000020\r
+\r
+#define EFI_FVB_LOCK_CAP            0x00000040\r
+#define EFI_FVB_LOCK_STATUS         0x00000080\r
+\r
+#define EFI_FVB_STICKY_WRITE        0x00000200\r
+#define EFI_FVB_MEMORY_MAPPED       0x00000400\r
+#define EFI_FVB_ERASE_POLARITY      0x00000800\r
+\r
+#define EFI_FVB_ALIGNMENT_CAP       0x00008000\r
+#define EFI_FVB_ALIGNMENT_2         0x00010000\r
+#define EFI_FVB_ALIGNMENT_4         0x00020000\r
+#define EFI_FVB_ALIGNMENT_8         0x00040000\r
+#define EFI_FVB_ALIGNMENT_16        0x00080000\r
+#define EFI_FVB_ALIGNMENT_32        0x00100000\r
+#define EFI_FVB_ALIGNMENT_64        0x00200000\r
+#define EFI_FVB_ALIGNMENT_128       0x00400000\r
+#define EFI_FVB_ALIGNMENT_256       0x00800000\r
+#define EFI_FVB_ALIGNMENT_512       0x01000000\r
+#define EFI_FVB_ALIGNMENT_1K        0x02000000\r
+#define EFI_FVB_ALIGNMENT_2K        0x04000000\r
+#define EFI_FVB_ALIGNMENT_4K        0x08000000\r
+#define EFI_FVB_ALIGNMENT_8K        0x10000000\r
+#define EFI_FVB_ALIGNMENT_16K       0x20000000\r
+#define EFI_FVB_ALIGNMENT_32K       0x40000000\r
+#define EFI_FVB_ALIGNMENT_64K       0x80000000\r
+///@}\r
+\r
+/// This is a simple macro defined as the set of all FV Block Attributes signifying capabilities.\r
+#define EFI_FVB_CAPABILITIES  ( EFI_FVB_READ_DISABLED_CAP  | \\r
+                                EFI_FVB_READ_ENABLED_CAP   | \\r
+                                EFI_FVB_WRITE_DISABLED_CAP | \\r
+                                EFI_FVB_WRITE_ENABLED_CAP  | \\r
+                                EFI_FVB_LOCK_CAP \\r
+                              )\r
+\r
+/** A parameterized macro defining a boolean expression that tests the state of a particular bit.\r
+  *\r
+  * @param FvbAttributes  Indicates a test for CLEAR if EFI_FVB_ERASE_POLARITY is 1, else test for SET.\r
+  *\r
+  * @param TestAttributes The set of bits to test.\r
+  *\r
+  * @param Bit            A value indicating the bit(s) to test.\r
+  *                       If multiple bits are set, the logical OR of their tests is the expression's value.\r
+**/\r
+#define EFI_TEST_FFS_ATTRIBUTES_BIT( FvbAttributes, TestAttributes, Bit) \\r
+    ((BOOLEAN) \\r
+      ((FvbAttributes & EFI_FVB_ERASE_POLARITY) ? (((~TestAttributes) & Bit) == Bit) : ((TestAttributes & Bit) == Bit)) \\r
+    )\r
+\r
+/// A simple macro defined as the set of all FV Block Attribute bits that indicate status.\r
+#define EFI_FVB_STATUS    (EFI_FVB_READ_STATUS | EFI_FVB_WRITE_STATUS | EFI_FVB_LOCK_STATUS)\r
+\r
+#endif  /* __EFI_FIRMWARE_VOLUME_HEADER_H__ */\r