\r
extern EFI_GUID gEfiPeiCorePrivateGuid;\r
\r
+#define PEI_CORE_INTERNAL_FFS_FILE_DISPATCH_TYPE 0xff\r
+\r
//\r
// Pei Core private data structures\r
//\r
PEI_PPI_LIST_POINTERS PpiListPtrs[MAX_PPI_DESCRIPTORS];\r
} PEI_PPI_DATABASE;\r
\r
+\r
+#define PEI_CORE_MAX_FV_SUPPORTED 4\r
+#define PEI_CORE_MAX_PEIM_PER_FV 32\r
+\r
+//\r
+// PEI_CORE_FV_HANDE.PeimState\r
+// Do not change these values as there is code doing math to change states.\r
+// Look for Private->Fv[FvCount].PeimState[PeimCount]++;\r
+//\r
+#define PEIM_STATE_NOT_DISPATCHED 0x00\r
+#define PEIM_STATE_DISPATCHED 0x01\r
+#define PEIM_STATE_REGISITER_FOR_SHADOW 0x02\r
+#define PEIM_STATE_DONE 0x03\r
+\r
+typedef struct {\r
+ EFI_FIRMWARE_VOLUME_HEADER *FvHeader;\r
+ UINT8 PeimState[PEI_CORE_MAX_PEIM_PER_FV]; \r
+ EFI_PEI_FILE_HANDLE FvFileHandles[PEI_CORE_MAX_PEIM_PER_FV];\r
+ BOOLEAN ScanFv;\r
+} PEI_CORE_FV_HANDLE;\r
+\r
typedef struct {\r
UINT8 CurrentPeim;\r
UINT8 CurrentFv;\r
EFI_PEI_SERVICES *PS; // Point to ServiceTableShadow\r
PEI_PPI_DATABASE PpiData;\r
PEI_CORE_DISPATCH_DATA DispatchData;\r
+ UINTN FvCount;\r
+ PEI_CORE_FV_HANDLE Fv[PEI_CORE_MAX_FV_SUPPORTED];\r
+ EFI_PEI_FILE_HANDLE CurrentFvFileHandles[PEI_CORE_MAX_PEIM_PER_FV];\r
+ UINTN AprioriCount;\r
+ UINTN CurrentPeimFvCount; \r
+ UINTN CurrentPeimCount;\r
+ EFI_PEI_FILE_HANDLE CurrentFileHandle;\r
+ UINTN AllFvCount;\r
+ EFI_PEI_FV_HANDLE AllFv[PEI_CORE_MAX_FV_SUPPORTED];\r
EFI_PEI_HOB_POINTERS HobList;\r
BOOLEAN SwitchStackSignal;\r
BOOLEAN PeiMemoryInstalled;\r