diff options
author | Leon Woestenberg <leon.woestenberg@gmail.com> | 2009-10-26 10:03:32 +0100 |
---|---|---|
committer | Kumar Gala <galak@kernel.crashing.org> | 2009-10-26 21:35:45 -0500 |
commit | da0e5f7ee828f246d85997486fff308837069453 (patch) | |
tree | 53a2d7afcfa6f0bdfab6380d8934b668aa795884 | |
parent | 654ea1f3184235694306ddc5874baa27ad3018fe (diff) | |
download | u-boot-imx-da0e5f7ee828f246d85997486fff308837069453.zip u-boot-imx-da0e5f7ee828f246d85997486fff308837069453.tar.gz u-boot-imx-da0e5f7ee828f246d85997486fff308837069453.tar.bz2 |
ppc/85xx: Fix crashes due to generation of SPE instruction
U-Boot crashed on the last instruction:
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.
See http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00311.html for more info
Signed-off-by: Leon Woestenberg <leon@sidebranch.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
-rw-r--r-- | cpu/mpc85xx/config.mk | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/cpu/mpc85xx/config.mk b/cpu/mpc85xx/config.mk index beb3514..84651b8 100644 --- a/cpu/mpc85xx/config.mk +++ b/cpu/mpc85xx/config.mk @@ -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 |