[U-Boot] [PATCH] MPC85xx crashes on SPE instruction (misalignment?), workaround tested to work

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@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,

On Oct 26, 2009, at 4:03 AM, Leon Woestenberg wrote:
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@sidebranch.com
applied to 85xx
- k
participants (2)
-
Kumar Gala
-
Leon Woestenberg