From mboxrd@z Thu Jan 1 00:00:00 1970 From: Scott Wood Date: Tue, 12 Feb 2013 16:48:38 -0600 Subject: [U-Boot] [PATCH v5 16/23] Adjust board_f.c for ppc In-Reply-To: (from sjg@chromium.org on Tue Feb 12 16:41:15 2013) Message-ID: <1360709318.24612.15@snotra> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 02/12/2013 04:41:15 PM, Simon Glass wrote: > Hi Scott, > > On Tue, Feb 12, 2013 at 2:32 PM, Scott Wood > wrote: > > On 02/08/2013 09:12:12 AM, Simon Glass wrote: > >> > >> #ifndef CONFIG_SPL_BUILD > >> static int reserve_stacks(void) > >> { > >> +#ifdef CONFIG_PPC > >> + ulong *s; > >> +#endif > >> + > >> /* setup stack pointer for exceptions */ > >> gd->dest_addr_sp -= 16; > >> gd->dest_addr_sp &= ~0xf; > >> @@ -398,6 +532,14 @@ static int reserve_stacks(void) > >> /* leave 3 words for abort-stack, plus 1 for alignment */ > >> gd->dest_addr_sp -= 16; > >> > >> +#ifdef CONFIG_PPC > >> + /* Clear initial stack frame */ > >> + s = (ulong *) gd->dest_addr_sp; > >> + *s = 0; /* Terminate back chain */ > >> + *++s = 0; /* NULL return address */ > >> + gd->dest_addr_sp = (ulong) s; > >> +#endif > >> + > > > > > > PPC ABI requires 16-byte stack alignment, which would be broken by > the > > CONFIG_USE_IRQ section (which even still has an "ARM ABI" comment). > > > > I think this entire function should be kept in arch code. Stack > layout is > > inherently architecture/ABI specific. Some architectures even have > a stack > > that grows upward (not sure if any such are supported by U-Boot). > > Thanks for reviewing all this. > > While I am working to avoid it, one option is to create a weak > function which archs can override. The reason I am keen to avoid it, > at least for a first implementation, is that it obscures the > similarities. That's fine for most of the file, but I think there's not much that's truly generic when it comes to setting up the stack. It's not as if this is a huge function (at least before it grows a bunch of ifdefs). > In this case we could just just force 16-byte alignment, > and make the PPC code unconditional. It shouldn't hurt anything. The CONFIG_USE_IRQ section also has references to FIQs... if it's meant to be an ARM-specific CONFIG, perhaps it should be renamed (and definitely it should be documented). -Scott