]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Include/AsmMacroIoLib.h
ArmPlatformPkg: Changed memory model for the stacks
[mirror_edk2.git] / ArmPkg / Include / AsmMacroIoLib.h
index 1ea2c33ffb6fda82999ce052aa37f6c446df997a..9ef3430aaaa596d7ecd9e4c6afd697556a95944c 100644 (file)
 #define LoadConstantToReg(Data, Reg) \\r
   ldr  Reg, =Data\r
   \r
+#define GetCorePositionInStack(Pos, MpId, Tmp) \\r
+  lsr   Pos, MpId, #6 ;                        \\r
+  and   Tmp, MpId, #3 ;                        \\r
+  add   Pos, Pos, Tmp\r
+\r
+#define SetPrimaryStack(StackTop, GlobalSize, Tmp)  \\r
+  and     Tmp, GlobalSize, #7         ;             \\r
+  rsbne   Tmp, Tmp, #8                ;             \\r
+  add     GlobalSize, GlobalSize, Tmp ;             \\r
+  sub     sp, StackTop, GlobalSize\r
+\r
 #else\r
 \r
 //\r
 // conditional load testing eq flag\r
 #define LoadConstantToRegIfEq(Data, Reg)  LoadConstantToRegIfEqMacro Data, Reg\r
 \r
+#define GetCorePositionInStack(Pos, MpId, Tmp)  GetCorePositionInStack Pos, MpId, Tmp\r
 \r
-#endif\r
+#define SetPrimaryStack(StackTop,GlobalSize,Tmp) SetPrimaryStack StackTop, GlobalSize, Tmp\r
 \r
+#endif\r
 \r
 #endif\r