+ Status = PeiServicesRegisterForShadow (FileHandle);\r
+ if (Status == EFI_ALREADY_STARTED) {\r
+ //\r
+ // This is now starting in memory, the second time starting.\r
+ //\r
+ EFI_PEI_PPI_DESCRIPTOR *OldPpiList;\r
+ EFI_PEI_PPI_DESCRIPTOR *OldPpiList2;\r
+ VOID *Ppi;\r
+ VOID *Ppi2;\r
+\r
+ OldPpiList = NULL;\r
+ Status = PeiServicesLocatePpi (\r
+ &gPcdPpiGuid,\r
+ 0,\r
+ &OldPpiList,\r
+ &Ppi\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ if (OldPpiList != NULL) {\r
+ Status = PeiServicesReInstallPpi (OldPpiList, &mPpiList[0]);\r
+ ASSERT_EFI_ERROR (Status);\r
+ }\r
+\r
+ OldPpiList2 = NULL;\r
+ Status = PeiServicesLocatePpi (\r
+ &gGetPcdInfoPpiGuid,\r
+ 0,\r
+ &OldPpiList2,\r
+ &Ppi2\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ if (OldPpiList2 != NULL) {\r
+ Status = PeiServicesReInstallPpi (OldPpiList2, &mPpiList2[0]);\r
+ ASSERT_EFI_ERROR (Status);\r
+ }\r
+\r
+ OldPpiList = NULL;\r
+ Status = PeiServicesLocatePpi (\r
+ &gEfiPeiPcdPpiGuid,\r
+ 0,\r
+ &OldPpiList,\r
+ &Ppi\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ if (OldPpiList != NULL) {\r
+ Status = PeiServicesReInstallPpi (OldPpiList, &mPpiList[1]);\r
+ ASSERT_EFI_ERROR (Status);\r
+ }\r
+\r
+ OldPpiList2 = NULL;\r
+ Status = PeiServicesLocatePpi (\r
+ &gEfiGetPcdInfoPpiGuid,\r
+ 0,\r
+ &OldPpiList2,\r
+ &Ppi2\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ if (OldPpiList2 != NULL) {\r
+ Status = PeiServicesReInstallPpi (OldPpiList2, &mPpiList2[1]);\r
+ ASSERT_EFI_ERROR (Status);\r
+ }\r
+\r
+ return Status;\r
+ }\r
+\r