
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