Message ID | 1455032911-29001-2-git-send-email-d.mueller@elsoft.ch |
---|---|
State | Accepted |
Commit | 03a3a8aec85780f034c9c8fca4a12abfeb9b4da7 |
Delegated to: | Tom Rini |
Headers | show |
On Tue, Feb 09, 2016 at 04:48:28PM +0100, David Müller wrote: > Signed-off-by: David Müller <d.mueller@elsoft.ch> > --- > arch/arm/lib/crt0.S | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S > index 2f4c14e..8415f77 100644 > --- a/arch/arm/lib/crt0.S > +++ b/arch/arm/lib/crt0.S > @@ -167,8 +167,12 @@ clbss_l:cmp r0, r1 /* while not at end of BSS */ > mov r0, r9 /* gd_t */ > ldr r1, [r9, #GD_RELOCADDR] /* dest_addr */ > /* call board_init_r */ > +#if defined(CONFIG_SYS_THUMB_BUILD) > + ldr lr, =board_init_r /* this is auto-relocated! */ > + bx lr > +#else > ldr pc, =board_init_r /* this is auto-relocated! */ > - > +#endif > /* we should not return here. */ > #endif In general, my preference is always to use the thumb compatible way, can you rework like that and explain in the commit message? Thanks!
Hello Tom Rini wrote: > On Tue, Feb 09, 2016 at 04:48:28PM +0100, David Müller wrote: >> /* call board_init_r */ >> +#if defined(CONFIG_SYS_THUMB_BUILD) >> + ldr lr, =board_init_r /* this is auto-relocated! */ >> + bx lr >> +#else >> ldr pc, =board_init_r /* this is auto-relocated! */ >> - >> +#endif >> /* we should not return here. */ >> #endif > > In general, my preference is always to use the thumb compatible way, can > you rework like that and explain in the commit message? Thanks! AFAIK, the "bx" instruction is undefined on non-THUMB capable architectures. I therefore don't see a way to avoid some kind of #if/#else/#endif construct. Dave
On Wed, Feb 10, 2016 at 08:57:38AM +0100, David Müller (ELSOFT AG) wrote: > Hello > > Tom Rini wrote: > > On Tue, Feb 09, 2016 at 04:48:28PM +0100, David Müller wrote: > >> /* call board_init_r */ > >> +#if defined(CONFIG_SYS_THUMB_BUILD) > >> + ldr lr, =board_init_r /* this is auto-relocated! */ > >> + bx lr > >> +#else > >> ldr pc, =board_init_r /* this is auto-relocated! */ > >> - > >> +#endif > >> /* we should not return here. */ > >> #endif > > > > In general, my preference is always to use the thumb compatible way, can > > you rework like that and explain in the commit message? Thanks! > > AFAIK, the "bx" instruction is undefined on non-THUMB capable > architectures. I therefore don't see a way to avoid some kind of > #if/#else/#endif construct. Ah, OK, nevermind then, thanks.
On Tue, Feb 09, 2016 at 04:48:28PM +0100, David Müller (ELSOFT AG) wrote:
> Signed-off-by: David Müller <d.mueller@elsoft.ch>
Applied to u-boot/master, thanks!
diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S index 2f4c14e..8415f77 100644 --- a/arch/arm/lib/crt0.S +++ b/arch/arm/lib/crt0.S @@ -167,8 +167,12 @@ clbss_l:cmp r0, r1 /* while not at end of BSS */ mov r0, r9 /* gd_t */ ldr r1, [r9, #GD_RELOCADDR] /* dest_addr */ /* call board_init_r */ +#if defined(CONFIG_SYS_THUMB_BUILD) + ldr lr, =board_init_r /* this is auto-relocated! */ + bx lr +#else ldr pc, =board_init_r /* this is auto-relocated! */ - +#endif /* we should not return here. */ #endif
Signed-off-by: David Müller <d.mueller@elsoft.ch> --- arch/arm/lib/crt0.S | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)