[U-Boot] [PATCH] arm926ejs: 16-byte align stack to avoid LDRD/STRD problems

Simon Kagstrom simon.kagstrom at netinsight.net
Mon Oct 5 16:40:54 CEST 2009


On Mon, 5 Oct 2009 09:30:54 -0500
Andrew Dyer <amdyer at gmail.com> wrote:

> >        sub     r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
> >  #endif
> > -       sub     sp, r0, #12             /* leave 3 words for abort-stack    */
> > +       sub     sp, r0, #16             /* leave 3 words for abort-stack and */
> > +                                       /* align stack for ldrd/strd */
> 
> This doesn't guarantee an alignment.  Right above this code is a
> series of subtractions by constants, any one of which could throw the
> alignment out of whack and be difficult to figure out.
> 
> IMHO it's much safer to do the subtraction to R0, then mask the bottom
> address bits out to guarantee alignment, then stuff the results into
> sp.

Right, new patch coming up.

Thanks,
// Simon


More information about the U-Boot mailing list