[kaffe] Kaffe on XScale
Helmer Krämer
hkraemer at freenet.de
Sat Oct 9 05:59:52 PDT 2004
On Wed, 6 Oct 2004 12:55:19 +0200
Thomas Winkler <tom at qwws.net> wrote:
Hi,
> I'm currently trying to compile kaffe for the the intel XScale (ARM, Big
> Endian).
> I tried kaffe 1.1.4 as well as kaffe CVS HEAD (20041006). But I've run into
> problems I could not manage to resolve on my own and I hope that somebody on
> the list is able to help me.
>
> build environment:
> binutils-2.15
> gcc-3.4.0
> glibc-2.3.2
could you probably try whether the attached patch (against CVS HEAD)
makes any difference? GCC might be crashing because kaffe makes use
of fp registers, but your gcc was configured for soft float....
BTW, has anybody used libffi on arm for functions that return 64bit
values?
Regards,
Helmer
-------------- next part --------------
Index: config/arm/sysdepCallMethod.h
===================================================================
RCS file: /cvs/kaffe/kaffe/config/arm/sysdepCallMethod.h,v
retrieving revision 1.5
diff -u -r1.5 sysdepCallMethod.h
--- config/arm/sysdepCallMethod.h 28 Jun 2004 19:05:20 -0000 1.5
+++ config/arm/sysdepCallMethod.h 9 Oct 2004 12:54:14 -0000
@@ -39,7 +39,9 @@
register int r1 asm("r1");
register int r2 asm("r2");
register int r3 asm("r3");
+#ifndef __SOFTFP__
register double f0 asm("f0");
+#endif
default:
{
@@ -70,11 +72,20 @@
break;
case 'D':
+#ifdef __SOFTFP__
+ (&call->ret->i)[1] = r1;
+ (&call->ret->i)[0] = r0;
+#else
call->ret->d = (double) f0;
+#endif
break;
case 'F':
+#ifdef __SOFTFP__
+ call->ret->i = r0;
+#else
call->ret->f = (float) f0;
+#endif
break;
case 'J':
More information about the kaffe
mailing list