Message ID | 1512681367-18205-1-git-send-email-york.sun@nxp.com |
---|---|
State | Accepted |
Commit | e421b646fce125ed92936628dc4b287de5f038a5 |
Delegated to: | Tom Rini |
Headers | show |
Series | [U-Boot] armv8: fix gd after relocation | expand |
On 12/07/2017 02:16 PM, York Sun wrote: > Commit 21f4486faa5d ("armv8: update gd after relocate") sets x18 > without checking the return value of spl_relocate_stack_gd(). Reviewed-by: Stephen Warren <swarren@nvidia.com> This matches what the 32-bit ARM code does, so I guess it's right.
On Thu, Dec 07, 2017 at 01:16:07PM -0800, York Sun wrote: > Commit 21f4486faa5d ("armv8: update gd after relocate") sets x18 > without checking the return value of spl_relocate_stack_gd(). > > Signed-off-by: York Sun <york.sun@nxp.com> > CC: Kever Yang <kever.yang@rock-chips.com> > CC: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Applied to u-boot/master, thanks!
diff --git a/arch/arm/lib/crt0_64.S b/arch/arm/lib/crt0_64.S index ccefce0..9cb7055 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
Commit 21f4486faa5d ("armv8: update gd after relocate") sets x18 without checking the return value of spl_relocate_stack_gd(). Signed-off-by: York Sun <york.sun@nxp.com> CC: Kever Yang <kever.yang@rock-chips.com> CC: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> --- arch/arm/lib/crt0_64.S | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)