difference between xscale and iwmmxt
Bridge Wu
mingqiao.wu@gmail.com
Thu Sep 7 02:53:00 GMT 2006
Hello,
It seems -mcpu=xscale and -mcpu=iwmmxt not only mean for different
target, but also mean different calling convention. E.g, look at issue
below.
I built an arm linux tool chain with gcc-3.4.3, glibc-2.3.2 and
binutils-2.14.90.0.7 by using crosstool. I set
GCC_EXTRA_CONFIG="--with-cpu=iwmmxt --enable-cxx-flags=-mcpu=iwmmxt".
% cat floattest.c
#include <stdio.h>
int main()
{
float a;
printf("%f\n", 1.0/3.0);
return 0;
}
% arm-linux-gcc floattest.c -mcpu=xscale
The result is wrong.
% arm-linux-gcc floattest.c
% arm-linux-gcc floattest.c -mcpu=iwmmxt
Both the results are correct.
Look at the generated assembly code, I find "ldmia r1, {r1, r2}" is
used before invoking printf() with -mcpu=xscale, while "ldmia r2,
{r2, r3}" is used with -mcpu=iwmmxt. It shows these two options have
different calling convention.
Then which PCS (procedure call standard) do xscale and iwmmxt follow
up respectively? Are there any clues to this?
--
best regards,
-Bridge
--
For unsubscribe information see http://sourceware.org/lists.html#faq
More information about the crossgcc
mailing list