Message ID | 1351262934-22053-1-git-send-email-sbabic@denx.de |
---|---|
State | Changes Requested |
Delegated to: | Stefano Babic |
Headers | show |
Hi Stefano, On Fri, Oct 26, 2012 at 12:48 PM, Stefano Babic <sbabic@denx.de> wrote: > This patch modifies start.S for the arm1136 to make it > conform to start.S in armv7 architecture, to make it > usable if the SPL framework is used. > > Signed-off-by: Stefano Babic <sbabic@denx.de> > --- > > Changes: > - Previous patch breaks legacy nand_spl boards > due to local u-boot.lds. Fixed it. I would like to convert mx31pdk to the new spl mechanism. Any suggestions? Any other mx3 board that currently builds from NAND via spl? Thanks, Fabio Estevam
Am 26/10/2012 18:23, schrieb Fabio Estevam: > Hi Stefano, > > On Fri, Oct 26, 2012 at 12:48 PM, Stefano Babic <sbabic@denx.de> wrote: >> This patch modifies start.S for the arm1136 to make it >> conform to start.S in armv7 architecture, to make it >> usable if the SPL framework is used. >> >> Signed-off-by: Stefano Babic <sbabic@denx.de> >> --- >> >> Changes: >> - Previous patch breaks legacy nand_spl boards >> due to local u-boot.lds. Fixed it. > > I would like to convert mx31pdk to the new spl mechanism. > > Any suggestions? Any other mx3 board that currently builds from NAND via spl? I have none - the first board using the spl framework is woodburn in this patchset (you can get a working tree checking out -next). For this board it was asked to boot exclusively from SD. Regards, Stefano Babic
diff --git a/arch/arm/cpu/arm1136/start.S b/arch/arm/cpu/arm1136/start.S index 3752af9..5d3b4c2 100644 --- a/arch/arm/cpu/arm1136/start.S +++ b/arch/arm/cpu/arm1136/start.S @@ -100,6 +100,10 @@ _TEXT_BASE: _bss_start_ofs: .word __bss_start - _start +.global _image_copy_end_ofs +_image_copy_end_ofs: + .word __image_copy_end - _start + .globl _bss_end_ofs _bss_end_ofs: .word __bss_end__ - _start @@ -193,7 +197,7 @@ stack_setup: moveq r9, #0 /* no relocation. relocation offset(r9) = 0 */ beq clear_bss /* skip relocation */ mov r1, r6 /* r1 <- scratch for copy_loop */ - ldr r3, _bss_start_ofs + ldr r3, _image_copy_end_ofs add r2, r0, r3 /* r2 <- source end address */ copy_loop: @@ -241,15 +245,28 @@ fixnext: add r2, r2, #8 /* each rel.dyn entry is 8 bytes */ cmp r2, r3 blo fixloop + b clear_bss + +_rel_dyn_start_ofs: + .word __rel_dyn_start - _start +_rel_dyn_end_ofs: + .word __rel_dyn_end - _start +_dynsym_start_ofs: + .word __dynsym_start - _start #endif clear_bss: -#ifndef CONFIG_SPL_BUILD +#ifdef CONFIG_SPL_BUILD + /* No relocation for SPL */ + ldr r0, =__bss_start + ldr r1, =__bss_end__ +#else ldr r0, _bss_start_ofs ldr r1, _bss_end_ofs mov r4, r6 /* reloc addr */ add r0, r0, r4 add r1, r1, r4 +#endif mov r2, #0x00000000 /* clear */ clbss_l:cmp r0, r1 /* clear loop... */ @@ -258,7 +275,6 @@ clbss_l:cmp r0, r1 /* clear loop... */ add r0, r0, #4 b clbss_l clbss_e: -#endif /* #ifndef CONFIG_SPL_BUILD */ /* * We are done. Do not return, instead branch to second part of board @@ -273,7 +289,7 @@ _nand_boot_ofs: #else jump_2_ram: ldr r0, _board_init_r_ofs - ldr r1, _TEXT_BASE + adr r1, _start add lr, r0, r1 add lr, lr, r9 /* setup parameters for board_init_r */ @@ -286,13 +302,6 @@ _board_init_r_ofs: .word board_init_r - _start #endif -_rel_dyn_start_ofs: - .word __rel_dyn_start - _start -_rel_dyn_end_ofs: - .word __rel_dyn_end - _start -_dynsym_start_ofs: - .word __dynsym_start - _start - /* ************************************************************************* * diff --git a/board/freescale/mx31ads/u-boot.lds b/board/freescale/mx31ads/u-boot.lds index 79eb7ac..91ffdbe 100644 --- a/board/freescale/mx31ads/u-boot.lds +++ b/board/freescale/mx31ads/u-boot.lds @@ -63,6 +63,8 @@ SECTIONS . = ALIGN(4); + __image_copy_end = .; + .rel.dyn : { __rel_dyn_start = .; *(.rel*) diff --git a/nand_spl/board/freescale/mx31pdk/u-boot.lds b/nand_spl/board/freescale/mx31pdk/u-boot.lds index d2b08f6..a130a1f 100644 --- a/nand_spl/board/freescale/mx31pdk/u-boot.lds +++ b/nand_spl/board/freescale/mx31pdk/u-boot.lds @@ -52,6 +52,8 @@ SECTIONS . = ALIGN(4); + __image_copy_end = .; + .rel.dyn : { __rel_dyn_start = .; *(.rel*)
This patch modifies start.S for the arm1136 to make it conform to start.S in armv7 architecture, to make it usable if the SPL framework is used. Signed-off-by: Stefano Babic <sbabic@denx.de> --- Changes: - Previous patch breaks legacy nand_spl boards due to local u-boot.lds. Fixed it. arch/arm/cpu/arm1136/start.S | 31 +++++++++++++++++---------- board/freescale/mx31ads/u-boot.lds | 2 ++ nand_spl/board/freescale/mx31pdk/u-boot.lds | 2 ++ 3 files changed, 24 insertions(+), 11 deletions(-)