ArmPlatformPkg/ArmPlatformStackLib: Introduced helper library to initialize stacks

The new functions are:
- ArmPlatformStackSet(IN UINTN StackBase, IN UINTN MpId, IN UINTN PrimaryStackSize, IN UINTN SecondaryStackSize);
- ArmPlatformStackSetPrimary(IN UINTN StackBase, IN UINTN MpId, IN UINTN PrimaryStackSize, IN UINTN SecondaryStackSize);
- ArmPlatformStackSetSecondary(IN UINTN StackBase, IN UINTN MpId, IN UINTN PrimaryStackSize, IN UINTN SecondaryStackSize);

The stack topology can be changed by implementing a new ArmPlatformStackLib

Signed-off-by: Olivier Martin <olivier.martin@arm.com>




git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13774 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
oliviermartin
2012-09-28 11:01:36 +00:00
parent 7d49ced0cf
commit 17839a45b8
11 changed files with 360 additions and 122 deletions

View File

@@ -104,8 +104,25 @@ _SetPrimaryStackInitGlobals
beq _SetPrimaryStackEnd
str $GlobalSize, [$Tmp], #4
b _SetPrimaryStackInitGlobals
_SetPrimaryStackEnd
MEND
MACRO
InitializePrimaryStack $GlobalSize, $Tmp1
and $Tmp1, $GlobalSize, #7
rsbne $Tmp1, $Tmp1, #8
add $GlobalSize, $GlobalSize, $Tmp1
mov $Tmp1, sp
sub sp, $GlobalSize
; Set all the global variables to 0
mov $GlobalSize, #0x0
_InitializePrimaryStackLoop
cmp $Tmp1, sp
bls _InitializePrimaryStackEnd
str $GlobalSize, [$Tmp1], #-4
b _InitializePrimaryStackLoop
_InitializePrimaryStackEnd
MEND
END