]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg PeiCore: Make SetPeiServicesTablePointer() early in EntryPoint
authorLiming Gao <liming.gao@intel.com>
Wed, 23 Nov 2016 04:51:29 +0000 (12:51 +0800)
committerLiming Gao <liming.gao@intel.com>
Tue, 29 Nov 2016 03:31:51 +0000 (11:31 +0800)
Make SetPeiServicesTablePointer() earlier than ProcessLibraryConstructorList()
so the constructor() function can get the correct pei service table pointer.

https://bugzilla.tianocore.org/show_bug.cgi?id=238

Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
MdeModulePkg/Core/Pei/PeiMain/PeiMain.c

index fed34f3552fdf221efdde00c7bb4a5a5fb366bcb..27484bafc575390feeded22d53e0f274011a3e1e 100644 (file)
@@ -207,16 +207,16 @@ PeiCore (
         OldCoreData->FileHandles          = (EFI_PEI_FILE_HANDLE *) ((UINT8 *) OldCoreData->FileHandles - OldCoreData->HeapOffset);\r
       }\r
 \r
-      //\r
-      // Initialize libraries that the PEI Core is linked against\r
-      //\r
-      ProcessLibraryConstructorList (NULL, (CONST EFI_PEI_SERVICES **)&OldCoreData->Ps);\r
-      \r
       //\r
       // Fixup for PeiService's address\r
       //\r
       SetPeiServicesTablePointer ((CONST EFI_PEI_SERVICES **)&OldCoreData->Ps);\r
 \r
+      //\r
+      // Initialize libraries that the PEI Core is linked against\r
+      //\r
+      ProcessLibraryConstructorList (NULL, (CONST EFI_PEI_SERVICES **)&OldCoreData->Ps);\r
+\r
       //\r
       // Update HandOffHob for new installed permanent memory\r
       //\r
@@ -302,14 +302,14 @@ PeiCore (
   PrivateData.Ps = &PrivateData.ServiceTableShadow;\r
 \r
   //\r
-  // Initialize libraries that the PEI Core is linked against\r
+  // Save PeiServicePointer so that it can be retrieved anywhere.\r
   //\r
-  ProcessLibraryConstructorList (NULL, (CONST EFI_PEI_SERVICES **)&PrivateData.Ps);\r
+  SetPeiServicesTablePointer ((CONST EFI_PEI_SERVICES **)&PrivateData.Ps);\r
 \r
   //\r
-  // Save PeiServicePointer so that it can be retrieved anywhere.\r
+  // Initialize libraries that the PEI Core is linked against\r
   //\r
-  SetPeiServicesTablePointer ((CONST EFI_PEI_SERVICES **)&PrivateData.Ps);\r
+  ProcessLibraryConstructorList (NULL, (CONST EFI_PEI_SERVICES **)&PrivateData.Ps);\r
 \r
   //\r
   // Initialize PEI Core Services\r