This series replaces all instances of relocate_code in various start.S files from the ARM architecture with a single instance in arch/arm/lib/relocate.S.
This is done in steps, each step keeping the whole of ARM U-Boot buildable and runnable and touching as little code as necessary. 1. Drop mx31pdk SPL call to relocate_code In SPL of mx31pdk, board_init_f calls relocate_code to move SPL from the NAND read buffer to SRAM. This move is not a relocation and is thus better implemented as a simple ad hoc copy loop. 2. Drop tx25 SPL call to relocate_code Same as mx31pdk. 3. Prevent all SPLs from assembling relocate_code Now that no SPL uses relocate_code any more, remove it completely from SPL builds by putting it entirely between #ifndef CONFIG_SPL_BUILD and #endif preprocessor conditional. 4. Actual factorization of relocate_code Remove all instances of relocate_code from start.S and create a new file, arch/arm/lib/relocate.S, to provide the new single instance of relocate_code. The only non-trivial change is that for PXA25X, a call to unlock (actually disable) dcache is moved from before relocating to after relocating. As this cache is either locked-as-RAM or disabled, but never used as actual DDR cache, this move has no performance effect on relocation and no functional impact either. The relocation routine was step-tested on versatileqemu under gdb. Especially, both relocation offset (from _start to addr_moni and local offsets (from relocate_code to several linker script symbols) have been verified. Changes in v3: - fixed bugs in relocation offset computations - moved and fixed comment regarding linker symbols - fix missing conditionals on PXA25X dcache code - replaced FLASH/RAM mentions with SRC/DST ones Changes in v2: - dropped relocate_code() call from mx31pdk SPL - dropped relocate_code() call from tx25 SPL - dropped all relocate_code instances from SPL builds Albert ARIBAUD (4): mx31pdk: copy SPL directly, not using relocate_code. tx25: copy SPL directly, not using relocate_code. arm: do not compile relocate_code() for SPL builds arm: factorize relocate_code routine arch/arm/cpu/arm1136/start.S | 81 ---------------------------- arch/arm/cpu/arm1176/start.S | 77 --------------------------- arch/arm/cpu/arm720t/start.S | 77 --------------------------- arch/arm/cpu/arm920t/start.S | 77 --------------------------- arch/arm/cpu/arm925t/start.S | 77 --------------------------- arch/arm/cpu/arm926ejs/start.S | 81 ---------------------------- arch/arm/cpu/arm946es/start.S | 77 --------------------------- arch/arm/cpu/arm_intcm/start.S | 77 --------------------------- arch/arm/cpu/armv7/start.S | 78 --------------------------- arch/arm/cpu/ixp/start.S | 77 --------------------------- arch/arm/cpu/pxa/start.S | 97 ++++----------------------------- arch/arm/cpu/s3c44b0/start.S | 77 --------------------------- arch/arm/cpu/sa1100/start.S | 77 --------------------------- arch/arm/lib/Makefile | 1 + arch/arm/lib/relocate.S | 106 +++++++++++++++++++++++++++++++++++++ board/freescale/mx31pdk/mx31pdk.c | 16 +++++- board/karo/tx25/tx25.c | 16 +++++- 17 files changed, 148 insertions(+), 1021 deletions(-) create mode 100644 arch/arm/lib/relocate.S -- 1.7.10.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot