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).

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
 v3: Update after Andrews and Måns comments
   * Use bic instruction to clear low address bits (I'm a ARM asm newbie as
     you can see)
   * Update description to actually match the code

Thanks again for all the comments!

 cpu/arm926ejs/start.S |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/cpu/arm926ejs/start.S b/cpu/arm926ejs/start.S
index 8043322..4421b6a 100644
--- a/cpu/arm926ejs/start.S
+++ b/cpu/arm926ejs/start.S
@@ -172,6 +172,7 @@ stack_setup:
        sub     r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
 #endif
        sub     sp, r0, #12             /* leave 3 words for abort-stack    */
+       bic     sp, r0, #7              /* 8-byte align stack for ABI 
compliance */
 
 clear_bss:
        ldr     r0, _bss_start          /* find start of bss segment        */
-- 
1.6.0.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to