MVME5500 broken with gcc-4.0.2

Phillip Sorensen pas37 at cornell.edu
Thu Nov 3 17:41:20 UTC 2005


Joel Sherrill <joel at OARcorp.com> wrote:
> Till Straumann wrote:
> 
>> WARNING:
>>
>> rtems/gcc (implicitely) uses -maltivec on all 74xx CPUS and
>> the MVME5500 calls for -mcpu=7450.
>>
>> Unfortunately, with -maltivec, gcc uses vector registers for
>> some optimizations.
> 
> 
> What are those optimizations?  Are they integer or floating point
> related?

I have found at least one place.  For some reason, one of the 
optimizations uses a vector register in the bootpc_init function.  I 
don't have a version with debugging symbols, but it appears that the 
code is possible a translation of the bzero function.  (The dhcp_init 
function which runs fine is almost identical, except it uses memset 
instead of bzero.)

The code generated is

vxor    v0,v0,v0
stvx    v0,r24,r0
lis     r4,6
mr      r3,r24
stvx    v0,r0,r24

>> Workaround:
>>
>> make/custom/mvme5500: use -mcpu=750
>>

Compiling with -mcpu=750 produces code that runs without the previous 
problem.



More information about the users mailing list