]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Core/Pei/Dispatcher/Dispatcher.c
Clean up MSA file of the checked in modules which include:
[mirror_edk2.git] / EdkModulePkg / Core / Pei / Dispatcher / Dispatcher.c
index 1eb5a4a0204486ce76c6def7dae81ecbed425855..4cf44523ed02ccd232e3df491be587b62cbda80b 100644 (file)
@@ -23,14 +23,12 @@ Revision History
 \r
 #include <PeiMain.h>\r
 \r
+STATIC\r
 VOID *\r
 TransferOldDataToNewDataRange (\r
   IN PEI_CORE_INSTANCE        *PrivateData\r
   );\r
 \r
-EFI_GUID gEfiPeiCorePrivateGuid = EFI_PEI_CORE_PRIVATE_GUID;\r
-\r
-\r
 EFI_STATUS\r
 PeiDispatcher (\r
   IN EFI_PEI_STARTUP_DESCRIPTOR  *PeiStartupDescriptor,\r
@@ -63,6 +61,7 @@ Returns:
   BOOLEAN                           NextFvFound;\r
   EFI_FIRMWARE_VOLUME_HEADER        *NextFvAddress;\r
   EFI_FIRMWARE_VOLUME_HEADER        *DefaultFvAddress;\r
+  VOID                              *TopOfStack;\r
   //\r
   // Debug data for uninstalled Peim list\r
   //\r
@@ -105,7 +104,7 @@ Returns:
       //\r
       if (Status == EFI_SUCCESS) {\r
 \r
-        DEBUG_CODE (\r
+        DEBUG_CODE_BEGIN ();\r
 \r
           //\r
           // Fill list of found Peims for later list of those not installed\r
@@ -116,7 +115,7 @@ Returns:
             sizeof (EFI_GUID)\r
             );\r
 \r
-        );\r
+        DEBUG_CODE_END ();\r
 \r
         if (!Dispatched (\r
                DispatchData->CurrentPeim,\r
@@ -204,16 +203,18 @@ Returns:
                 PrivateDataInMem = (UINTN) TransferOldDataToNewDataRange (PrivateData);\r
                 ASSERT (PrivateDataInMem != 0);\r
                 //\r
-                //Subtract 0x10 from the 4th parameter indicating the new stack base,\r
-                //in order to provide buffer protection against possible illegal stack\r
-                //access that might corrupt the stack.\r
+                // Adjust the top of stack to be aligned at CPU_STACK_ALIGNMENT\r
                 //\r
-                SwitchStack (\r
+                TopOfStack = (VOID *)((UINTN)PrivateData->StackBase + (UINTN)PrivateData->StackSize - CPU_STACK_ALIGNMENT);\r
+                TopOfStack = ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT);\r
+\r
+                PeiSwitchStacks (\r
                   (SWITCH_STACK_ENTRY_POINT)(UINTN)TempPtr.Raw,\r
                   PeiStartupDescriptor,\r
                   (VOID*)PrivateDataInMem,\r
-                  (VOID*)((UINTN)PrivateData->StackBase + (UINTN)PrivateData->StackSize)\r
-                );\r
+                  TopOfStack,\r
+                  (VOID*)(UINTN)PrivateData->StackBase\r
+                  );\r
               }\r
             }\r
           }\r
@@ -320,7 +321,7 @@ Returns:
     DispatchData->CurrentFvAddress = DefaultFvAddress;\r
   }\r
 \r
-  DEBUG_CODE (\r
+  DEBUG_CODE_BEGIN ();\r
     //\r
     // Debug data for uninstalled Peim list\r
     //\r
@@ -346,9 +347,9 @@ Returns:
       DebugNotDispatchedBitmap >>= 1;\r
     }\r
 \r
-  );\r
+  DEBUG_CODE_END ();\r
 \r
-   return EFI_NOT_FOUND;\r
+  return EFI_NOT_FOUND;\r
 }\r
 \r
 VOID\r
@@ -503,7 +504,7 @@ Returns:
   return Runnable;\r
 }\r
 \r
-\r
+STATIC\r
 VOID *\r
 TransferOldDataToNewDataRange (\r
   IN PEI_CORE_INSTANCE        *PrivateData\r
@@ -525,6 +526,9 @@ Returns:
 \r
 --*/\r
 {\r
+  //\r
+  //Build private HOB to PEI core to transfer old NEM-range data to new NEM-range\r
+  //\r
   return BuildGuidDataHob (&gEfiPeiCorePrivateGuid, PrivateData, sizeof (PEI_CORE_INSTANCE));\r
 }\r
 \r