[PATCH] ARM: Add relocatable binary support

Sascha Hauer s.hauer at pengutronix.de
Mon Mar 4 15:03:03 EST 2013


The following adds relocatable binary support for ARM. This can
be useful when a suitable memory location for the barebox binary
is not known at compile time, for example when compiling for multiple
SoCs.

In most cases enabling this feature will only result in the visible
effect that the binary gets bigger, so this feature is fully optional.
The relocatable support can be enabled for the PBL and the real binary
independently for greater flexibility and better debugability.

This series has been tested on various boards and I hope I have
covered all combinations of PBL enabled/disabled, PBL relocation
enabled/disabled, relocation enabled/disabled and MMU enabled/disabled.

Sascha

----------------------------------------------------------------
Sascha Hauer (6):
      ARM: make cpu architecture detection available as static inline function
      ARM: add early mmu cache flush function and use it in setup_c
      ARM: provide accessor functions for linker variables
      ARM boards: Use accessor functions to access linker variables
      ARN: fixup vector addresses for relocatable binaries
      ARM: Add relocatable binary support

 arch/arm/Kconfig                               |  9 ++++
 arch/arm/Makefile                              |  4 ++
 arch/arm/boards/friendlyarm-tiny210/lowlevel.c |  3 +-
 arch/arm/cpu/Makefile                          |  3 ++
 arch/arm/cpu/cache.c                           | 33 +++++++++++++
 arch/arm/cpu/common.c                          | 68 ++++++++++++++++++++++++++
 arch/arm/cpu/cpu.c                             | 34 +------------
 arch/arm/cpu/exceptions.S                      | 55 ++++++++++++++++++---
 arch/arm/cpu/mmu.c                             |  2 +
 arch/arm/cpu/setupc.S                          | 62 +++++++++++++++++++++++
 arch/arm/cpu/start-pbl.c                       | 18 +++++--
 arch/arm/cpu/start.c                           |  5 ++
 arch/arm/include/asm/barebox-arm.h             | 34 +++++++++++++
 arch/arm/include/asm/cache.h                   |  8 +++
 arch/arm/include/asm/mmu.h                     |  1 -
 arch/arm/include/asm/sections.h                | 33 +++++++++++++
 arch/arm/include/asm/system_info.h             | 43 ++++++++++++++++
 arch/arm/lib/barebox.lds.S                     | 17 +++++++
 arch/arm/lib/runtime-offset.S                  | 32 ++++++++++++
 arch/arm/mach-imx/external-nand-boot.c         | 27 +++++-----
 arch/arm/pbl/Makefile                          |  3 ++
 arch/arm/pbl/zbarebox.lds.S                    | 16 ++++++
 common/Kconfig                                 |  2 +-
 drivers/mtd/nand/nand_s3c24xx.c                |  2 +-
 pbl/Kconfig                                    | 10 ++++
 25 files changed, 466 insertions(+), 58 deletions(-)
 create mode 100644 arch/arm/cpu/common.c



More information about the barebox mailing list