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

Wolfgang Denk
2010-10-28T11:38:57Z

Dear Reinhard Meyer,

In message <4CC95B9E.3040108@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.