diff options
author | Simon Kagstrom <simon.kagstrom@netinsight.net> | 2009-10-06 08:44:22 +0200 |
---|---|---|
committer | Tom Rix <Tom.Rix@windriver.com> | 2009-10-24 09:55:25 -0500 |
commit | 8003c361deec3ee651451662efd05352f1abdd40 (patch) | |
tree | 00cb74e53916da716b68fce2c65e83d4a15b29dd | |
parent | e63e5904b48528f3f3cc98317df6fc62fab25bf9 (diff) | |
download | u-boot-imx-8003c361deec3ee651451662efd05352f1abdd40.zip u-boot-imx-8003c361deec3ee651451662efd05352f1abdd40.tar.gz u-boot-imx-8003c361deec3ee651451662efd05352f1abdd40.tar.bz2 |
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 <simon.kagstrom@netinsight.net>
-rw-r--r-- | 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 */ |