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

Alexander Holler
2010-10-29T13:50:56Z

Am 29.10.2010 15:37, schrieb Albert ARIBAUD:
> Le 29/10/2010 14:31, Alexander Holler a ?crit :
>
>>> Hmm... What do you mean by "a non relocated BSS ins't cleared" ? AFAICT,
>>> the start.S code clears the relocated BSS. Are we in a case where you
>>> prevent part of the relocation process, such as by using
>>> CONFIG_SKIP_RELOCATE_UBOOT?
>>
>> The (wrong, not relocated) location of nand_chip (building without
>> -fPIC) is inside the BSS before relocation through sta?t.S. This part of
>> RAM will not be cleared because it shouldn't be used.
>
> Er... nand_chip is declared as static global uninitialized, which makes
> it normal that it goes to BSS, and also normal that it has no fixups
> applied, as relocation happens before BSS can be accessed, that is, at a
> time where BSS is still completely uninitialized. Relocations to BSS
> just don't make sense, they're done only to constant code (.text and
> .data) emitted by the compiler/linker.
>
> So if you call nand_init to fill nand_chip before relocation, don't
> expect it to be fixed up during relocation and useable after. That
> simply is not possible.

nand_init() is called inside board.c after relocation. But the
relocation does not change the address of that nand_chip. At least this
is what that printf("nand_chip: %p\n", &nand_chip[0]); inside
nand_init() tells me.

>
>>> Providing the location on the Net of the toolchains will be enough,
>>> (along with which version of nand.c you're using if that matters).
>>
>> I'm using Gentoo where it's easy to swith the compiler (on a DockStar ~
>> Sheevaplug = Kirkwood Feroceon 88FR131) to compile the current HEAD of
>> the master
>
> I'm sure it is, but it does not tell me where I can get these toolchains
> and test them :) (except for the ELDK one which I use routinely).

I assume it's not possible. Gentoo is compiled from source. A minimal
root containing binaries for binutils and gcc (4.4.x currently I think)
is available at

http://distfiles.gentoo.org/releases/arm/autobuilds/current-stage3/

Therefore my offer to supply generated nand.s.

Regards,

Alexander