[U-Boot] [PATCH v4 0/2] Factorize ARM startup code as mush as possible.

Albert ARIBAUD
2012-12-27T11:27:59Z

On Tue, 27 Nov 2012 13:43:24 +0100, Albert ARIBAUD
<albert.u.boot@aribaud.net> wrote:
> The goal of this series is to scrub the start.S files
> which have proliferated across arch/arm and eliminate
> code redundancy.
>
> This series only factorizes the C runtime framework,
> that is, the assembly code responsible for setting up
> the C environments needed by board_init_*() and
> relocate_code().
>
> Further factorization is possible: relocate_code() can
> be moved out and possibly rewritten in C now that it
> has plain C function semantics; exception handlers
> should also be pretty much cpu-independent.
>
> Also, SPL currently makes board_init_f() perform all
> of the setting up, including BSS clearing and chain-
> loading. This could be streamlined by only putting
> basic inits in board_init_f(), letting crt0 do the
> BSS initialization and chain-loading U-Boot from
> inside board_init_r().
>
> Eventually, start.S files should disappear or contain
> CPU-specific code only.
>
> The new C runtime setup sequence has been validated step by
> step on targets versatileqemu using gcc version 4.2.2 from
> the ELDK4.2 toolchain, and wireless_space using gcc version
> 4.7.2 (Ubuntu/Linaro 4.7.2-1ubuntu1).
>
> The whole changes have been build-tested across all ARM
> targets using MAKEALL -a arm.
>
> Changes in v4:
> - fixed bhs into blo in BSS init loop
> - switched from explicit literals to '=target' notation
> - fixed location of GD in initial environment
> - stopped SPL boot sequence at calling board_init_f
>
> Changes in v3:
> - various clarifications and typo fixes
> - fixed wrong LED calls conditional
> - fixed open comment eating some code
> - fixed code overrun in SPL case
>
> Changes in v2:
> - moved description from cover letter to patch commit msg
> - added note about tests in the cover letter
> - fixed baords with CONFIG_SPL but not CONFIG_SPL_STACK
> - removed useless includes in arm926ejs and arm925t
>
> Albert ARIBAUD (2):
> arm: move C runtime setup code in crt0.S
> arm: remove useless code in start.S files
>
> arch/arm/cpu/arm1136/start.S | 71 +++---------
> arch/arm/cpu/arm1176/start.S | 62 ++---------
> arch/arm/cpu/arm720t/start.S | 53 ++-------
> arch/arm/cpu/arm920t/start.S | 61 ++--------
> arch/arm/cpu/arm925t/start.S | 65 ++---------
> arch/arm/cpu/arm926ejs/start.S | 86 ++------------
> arch/arm/cpu/arm946es/start.S | 56 ++--------
> arch/arm/cpu/arm_intcm/start.S | 63 ++---------
> arch/arm/cpu/armv7/start.S | 58 +++-------
> arch/arm/cpu/ixp/start.S | 55 ++-------
> arch/arm/cpu/pxa/start.S | 63 ++---------
> arch/arm/cpu/s3c44b0/start.S | 55 ++-------
> arch/arm/cpu/sa1100/start.S | 50 ++-------
> arch/arm/lib/Makefile | 2 +
> arch/arm/lib/board.c | 11 --
> arch/arm/lib/crt0.S | 173 +++++++++++++++++++++++++++++
> include/common.h | 2 +-
> include/configs/socfpga_cyclone5.h | 2 +-
> lib/asm-offsets.c | 10 ++
> nand_spl/board/freescale/mx31pdk/Makefile | 6 +-
> nand_spl/board/karo/tx25/Makefile | 6 +-
> 21 files changed, 322 insertions(+), 688 deletions(-)
> create mode 100644 arch/arm/lib/crt0.S
>
> --
> 1.7.10.4

Tom,

These have been tested on several boards. Can it go in? If it can,
then I would like to take it in u-boot-arm/master with your Acked-By.

Amicalement,
--
Albert.