From: Simon Kagstrom Date: Tue, 6 Oct 2009 06:44:22 +0000 (+0200) Subject: arm926ejs: 8-byte align stack to avoid LDRD/STRD problems X-Git-Tag: v2009.11-rc1~12^2^2~2 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8003c361deec3ee651451662efd05352f1abdd40;p=oweals%2Fu-boot.git arm926ejs: 8-byte align stack to avoid LDRD/STRD problems 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 --- diff --git a/cpu/arm926ejs/start.S b/cpu/arm926ejs/start.S index 8043322583..4421b6a990 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 */