[U-Boot] SPL broken on i.mx31 platforms

Magnus Lilja
2014-08-04T20:23:10Z

Hi

On 15 July 2014 11:31, Helmut Raiger <helmut.raiger@hale.at> wrote:
> Hi,
>
> thx Magnus for the test, could you possibly change the few lines of code
> and test again:
>
> diff --git a/arch/arm/cpu/arm1136/start.S b/arch/arm/cpu/arm1136/start.S
> index 1cfcca9..53bde12 100644
> --- a/arch/arm/cpu/arm1136/start.S
> +++ b/arch/arm/cpu/arm1136/start.S
> @@ -91,4 +91,9 @@ cpu_init_crit:
>
> bl lowlevel_init /* go setup pll,mux,memory */
> mov lr, ip /* restore link */
> mov pc, lr /* back to my caller */
> +
> + nop
> + nop
> + nop
> +
> #endif /* CONFIG_SKIP_LOWLEVEL_INIT */
> diff --git a/arch/arm/lib/vectors.S b/arch/arm/lib/vectors.S
> index d68cc47..8c0e3c1 100644
> --- a/arch/arm/lib/vectors.S
> +++ b/arch/arm/lib/vectors.S
> @@ -50,7 +50,8 @@ _start:
> #endif
>
> _start:
> - ldr pc, _reset
> + /* be position independent if SPL is linked at different location */
> + b reset
> ldr pc, _undefined_instruction
> ldr pc, _software_interrupt
> ldr pc, _prefetch_abort
>
>
> This fixes the SPL, in a later test I had to another nop and I still have
> no explanation why.
>
> Again thanks for the support.

I have now done some tests on i.MX31 PDK:
* v2013.04 and v2014.04 works
* v2014.07 and "tip of tree as of this mail" does not work

To make it work (both v2014.07 and tip of tree) I only have to change
the "ldr pc, _reset" to "b reset". I do not have to apply the nop-part
of the patch.

On a different note I noticed that I received a warning that the PDK
board does not use "generic board", I will try to fix this but I don't
know how much work that is and when I can submit a patch.

Regards, Magnus