[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