diff options
| author | York Sun <[email protected]> | 2017-12-07 13:16:07 -0800 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2017-12-07 17:00:06 -0500 |
| commit | e421b646fce125ed92936628dc4b287de5f038a5 (patch) | |
| tree | 2ea2b1c79e6dfafe9d0ccf083a1786efd93f62d4 | |
| parent | 1d0f30a8e080fd490ec4df50d5ccfc742e771ca0 (diff) | |
armv8: fix gd after relocation
Commit 21f4486faa5d ("armv8: update gd after relocate") sets x18
without checking the return value of spl_relocate_stack_gd().
Reviewed-by: Stephen Warren <[email protected]>
Signed-off-by: York Sun <[email protected]>
CC: Kever Yang <[email protected]>
CC: Philipp Tomsich <[email protected]>
| -rw-r--r-- | arch/arm/lib/crt0_64.S | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/arm/lib/crt0_64.S b/arch/arm/lib/crt0_64.S index ccefce0b20a..9cb70552fed 100644 --- a/arch/arm/lib/crt0_64.S +++ b/arch/arm/lib/crt0_64.S @@ -120,8 +120,9 @@ relocation_return: #endif /* !CONFIG_SPL_BUILD */ #if defined(CONFIG_SPL_BUILD) bl spl_relocate_stack_gd /* may return NULL */ - /* set up gd here, outside any C code */ - mov x18, x0 + /* set up gd here, outside any C code, if new stack is returned */ + cmp x0, #0 + csel x18, x0, x18, ne /* * Perform 'sp = (x0 != NULL) ? x0 : sp' while working * around the constraint that conditional moves can not |
