]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseLib/SwitchStack.c
Fix a bug in MdePkg BaseLib: StrnCat() and AsciiStrnCat() should NULL terminated...
[mirror_edk2.git] / MdePkg / Library / BaseLib / SwitchStack.c
index e247e94857a7f36f208827427161c238bf93cf0c..0c3e29d94a06453946b886cf4efeb9bcfed44554 100644 (file)
@@ -12,7 +12,7 @@
 \r
 **/\r
 \r
-#include <BaseLibInternals.h>\r
+#include "BaseLibInternals.h"\r
 \r
 /**\r
   Transfers control to a function starting with a new stack.\r
                       function.\r
   @param  NewStack    A pointer to the new stack to use for the EntryPoint\r
                       function.\r
+  @param  ...         This variable argument list is ignored for IA32, x64, and EBC.  \r
+                      For IPF, this variable argument list is expected to contain \r
+                      a single parameter of type VOID * that specifies the new backing \r
+                      store pointer.\r
+\r
 \r
 **/\r
 VOID\r
@@ -53,10 +58,17 @@ SwitchStack (
   ASSERT (EntryPoint != NULL);\r
   ASSERT (NewStack != NULL);\r
 \r
+  //\r
+  // New stack must be aligned with CPU_STACK_ALIGNMENT\r
+  //\r
+  ASSERT (((UINTN)NewStack & (CPU_STACK_ALIGNMENT - 1)) == 0);\r
+\r
   VA_START (Marker, NewStack);\r
 \r
   InternalSwitchStack (EntryPoint, Context1, Context2, NewStack, Marker);\r
 \r
+  VA_END (Marker);\r
+\r
   //\r
   // InternalSwitchStack () will never return\r
   //\r