Issue with powerpc-eabivle-gcc.exe 4.9.4 with -mspe2 option using S32r274 (e200Z7 core)

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Issue with powerpc-eabivle-gcc.exe 4.9.4 with -mspe2 option using S32r274 (e200Z7 core)

893 Views
j_cole
Contributor II

I have encountered an issue when compiling the code with powerpc-eabivle-gcc.exe 4.9.4 with -mspe2 option using an s32R274 e200z7 core.  It builds and runs fine without the -mspe2, but it crashes during runtime and gets trapped in a watchdog timer interrupt vector #12 with the -mspe2 option.  I am using S32 Design Studio for Power Architecture v2017.R1.

The offending line of code is a simple typecast to a float:

tmpFloat = (float)tmpInt64;

Where tmpFloat is of type float and tmpInt64 is of type int64_t.

According to the disassembly, the code compiles into the following assembly instructions:

se_lwz r3,32(r31)
se_lwz r4,36(r31)
e_bl 0x10c2d88 <__floatdisf>
se_mr r7,r3 <-------- Crashes here
e_stw r7,40(r31)

To add to the confusion, I get the same assembly output whether the -mspe2 option is included or not.

Any advice?

Labels (1)
0 Kudos
1 Reply

672 Views
j_cole
Contributor II

Of course, after posting the question I found a solution.  The SPE must be enabled in the core prior to using it. 

This can be done as follows:

mfmsr r6

se_bseti r6,6

mtmsr r6