From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Holler Date: Fri, 29 Oct 2010 15:50:56 +0200 Subject: [U-Boot] Most ARM CPU's have buggy clear_bss? In-Reply-To: <4CCACE26.8060104@free.fr> References: <4CC93C74.6050309@ahsoftware.de> <4CC94305.8060001@ahsoftware.de> <4CCA8AF0.3000201@ahsoftware.de> <4CCA91AD.3060806@free.fr> <4CCAB659.5010309@ahsoftware.de> <4CCAB954.5050506@free.fr> <4CCABEAF.40305@ahsoftware.de> <4CCACE26.8060104@free.fr> Message-ID: <4CCAD140.8050207@ahsoftware.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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