diff options
author | Olivier Martin <olivier.martin@arm.com> | 2014-12-12 19:32:50 +0000 |
---|---|---|
committer | oliviermartin <oliviermartin@Edk2> | 2014-12-12 19:32:50 +0000 |
commit | d5daaa836f46a3f8fe57da37cad7841d2a9c4aca (patch) | |
tree | bc1033b5e70a0cbbfc062e69cdb28712e960ddce /ArmPkg/Include/AsmMacroIoLib.h | |
parent | 85774874bcd13dba0ed8886ab5eb36b1ccdc44c1 (diff) | |
download | edk2-platforms-d5daaa836f46a3f8fe57da37cad7841d2a9c4aca.tar.xz |
ArmPkg/AsmMacroIoLib: Fixed the global variables initialization
The top of the stack always points to 'stack_base + stack_size'.
But the stack pointer is decremented before writing to the stack.
It means the top byte of the stack is actually 'stack_base + stack_size - 1'.
The initialization should also decrement the stack pointer before
zero'ing the memory (pre-indexed addressing).
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16518 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPkg/Include/AsmMacroIoLib.h')
-rw-r--r-- | ArmPkg/Include/AsmMacroIoLib.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/ArmPkg/Include/AsmMacroIoLib.h b/ArmPkg/Include/AsmMacroIoLib.h index 408b2ca280..6904bdc9b0 100644 --- a/ArmPkg/Include/AsmMacroIoLib.h +++ b/ArmPkg/Include/AsmMacroIoLib.h @@ -149,7 +149,7 @@ _SetPrimaryStackEnd: _InitializePrimaryStackLoop: ; \
cmp Tmp1, sp ; \
bls _InitializePrimaryStackEnd ; \
- str GlobalSize, [Tmp1], #-4 ; \
+ str GlobalSize, [Tmp1, #-4]! ; \
b _InitializePrimaryStackLoop ; \
_InitializePrimaryStackEnd:
@@ -228,7 +228,7 @@ _SetPrimaryStackEnd: _InitializePrimaryStackLoop: ; \
cmp Tmp1, sp ; \
bls _InitializePrimaryStackEnd ; \
- str GlobalSize, [Tmp1], #-4 ; \
+ str GlobalSize, [Tmp1, #-4]! ; \
b _InitializePrimaryStackLoop ; \
_InitializePrimaryStackEnd:
|