[U-Boot] [PATCH v2 1/4] mx31pdk: copy SPL directly, not using relocate_code.

Albert ARIBAUD
2013-05-14T16:13:55Z

Hi Beno?t,

On Tue, 14 May 2013 17:14:12 +0200 (CEST), Beno?t Th?baudeau
<benoit.thebaudeau@advansee.com> wrote:

> Hi Albert,
>
> On Tuesday, May 14, 2013 11:50:27 AM, Albert ARIBAUD wrote:
> > Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
> > ---
> > Changes in v2:
> > - dropped relocate_code() call from mx31pdk SPL
> >
> > board/freescale/mx31pdk/mx31pdk.c | 16 +++++++++++++++-
> > 1 file changed, 15 insertions(+), 1 deletion(-)
> >
> > diff --git a/board/freescale/mx31pdk/mx31pdk.c
> > b/board/freescale/mx31pdk/mx31pdk.c
> > index 49158bd..4f6cfee 100644
> > --- a/board/freescale/mx31pdk/mx31pdk.c
> > +++ b/board/freescale/mx31pdk/mx31pdk.c
> > @@ -39,7 +39,21 @@ DECLARE_GLOBAL_DATA_PTR;
> > #ifdef CONFIG_SPL_BUILD
> > void board_init_f(ulong bootflag)
> > {
> > - relocate_code(CONFIG_SPL_TEXT_BASE);
> > + /*
> > + * copy ourselves from where we are running to where we were
> > + * linked at. Use ulong pointers as all addresses involved
> > + * are 4-byte-aligned.
> > + */
> > + ulong *start_ptr, *end_ptr, *link_ptr, *run_ptr, *dst;
> > + asm volatile ("ldr %0, =_start" : "=r"(start_ptr));
> > + asm volatile ("ldr %0, =_end" : "=r"(end_ptr));
>
> Why not __image_copy_start/end instead? I know that the result will be the same
> here, but the naming would be more appropriate. The existing u-boot-spl.lds
> still gives access to __image_copy_*.

Well, yes, the naming seems appropriate, and I thought and said so
myself some time ago. But then, I realize that __image_copy_start and
__image_copy_end are tightly coupled with relocation, and I want to
avoid creating any additional ties between relocation and SPL just when
I am severing them. IOW, I want to keep the option of having a reduced
SPL linker file, distinct from the u-boot one, and where none of
__image_copy_*, __rel_dyn_* or __dynsym_start exist.

Amicalement,
--
Albert.