[U-Boot] [PATCH 1/2] arm: Make reset position-independent

Benoît Thébaudeau benoit.thebaudeau.dev at gmail.com
Wed Sep 3 23:55:52 CEST 2014


On Wed, Sep 3, 2014 at 11:32 PM, Benoît Thébaudeau
<benoit.thebaudeau.dev at gmail.com> wrote:
> Some boards, like mx31pdk and tx25, require the beginning of the SPL
> code to be position-independent. For these two boards, this is because
> they use the i.MX external NAND boot, which starts by executing the
> first NAND Flash page from the NFC page buffer. The SPL then needs to
> copy itself to its actual link address in order to free the NFC page
> buffer and use it to load the non-SPL image from Flash before running
> it. This means that the SPL runtime address differs from its link
> address between the reset and the initial copy performed by
> board_init_f(), so this part of the SPL binary must be
> position-independent.
>
> This requirement was broken by commit 41623c9 'arm: move exception
> handling out of start.S files', which used an absolute address to branch
> to the reset routine. This new commit restores the original behavior,
> which just performed a relative branch. This fixes the boot of mx31pdk
> and tx25.
>
> Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev at gmail.com>
> Reported-by: Helmut Raiger <helmut.raiger at hale.at>
> Cc: Albert Aribaud <albert.u.boot at aribaud.net>
> Cc: Magnus Lilja <lilja.magnus at gmail.com>
> Cc: John Rigby <jcrigby at gmail.com>
> ---
>  arch/arm/lib/vectors.S |    3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/arch/arm/lib/vectors.S b/arch/arm/lib/vectors.S
> index 493f337..843b18f 100644
> --- a/arch/arm/lib/vectors.S
> +++ b/arch/arm/lib/vectors.S
> @@ -50,7 +50,7 @@
>  #endif
>
>  _start:
> -       ldr     pc, _reset
> +       b       reset
>         ldr     pc, _undefined_instruction
>         ldr     pc, _software_interrupt
>         ldr     pc, _prefetch_abort
> @@ -77,7 +77,6 @@ _start:
>         .globl  _irq
>         .globl  _fiq
>
> -_reset:                        .word reset
>  _undefined_instruction:        .word undefined_instruction
>  _software_interrupt:   .word software_interrupt
>  _prefetch_abort:       .word prefetch_abort
> --
> 1.7.10.4
>

Adding Helmut to Cc.

Benoît


More information about the U-Boot mailing list