]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Pei/PeiMain.h
Add some definitions which will be used for future PI enabling.
[mirror_edk2.git] / MdeModulePkg / Core / Pei / PeiMain.h
index e13604169887cb8a0bf849e80f5572c4bb577750..023114750d5b4b054ff88605fb25141a28f20f52 100644 (file)
@@ -24,13 +24,32 @@ Revision History
 #ifndef _PEI_MAIN_H_\r
 #define _PEI_MAIN_H_\r
 \r
-//\r
-// Include common header file for this module.\r
-//\r
-#include "CommonHeader.h"\r
+#include <PiPei.h>\r
+#include <FrameworkPei.h>\r
+#include <Guid/StatusCodeDataTypeId.h>\r
+#include <Ppi/DxeIpl.h>\r
+#include <Ppi/MemoryDiscovered.h>\r
+#include <Ppi/FindFv.h>\r
+#include <Ppi/StatusCode.h>\r
+#include <Ppi/Security.h>\r
+#include <Ppi/Reset.h>\r
+#include <Ppi/FvLoadFile.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/PeiCoreEntryPoint.h>\r
+#include <Library/BaseLib.h>\r
+#include <Library/HobLib.h>\r
+#include <Library/PerformanceLib.h>\r
+#include <Library/PeiServicesLib.h>\r
+#include <Library/ReportStatusCodeLib.h>\r
+#include <Library/PeCoffGetEntryPointLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
+#include <Library/TimerLib.h>\r
+#include <IndustryStandard/PeImage.h>\r
 \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
@@ -53,6 +72,27 @@ typedef struct {
   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
@@ -76,6 +116,15 @@ typedef struct{
   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
@@ -112,7 +161,7 @@ EFI_STATUS
 //\r
 typedef union {\r
   PEI_CORE_ENTRY_POINT         PeiCore;\r
-  EFI_PEIM_ENTRY_POINT         PeimEntry;\r
+  EFI_PEIM_ENTRY_POINT2        PeimEntry;\r
   EFI_PEIM_NOTIFY_ENTRY_POINT  PeimNotifyEntry;\r
   EFI_DXE_IPL_PPI              *DxeIpl;\r
   EFI_PEI_PPI_DESCRIPTOR       *PpiDescriptor;\r