On Sun, 13 Oct 2013 09:10:28 +0200, Albert ARIBAUD <albert.u.b...@aribaud.net> wrote:
> Remove the last uses of symbol offsets in ARM U-Boot. > Remove some needless uses of _TEXT_BASE. > Remove all _TEXT_BASE definitions. > > Signed-off-by: Albert ARIBAUD <albert.u.b...@aribaud.net> > --- > _TEXT_BASE was only used by ARM to allow resolution of > symbol offsets, themselves only needed due to absolute > relocations. > > In some places, _TEXT_BASE was locally defined only > to provide a literal for CONFIG_SYS_TEXT_BASE when the > latter could have been used directly. > > Sometimes even, _TEXT_BASE was defined but unused. > > Since all relocations in ARM are relative, offsets, > _TEXT_BASE and CONFIG_SYS_SYM_OFFSETS can be completely > removed, and their uses can be replaced with adequate > use of compiler-generated symbols from sections.c file. Of course, I've done some non-regression testing before submitting, but this should undergo heavier testing by people with various ARM hardware. Considering the changes, checks should concentrate on: - monitor_flash_len; - gd fields mon_len, fdt_blob, and reloc_off; - targets the lowlevel_init.S of which was moified. Also note two things I've noticed only after posting v1: > diff --git a/README b/README > index 0bb1ad5..1f9e16f 100644 > --- a/README > +++ b/README > @@ -3522,12 +3522,6 @@ Configuration Settings: > its config.mk file). If you find problems enabling this option on > your board please report the problem and send patches! > > -- CONFIG_SYS_SYM_OFFSETS > - This is set by architectures that use offsets for link symbols > - instead of absolute values. So bss_start is obtained using an > - offset _bss_start_ofs from CONFIG_SYS_TEXT_BASE, rather than > - directly. You should not need to touch this setting. The removal of CONFIG_SYS_SYM_OFFSETS from the codebase is not mentioned in the commit message. Will add in v2. > diff --git a/arch/arm/cpu/arm926ejs/at91/lowlevel_init.S > b/arch/arm/cpu/arm926ejs/at91/lowlevel_init.S > index 39de2f4..7d1a633 100644 > --- a/arch/arm/cpu/arm926ejs/at91/lowlevel_init.S > +++ b/arch/arm/cpu/arm926ejs/at91/lowlevel_init.S > @@ -26,27 +26,18 @@ > #define CONFIG_SYS_MATRIX_EBICSA_VAL CONFIG_SYS_MATRIX_EBI0CSA_VAL > #endif > > -_TEXT_BASE: > - .word CONFIG_SYS_TEXT_BASE > - > .globl lowlevel_init > .type lowlevel_init,function > lowlevel_init: > > - mov r5, pc /* r5 = POS1 + 4 current */ > POS1: > + adr r5, POS1 /* r5 = POS1 run time */ > ldr r0, =POS1 /* r0 = POS1 compile */ This could in fact use the existing lowlevel_init label rather than introduce POS1 for this purpose. Will fix in v2. Amicalement, -- Albert. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot