[U-Boot] [RFC] ARM: mx31pdk: Use the new relocation scheme

Magnus Lilja
2011-02-07T19:48:58Z

Hi

On 2011-02-07 15:13, Stefano Babic wrote:
>>> I have no idea if this breaks other boards but at least it's start
>>> for further work. I tried it on the imx31 litekit (which boots from
>>> NOR) but that board doesn't seem to boot even before applying
>>> Fabios patch, I'll see if I can figure out why that board is broken
>>> now. Don't know when though.
>>
>> I will let others comment about the changes you did in
>> arch/arm/cpu/arm1136/start.S Will also try it later today.
>
> Anyway, arch/arm/cpu/arm1136/start.S cannot be compiled without the
> changes suggested by Magnus due to the following lines:
>
> _nand_boot_ofs
> : .word nand_boot - _start
>
> ":" seems to me wrong in any case and should be fixed. Is this syntax
> accepted by newer compiler releases ?
>
> IMHO board_init_f must be called absolutely before nand_boot. I have
> tested the changes suggested by Magnus on a i.MX35 and the board boots
> from NAND. However, I do not see the problems with the console, and I
> can think they are not related to this issue. >

I agree on that last statement, the console thing must be something else.

Here's a somewhat cleaner version of my patch. Hope the mail looks ok,
I'm having internet connectivity issues this evening so I'm using a
different installation of Thunderbird than usual.

Regards, Magnus

diff --git a/arch/arm/cpu/arm1136/start.S b/arch/arm/cpu/arm1136/start.S
index 12545c2..bab2868 100644
--- a/arch/arm/cpu/arm1136/start.S
+++ b/arch/arm/cpu/arm1136/start.S
@@ -163,15 +163,7 @@ call_board_init_f:
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
ldr r0,=0x00000000

-#ifdef CONFIG_NAND_SPL
- bl nand_boot
-#else
-#ifdef CONFIG_ONENAND_IPL
- bl start_oneboot
-#else
bl board_init_f
-#endif /* CONFIG_ONENAND_IPL */
-#endif /* CONFIG_NAND_SPL */

/*------------------------------------------------------------------------------*/

@@ -267,10 +259,10 @@ clbss_l:str r2, [r0] /* clear
loop... */
*/
#ifdef CONFIG_NAND_SPL
ldr r0, _nand_boot_ofs
- adr r1, _start
- add pc, r0, r1
-_nand_boot_ofs:
- .word nand_boot - _start
+ mov pc, r0
+
+_nand_boot_ofs:
+ .word nand_boot
#else
jump_2_ram:
ldr r0, _board_init_r_ofs