ARM: fix the standalone programs
authorJeroen Hofstee <jeroen@myspectrum.nl>
Thu, 21 Nov 2013 21:32:51 +0000 (22:32 +0100)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Thu, 12 Dec 2013 10:27:59 +0000 (11:27 +0100)
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@monstr.eu>
Cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
examples/standalone/stubs.c

index 8fb17653b0d22cf9023dc23cdaceeed4ee090f6e..5d2ab569958611de1943572e3be6c2711ce935a9 100644 (file)
@@ -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)