PatchSet 5312 
Date: 2004/10/19 17:18:23
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
Fix for gcc ICE when cross-compiling for xscale

2004-10-19  Helmer Kraemer  <[EMAIL PROTECTED]>

        * config/arm/sysdepCallMethod.h
        (sysdepCallMethod) Use f0 only if we're not using
        soft-float. Fixes ICE in gcc.

        Reported by:  Jari Korva <[EMAIL PROTECTED]>

Members: 
        ChangeLog:1.2864->1.2865 
        config/arm/sysdepCallMethod.h:1.5->1.6 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2864 kaffe/ChangeLog:1.2865
--- kaffe/ChangeLog:1.2864      Mon Oct 18 21:39:40 2004
+++ kaffe/ChangeLog     Tue Oct 19 17:18:23 2004
@@ -1,3 +1,11 @@
+2004-10-19  Helmer Kraemer  <[EMAIL PROTECTED]>
+
+       * config/arm/sysdepCallMethod.h
+       (sysdepCallMethod) Use f0 only if we're not using
+       soft-float. Fixes ICE in gcc.
+
+       Reported by:  Jari Korva <[EMAIL PROTECTED]>
+
 2004-10-18  Dalibor Topic  <[EMAIL PROTECTED]>
 
        * libraries/javalib/java/text/RuleBasedCollator.java:
Index: kaffe/config/arm/sysdepCallMethod.h
diff -u kaffe/config/arm/sysdepCallMethod.h:1.5 kaffe/config/arm/sysdepCallMethod.h:1.6
--- kaffe/config/arm/sysdepCallMethod.h:1.5     Mon Jun 28 19:05:20 2004
+++ kaffe/config/arm/sysdepCallMethod.h Tue Oct 19 17:18:26 2004
@@ -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:
     {
@@ -60,7 +62,10 @@
   case 0:
     asm volatile ("mov lr, pc\n"
 "                    mov pc, %3\n"
-                  : "=r" (r0), "=r" (r1), "=f" (f0)
+                  : "=r" (r0), "=r" (r1)
+#ifndef __SOFTFP__
+                                       , "=f" (f0)
+#endif
                   : "r" (call->function),
                     "0" (r0), "1" (r1), "r" (r2), "r" (r3)
                   : "ip", "lr");
@@ -70,11 +75,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':

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to