[U-Boot] [RFC PATCH 0/7] reboard: Introduce generic relocation feature

Simon Glass sjg at chromium.org
Tue Nov 22 00:57:53 CET 2011


This is the second patch series aiming to unify the various board.c files
in each architecture into a single one. This series creates a libboard
library and implements relocation in it. It then moves ARM over to use
this framework, as an example.

On ARM the relocation code is duplicated for each CPU yet it
is the same. We can bring this up to the arch level. But since (I believe)
Elf relocation is basically the same process for all archs, there is no
reason not to bring it up to the generic level.

This series establishes a new libboard library in the board/ subdir and
puts some relocation code in it. Each architecture which uses this
framework needs to provide a function called arch_elf_relocate_entry()
which processes a single relocation entry. If there is concern about
calling a function for all 2000-odd relocations then I can change this.

For ARM, a new arch/arm/lib/proc.S file is created, which holds generic
ARM assembler code (things that cannot be written in C and are common
functions used by all ARM CPUs). This helps reduce duplication. Interrupt
handling code and perhaps even some startup code can move there later.

It may be useful for other architectures to have a similar file.

This series moves ARM over to use this framework. Overall this means that
two new files are required 'early' in boot: board/reloc.c and
arch/arm/lib/proc.S.  This is tricky mainly due to SPL. I believe that
we may need to adjust link scripts to put these two files early in the
link scripts also. But I am not sure about this and can't actually find
a problem as yet. I would much prefer to solve this with a new section
name like .text.early if we can.

(I should really cc all arch maintainers but I think in that case I get
an error from the list server. Not sure what the limit is.)

Comments please...


Simon Glass (7):
  reboard: define CONFIG_SYS_LEGACY_BOARD everywhere
  reboard: Add generic link symbols
  reboard: Add generic relocation feature
  reboard: arm: Add relocation function
  reboard: arm: Add processor function library
  reboard: arm: Move over to generic relocation
  reboard: arm: Remove unused code in start.S

 Makefile                                    |    1 +
 README                                      |    5 +
 arch/arm/cpu/arm1136/start.S                |  121 ----------------
 arch/arm/cpu/arm1176/start.S                |  202 ---------------------------
 arch/arm/cpu/arm720t/start.S                |  115 ---------------
 arch/arm/cpu/arm920t/start.S                |  123 ----------------
 arch/arm/cpu/arm925t/start.S                |  123 ----------------
 arch/arm/cpu/arm926ejs/start.S              |  130 -----------------
 arch/arm/cpu/arm946es/start.S               |  118 ----------------
 arch/arm/cpu/arm_intcm/start.S              |  123 ----------------
 arch/arm/cpu/armv7/start.S                  |  126 -----------------
 arch/arm/cpu/ixp/start.S                    |  115 ---------------
 arch/arm/cpu/lh7a40x/start.S                |  112 ---------------
 arch/arm/cpu/pxa/start.S                    |  122 ----------------
 arch/arm/cpu/s3c44b0/start.S                |  115 ---------------
 arch/arm/cpu/sa1100/start.S                 |  112 ---------------
 arch/arm/lib/Makefile                       |    5 +
 arch/arm/lib/arch_reloc.c                   |   47 ++++++
 arch/arm/lib/proc.S                         |   35 +++++
 arch/avr32/config.mk                        |    3 +
 arch/blackfin/config.mk                     |    3 +
 arch/m68k/config.mk                         |    3 +
 arch/microblaze/config.mk                   |    3 +
 arch/mips/config.mk                         |    3 +
 arch/nds32/config.mk                        |    3 +
 arch/nios2/config.mk                        |    3 +
 arch/powerpc/config.mk                      |    3 +
 arch/sandbox/config.mk                      |    3 +
 arch/sh/config.mk                           |    3 +
 arch/sparc/config.mk                        |    3 +
 arch/x86/config.mk                          |    3 +
 board/Makefile                              |   45 ++++++
 board/reloc.c                               |  101 +++++++++++++
 include/asm-generic/link_symbols.h          |   38 +++++
 include/common.h                            |    2 +-
 include/reloc.h                             |   37 +++++
 nand_spl/board/freescale/mx31pdk/Makefile   |    8 +-
 nand_spl/board/freescale/mx31pdk/u-boot.lds |    1 +
 nand_spl/board/karo/tx25/Makefile           |    8 +-
 nand_spl/board/karo/tx25/u-boot.lds         |    1 +
 spl/Makefile                                |    1 +
 41 files changed, 368 insertions(+), 1760 deletions(-)
 create mode 100644 arch/arm/lib/arch_reloc.c
 create mode 100644 arch/arm/lib/proc.S
 create mode 100644 board/Makefile
 create mode 100644 board/reloc.c
 create mode 100644 include/asm-generic/link_symbols.h
 create mode 100644 include/reloc.h

-- 
1.7.3.1



More information about the U-Boot mailing list