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

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

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

1,086件の閲覧回数
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?

ラベル(1)
0 件の賞賛
返信
1 返信

865件の閲覧回数
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