ldr $Reg, =($Data)\r
MEND\r
\r
- ; The reserved place must be 8-bytes aligned for pushing 64-bit variable on the stack\r
- ; Note: Global Size will be modified\r
- MACRO\r
- 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
- ; Set all the global variables to 0\r
- mov $Tmp, sp\r
- mov $GlobalSize, #0x0\r
-_SetPrimaryStackInitGlobals\r
- cmp $Tmp, $StackTop\r
- beq _SetPrimaryStackEnd\r
- str $GlobalSize, [$Tmp], #4\r
- b _SetPrimaryStackInitGlobals\r
-_SetPrimaryStackEnd\r
- MEND\r
-\r
- MACRO\r
- InitializePrimaryStack $GlobalSize, $Tmp1\r
- and $Tmp1, $GlobalSize, #7\r
- rsbne $Tmp1, $Tmp1, #8\r
- add $GlobalSize, $GlobalSize, $Tmp1\r
-\r
- mov $Tmp1, sp\r
- sub sp, $GlobalSize\r
- ; Set all the global variables to 0\r
- mov $GlobalSize, #0x0\r
-_InitializePrimaryStackLoop\r
- cmp $Tmp1, sp\r
- bls _InitializePrimaryStackEnd\r
- str $GlobalSize, [$Tmp1, #-4]!\r
- b _InitializePrimaryStackLoop\r
-_InitializePrimaryStackEnd\r
- MEND\r
-\r
END\r