[U-Boot] [U-Boot, v7, 2/2] arm: move gd handling outside of C code

Tom Rini trini at konsulko.com
Thu Jan 14 20:11:58 CET 2016


On Thu, Jan 14, 2016 at 11:35:39AM -0700, Stephen Warren wrote:
> On 01/14/2016 06:20 AM, Tom Rini wrote:
> >On Wed, Nov 25, 2015 at 05:56:33PM +0100, Albert ARIBAUD wrote:
> >
> >>As of gcc 5.2.1 for Thumb-1, it is not possible any
> >>more to assign gd from C code, as gd is mapped to r9,
> >>and r9 may now be saved in the prolog sequence, and
> >>restored in the epilog sequence, of any C functions.
> >>
> >>Therefore arch_setup_gd(), which is supposed to set
> >>r9, may actually have no effect, causing U-Boot to
> >>use a bad address to access GD.
> >>
> >>Fix this by never calling arch_setup_gd() for ARM,
> >>and instead setting r9 in arch/arm/lib/crt0.S, to
> >>the value returned by board_init_f_alloc_reserve().
> >>
> >>Signed-off-by: Albert ARIBAUD <albert.u.boot at aribaud.net>
> >>Reviewed-by: Simon Glass <sjg at chromium.org>
> >
> >Applied to u-boot/master, thanks!
> 
> FYI, this commit causes U-Boot to fail (crash or hang during very
> early startup with zero UART output) on at least an NVIDIA Jetson
> TX1 (p2371-2180) board. Reverting just this in u-boot/master solves
> the issue. I have not tested other boards or looked at the code
> itself yet.

Is that one of the systems where we have an ARM9 and then a Cortex-A?
FWIW, my pandaboard is up in Fedora currently.  I'm trying to do some
boot testing on what I have more often and then a bigger round of
unboxing and testing at -rc1/release time.

> (As an interesting datapoint, this is the first issue caught by the
> Jenkins system I'm setting up to run test/py on a few Tegra boards)

Yay for that at least.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160114/95aedb91/attachment.sig>


More information about the U-Boot mailing list