Simon Kagstrom <simon.kagst...@netinsight.net> writes: > U-boot for Marvell Kirkwood boards no longer work after the EABI changes > introduced in commit f772acf8a584067033eff1e231fcd1fb3a00d3d9. This > turns out to be caused by a stack alignment issue. The armv5te > instructions ldrd/strd instructions require 8-byte alignment to work > properly (otherwise undefined behavior), and start.S gave the stack a > 12-byte alignment. > > Tested on an OpenRD base board, where both printouts and ubifs stuff now > works. > > Signed-off-by: Simon Kagstrom <simon.kagst...@netinsight.net> > --- > ChangeLog: > v2: Update after Andrews comments > * Mask away the low address bits to get 16-byte alignment > > cpu/arm926ejs/start.S | 5 ++++- > 1 files changed, 4 insertions(+), 1 deletions(-) > > diff --git a/cpu/arm926ejs/start.S b/cpu/arm926ejs/start.S > index 8043322..cd3a6bd 100644 > --- a/cpu/arm926ejs/start.S > +++ b/cpu/arm926ejs/start.S > @@ -171,7 +171,10 @@ stack_setup: > #ifdef CONFIG_USE_IRQ > sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ) > #endif > - sub sp, r0, #12 /* leave 3 words for abort-stack */ > + sub r0, r0, #12 /* leave 3 words for abort-stack and */ > + mov r1, #7 /* 8-byte align stack for ldrd/strd */ > + and r1, r0 > + sub sp, r0, r1
Why not simply do this: sub r0, r0, #12 bic sp, r0, #7 -- Måns Rullgård m...@mansr.com _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot