[U-Boot] [PATCH 00/26 v2][NEXT] arm: add full relocation / cache support

Heiko Schocher
2010-09-17T11:10:27Z

This patch series add full relocation and cache support for arm
based boards. I test this for arm1136, arm_cortexa8 and arm926ejs
based boards.

Relocation support:

!! This change is not compatible to old code !!

If you want to compile in old style, you can set

CONFIG_SYS_ARM_WITHOUT_RELOC

but this possibility will be removed soon, so please
adapt your board(s)

changed arch/arm/lib/board.c to get inline with arch/powerpc/lib/board.c
maybe it is possible to snyc them to one arch/generic/lib/board.c?

This approach is similiar to powerpc, so there is a need for
an initial stack pointer addr defined through CONFIG_SYS_INIT_SP_ADDR.

Please also read doc/README.arm-relocation There is more
info what is done, and maybe should be done.

Cache support:

I used the patches from Alessandro Rubini:
http://lists.denx.de/pipermail/u-boot/2010-January/067099.html

and rebased them to actual code. Also, in case of full relocation,
the position of the TLB can not be set on compile time, instead
it is calculated in board_init_f() and stored in gd. Also added
cache support for arm_cortexa8 and arm1136.

changes since v1:

- missed to add statistics for enabling dcache to arm926ejs in
commit message. Add also CACHE command to the tx25 and
magnesium board. So I changed old patch
"ARM: flush cache for arm926" to
"ARM (ARM926ejs): add data cache support, tested on magnesium and tx25 board"
- set TEXT_BASE == relocation address for the tx25 board.
-> in relocation_code() no need to copy code again for
this board. This results in editing "ARM: implement relocation for ARM926"
patch.

-> So actual next branch needs a rebase. Sorry for that!

Heiko Schocher (26):
arm: get rid of bi_env
ARM: cp15: setup mmu and enable dcache
ARM (ARM926ejs): add data cache support, tested on magnesium and tx25
board
ARM V7 (OMAP): add data cache support, test on Beagle board
ARM (ARM11): add data cache support, test on Qong board
relocation: fixup cmdtable
common: move TOTAL_MALLOC_LEN to include/common.h
i2c: fix command usage help
disk/part.c: fix relocation fixup
i2c, omap24xx: set bus_initialized only after relocation.
nand_boot_fsl_nfc.c: make "nfc" a "static const" pointer
ARM: add relocation support
ARM: implement relocation for ARM11
ARM: implement relocation for ARM V7 (OMAP)
ARM: implement relocation for ARM926
ARM: implement relocation for ARM920
ARM: implement relocation for ARM925
ARM: implement relocation for ARM946
ARM: implement relocation for pxa
ARM: implement relocation for ixp
ARM: implement relocation for sa1100
ARM: implement relocation for s3c44b0
ARM: implement relocation for lh7a40x
ARM: implement relocation for arm_intcm
ARM: implement relocation for arm720t
ARM: implement relocation for arm1176

arch/arm/config.mk | 8 +
arch/arm/cpu/arm1136/start.S | 206 +++++++++++++++
arch/arm/cpu/arm1136/u-boot.lds | 14 +-
arch/arm/cpu/arm1176/start.S | 286 ++++++++++++++++++++
arch/arm/cpu/arm1176/u-boot.lds | 14 +-
arch/arm/cpu/arm720t/start.S | 170 ++++++++++++
arch/arm/cpu/arm720t/u-boot.lds | 14 +-
arch/arm/cpu/arm920t/start.S | 225 ++++++++++++++++-
arch/arm/cpu/arm920t/u-boot.lds | 14 +-
arch/arm/cpu/arm925t/start.S | 204 ++++++++++++++-
arch/arm/cpu/arm925t/u-boot.lds | 14 +-
arch/arm/cpu/arm926ejs/orion5x/dram.c | 24 ++-
arch/arm/cpu/arm926ejs/start.S | 172 ++++++++++++-
arch/arm/cpu/arm926ejs/u-boot.lds | 14 +-
arch/arm/cpu/arm946es/start.S | 168 ++++++++++++-
arch/arm/cpu/arm946es/u-boot.lds | 14 +-
arch/arm/cpu/arm_intcm/start.S | 166 ++++++++++++
arch/arm/cpu/arm_intcm/u-boot.lds | 14 +-
arch/arm/cpu/armv7/mx51/u-boot.lds | 14 +-
arch/arm/cpu/armv7/omap3/cache.S | 81 ++++++
arch/arm/cpu/armv7/omap3/emif4.c | 34 +++
arch/arm/cpu/armv7/omap3/sdrc.c | 38 +++
arch/arm/cpu/armv7/start.S | 191 +++++++++++++-
arch/arm/cpu/armv7/u-boot.lds | 14 +-
arch/arm/cpu/ixp/start.S | 280 ++++++++++++++++++++
arch/arm/cpu/ixp/u-boot.lds | 14 +-
arch/arm/cpu/lh7a40x/start.S | 187 +++++++++++++-
arch/arm/cpu/lh7a40x/u-boot.lds | 14 +-
arch/arm/cpu/pxa/start.S | 168 ++++++++++++
arch/arm/cpu/pxa/u-boot.lds | 14 +-
arch/arm/cpu/s3c44b0/start.S | 174 ++++++++++++
arch/arm/cpu/s3c44b0/u-boot.lds | 14 +-
arch/arm/cpu/sa1100/start.S | 162 ++++++++++++
arch/arm/cpu/sa1100/u-boot.lds | 14 +-
arch/arm/include/asm/config.h | 3 +-
arch/arm/include/asm/global_data.h | 11 +
arch/arm/include/asm/u-boot-arm.h | 14 +-
arch/arm/include/asm/u-boot.h | 4 -
arch/arm/lib/board.c | 468 ++++++++++++++++++++++++++++++++-
arch/arm/lib/cache-cp15.c | 82 ++++++
arch/arm/lib/cache.c | 13 +-
arch/arm/lib/interrupts.c | 19 ++-
arch/avr32/include/asm/u-boot.h | 1 -
arch/avr32/lib/board.c | 25 +--
arch/i386/include/asm/u-boot.h | 4 -
arch/m68k/lib/board.c | 35 +---
arch/mips/include/asm/u-boot.h | 2 -
arch/mips/lib/board.c | 36 +---
arch/powerpc/lib/board.c | 10 -
arch/sparc/lib/board.c | 28 +--
board/davedenx/qong/config.mk | 4 +-
board/davedenx/qong/qong.c | 87 ++++---
board/karo/tx25/config.mk | 4 +-
board/karo/tx25/tx25.c | 11 +-
board/keymile/km_arm/km_arm.c | 24 ++
board/logicpd/imx27lite/config.mk | 2 +-
board/logicpd/imx27lite/imx27lite.c | 15 +-
board/ti/beagle/config.mk | 2 +-
common/cmd_bdinfo.c | 12 +-
common/cmd_bmp.c | 6 +
common/cmd_i2c.c | 9 +
common/command.c | 37 +++
disk/part.c | 11 +-
doc/README.arm-relocation | 344 ++++++++++++++++++++++++
drivers/i2c/omap24xx_i2c.c | 4 +-
include/command.h | 3 +
include/common.h | 9 +
include/configs/da850evm.h | 6 +-
include/configs/imx27lite-common.h | 6 +
include/configs/km_arm.h | 4 +
include/configs/omap3_beagle.h | 6 +
include/configs/qong.h | 11 +
include/configs/tx25.h | 14 +-
nand_spl/board/karo/tx25/u-boot.lds | 14 +-
nand_spl/nand_boot.c | 7 +
nand_spl/nand_boot_fsl_nfc.c | 13 +-
76 files changed, 4344 insertions(+), 230 deletions(-)
create mode 100644 doc/README.arm-relocation