[U-Boot] Most ARM CPU's have buggy clear_bss?

Wolfgang Denk wd at denx.de
Thu Oct 28 13:38:57 CEST 2010


Dear Reinhard Meyer,

In message <4CC95B9E.3040108 at emk-elektronik.de> you wrote:
>
> > I've got confused by that too. Currently there are 3 defines in regard 
> > to relocation:
> > 
> > CONFIG_SYS_ARM_WITHOUT_RELOC
> 
> Introduced by Heiko as a try to unbreak old boards that are not converted to
> relocation yet. Basically it #else's between the old code and the new code.
> As far as I understand that define won't work anymore because of several other
> changes in u-boot that necessitate fixing the affected boards.
> 
> > CONFIG_RELOC_FIXUP_WORKS
> 
> Not needed for ARM when ELF relocation is used. I don't know whether other
> architectures still need it. Do NOT set it on ARM or you get in trouble by
> some addresses being relocated twice.

Sure?  My understanding is that it MUST be set since we have
elf_reloc?

And I see this:

arch/arm/include/asm/config.h:#define CONFIG_RELOC_FIXUP_WORKS

> > CONFIG_SKIP_RELOCATE_UBOOT
> 
> The old way in ARM before ELF relocation was introduced. A misnomer because it seemingly
> skipped the *COPY* of the image from whereever it was loaded to the TEXT_BASE
> location. There was no real *RELOCATION* done there. This define probably does not work
> anymore. It was set on ARM boards where a preloader did load u-boot to the
> TEXT_BASE address.
> 
> In an up to date ARM system all those defines MUST NOT be set.

My understanding is that CONFIG_SYS_ARM_WITHOUT_RELOC and
CONFIG_SKIP_RELOCATE_UBOOT should not be set (and I don;t know what
happens if you do), but CONFIG_RELOC_FIXUP_WORKS is automaticlly set
for all ARM systems now.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Two wrongs don't make a right, but three rights make a left.


More information about the U-Boot mailing list