[U-Boot] [PATCH] ARM: fix the standalone programs
Albert ARIBAUD
albert.u.boot at aribaud.net
Thu Dec 12 11:29:35 CET 2013
Hi Jeroen,
On Thu, 21 Nov 2013 22:32:51 +0100, Jeroen Hofstee
<jeroen at myspectrum.nl> wrote:
> The standalone programs do not use the api calls, but rely
> directly on u-boot variable gd->jt for the jump table. Commit
> fe1378a - "ARM: use r9 for gd" changed the register holding
> the address of gd, but the assembly code in the standalone
> examples was not updated accordingly. This broke the programs
> on ARM relying on the jumptable in the v2013.10 release.
> This patch unbricks them by using the correct register.
>
> Cc: Michal Simek <monstr at monstr.eu>
> Cc: Albert ARIBAUD <albert.u.boot at aribaud.net>
> Signed-off-by: Jeroen Hofstee <jeroen at myspectrum.nl>
> ---
> examples/standalone/stubs.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/examples/standalone/stubs.c b/examples/standalone/stubs.c
> index 8fb1765..5d2ab56 100644
> --- a/examples/standalone/stubs.c
> +++ b/examples/standalone/stubs.c
> @@ -40,14 +40,14 @@ gd_t *global_data;
> : : "i"(offsetof(gd_t, jt)), "i"(XF_ ## x * sizeof(void *)) : "r11");
> #elif defined(CONFIG_ARM)
> /*
> - * r8 holds the pointer to the global_data, ip is a call-clobbered
> + * r9 holds the pointer to the global_data, ip is a call-clobbered
> * register
> */
> #define EXPORT_FUNC(x) \
> asm volatile ( \
> " .globl " #x "\n" \
> #x ":\n" \
> -" ldr ip, [r8, %0]\n" \
> +" ldr ip, [r9, %0]\n" \
> " ldr pc, [ip, %1]\n" \
> : : "i"(offsetof(gd_t, jt)), "i"(XF_ ## x * sizeof(void *)) : "ip");
> #elif defined(CONFIG_MIPS)
Applied to u-boot-arm/master, thanks!
Amicalement,
--
Albert.
More information about the U-Boot
mailing list