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:
@@ -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
|
||||
|
Reference in New Issue
Block a user