* [U-Boot] [PATCH] ARM: fix the standalone programs
@ 2013-11-21 21:32 Jeroen Hofstee
2013-12-12 10:29 ` Albert ARIBAUD
0 siblings, 1 reply; 2+ messages in thread
From: Jeroen Hofstee @ 2013-11-21 21:32 UTC (permalink / raw)
To: u-boot
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 | 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)
--
1.8.3.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [U-Boot] [PATCH] ARM: fix the standalone programs
2013-11-21 21:32 [U-Boot] [PATCH] ARM: fix the standalone programs Jeroen Hofstee
@ 2013-12-12 10:29 ` Albert ARIBAUD
0 siblings, 0 replies; 2+ messages in thread
From: Albert ARIBAUD @ 2013-12-12 10:29 UTC (permalink / raw)
To: u-boot
Hi Jeroen,
On Thu, 21 Nov 2013 22:32:51 +0100, Jeroen Hofstee
<jeroen@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@monstr.eu>
> Cc: Albert ARIBAUD <albert.u.boot@aribaud.net>
> Signed-off-by: Jeroen Hofstee <jeroen@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.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-12-12 10:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-21 21:32 [U-Boot] [PATCH] ARM: fix the standalone programs Jeroen Hofstee
2013-12-12 10:29 ` Albert ARIBAUD
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox