[U-Boot] [PATCH] MPC85xx crashes on SPE instruction (misalignment?), workaround tested to work
Leon Woestenberg
leon.woestenberg at gmail.com
Mon Oct 26 10:03:32 CET 2009
Hello,
my MPC85xx U-Boot crashed on the last instruction:
openembedded/tmp/cross/ppce500v2/bin/powerpc-angstrom-linux-gnuspe-objdump
-M e500x2 -S u-boot | less
int parse_stream_outer(struct in_str *inp, int flag)
{
effa4784: 94 21 ff 38 stwu r1,-200(r1)
effa4788: 7c 08 02 a6 mflr r0
effa478c: 42 9f 00 05 bcl- 20,4*cr7+so,effa4790
<parse_stream_outer+0xc>
effa4790: 7d 80 00 26 mfcr r12
effa4794: 13 c1 b3 21 evstdd r30,176(r1)
...which is a SPE instruction, although -mno-spe was used.
tmp/cross/ppce500v2/bin/powerpc-angstrom-linux-gnuspe-gcc --version
powerpc-angstrom-linux-gnuspe-gcc (GCC) 4.3.3
Seems to be a known issue (since 2008-04?!)
Googled some, turns out this patch/workaround works for me on MPC8536DS.
Signed-off-by: Leon Woestenberg <leon at sidebranch.com>
Index: git/cpu/mpc85xx/config.mk
===================================================================
--- git.orig/cpu/mpc85xx/config.mk 2009-10-23 13:15:11.000000000 +0200
+++ git/cpu/mpc85xx/config.mk 2009-10-23 13:17:27.000000000 +0200
@@ -24,6 +24,11 @@
PLATFORM_RELFLAGS += -fPIC -ffixed-r14 -meabi
PLATFORM_CPPFLAGS += -ffixed-r2 -Wa,-me500 -msoft-float -mno-string
+
+# -mspe=yes is needed to have -mno-spe accepted by a buggy GCC;
+# see "[PATCH,rs6000] make -mno-spe work as expected" on
+# http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00311.html
+PLATFORM_CPPFLAGS +=$(call cc-option,-mspe=yes)
PLATFORM_CPPFLAGS +=$(call cc-option,-mno-spe)
# Use default linker script. Board port can override in board/*/config.mk
Regards,
--
Leon
More information about the U-Boot
mailing list