[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