From mboxrd@z Thu Jan 1 00:00:00 1970 From: York Sun Date: Wed, 30 Apr 2014 13:38:49 -0700 Subject: [U-Boot] [PATCH 1/2] common/board_f: Add back gd init In-Reply-To: <1398882255.24575.206.camel@snotra.buserror.net> References: <1398725474-864-1-git-send-email-yorksun@freescale.com> <536133DF.1070406@freescale.com> <1398880629.24575.185.camel@snotra.buserror.net> <53613D86.5050602@freescale.com> <1398882255.24575.206.camel@snotra.buserror.net> Message-ID: <53615F59.2090806@freescale.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 04/30/2014 11:24 AM, Scott Wood wrote: >> Before this change, we have >> >> #ifndef CONFIG_X86 >> gd_t data; >> >> gd = &data; >> #endif >> >> This is overriding the gd. > > Yes, as I said, "If PPC needs gd before board_init_f(), then add PPC (or > some other relevant symbol if it's not all PPC) to the #ifndef X86." > >> For PPC, gd is set in different places. Eg, cpu_init_early_f() for mpc85xx, >> cpu_init_f() for for mpc512x, mpc5xxx, mpc8260, mpc83xx, mpc86xx. They are all >> in different files. Since we have been using this assignment in >> arch/powerpc/lib/board.c for all PPC, it should be safe and clear to have >> correct assignment here. > > The generic board is an opportunity to clean up cruft. Non-mpc85xx can > be dealt with when they get converted. > > What 85xx currently does seems bad -- it initializes the gd, clears it, > may or may not use it, then clears it again. Figure out if the 85xx > code is using gd before board_init_f(). If it is, skip the clear in > board_init_f(), or at least clearly document what the pre-board_init_f() > usage is and that none of those values will last (but if that's the > case, why not use the stack for such temporary values?). If it's not > used, then get rid of the early gd setting and use gd on the stack like > the other arches do. > I took a deeper look at 85xx code. We use gd before board_init_f. I can move some of them to use return value, but for "law" operations in arch/powerpc/cpu/mpc8xxx/law.c, we need "gd". York