summaryrefslogtreecommitdiff
path: root/lib/cpus/aarch32
diff options
context:
space:
mode:
authorHeiko Stuebner <heiko@sntech.de>2019-03-06 00:29:13 +0100
committerDimitris Papastamos <dimitris.papastamos@arm.com>2019-03-08 15:35:30 +0000
commitc6c10b02b8eec52c8da2f65164c6a0d3c100016b (patch)
treec8ea6e30d76b4eceba4e45966ab165e8a7d4dd7d /lib/cpus/aarch32
parent78d58519de0e918125fb019b6a882001a6f203aa (diff)
Fixup register handling in aarch32 reset_handler
The BL handover interface stores the bootloader arguments in registers r9-r12, so when the reset_handler stores the lr pointer in r10 it clobers one of the arguments. Adapt to use r8 and adapt the comment about registers allowed to clober. I've checked aarch32 reset_handlers and none seem to use higher registers as far as I can tell. Fixes: a6f340fe58b9 ("Introduce the new BL handover interface") Cc: Soby Mathew <soby.mathew@arm.com> Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Diffstat (limited to 'lib/cpus/aarch32')
-rw-r--r--lib/cpus/aarch32/cpu_helpers.S6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/cpus/aarch32/cpu_helpers.S b/lib/cpus/aarch32/cpu_helpers.S
index f37a33d0b..9b5d787ed 100644
--- a/lib/cpus/aarch32/cpu_helpers.S
+++ b/lib/cpus/aarch32/cpu_helpers.S
@@ -22,9 +22,9 @@
*/
.globl reset_handler
func reset_handler
- mov r10, lr
+ mov r8, lr
- /* The plat_reset_handler can clobber r0 - r9 */
+ /* The plat_reset_handler can clobber r0 - r7 */
bl plat_reset_handler
/* Get the matching cpu_ops pointer (clobbers: r0 - r5) */
@@ -38,7 +38,7 @@ func reset_handler
/* Get the cpu_ops reset handler */
ldr r1, [r0, #CPU_RESET_FUNC]
cmp r1, #0
- mov lr, r10
+ mov lr, r8
bxne r1
bx lr
endfunc reset_handler