diff options
author | Heiko Stuebner <heiko@sntech.de> | 2019-03-06 00:29:13 +0100 |
---|---|---|
committer | Dimitris Papastamos <dimitris.papastamos@arm.com> | 2019-03-08 15:35:30 +0000 |
commit | c6c10b02b8eec52c8da2f65164c6a0d3c100016b (patch) | |
tree | c8ea6e30d76b4eceba4e45966ab165e8a7d4dd7d /lib/cpus/aarch32 | |
parent | 78d58519de0e918125fb019b6a882001a6f203aa (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.S | 6 |
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 |