2199245
--- ffcall-20091110cvs.orig/avcall/avcall.h.in	2009-10-16 20:09:06.000000000 +0200
2199245
+++ ffcall-20091110cvs/avcall/avcall.h.in	2010-04-04 12:43:50.500013405 +0200
2199245
@@ -351,8 +351,7 @@ typedef struct
2199245
 #if defined(__sparc64__)
2199245
   /* store the floating-point arguments in an extra array */
2199245
   int			anum;		/* redundant: (LIST).aptr = &(LIST).args[(LIST).anum] */
2199245
-  unsigned int		farg_mask;	/* bitmask of those entries in farg[] which have a value */
2199245
-  unsigned int		darg_mask;	/* bitmask of those entries in args[] which have a double value */
2199245
+  unsigned int		darg_mask;	/* bitmask of those entries in args[] which have a float or double value */
2199245
 #endif
2199245
 #if defined(__ia64__) || defined(__x86_64__)
2199245
   /* store the floating-point arguments in an extra array */
2199245
@@ -436,7 +435,6 @@ typedef struct
2199245
 #if defined(__sparc64__)
2199245
 #define __av_start1(LIST)						\
2199245
    (LIST).anum = 0,							\
2199245
-   (LIST).farg_mask = 0,						\
2199245
    (LIST).darg_mask = 0,						\
2199245
    (LIST).aptr = &(LIST).args[0],					\
2199245
    (LIST).eptr = &(LIST).args[__AV_ALIST_WORDS],
2199245
@@ -902,8 +900,8 @@ typedef struct
2199245
  */
2199245
 #define av_float(LIST,VAL)						\
2199245
   ((LIST).aptr >= __av_eptr(LIST)					\
2199245
-   ? -1 : (((LIST).anum < 16 && ((LIST).farg_mask |= (1 << (LIST).anum))), \
2199245
-	   (*(float*)(LIST).aptr = (float)(VAL)),			\
2199245
+   ? -1 : (((LIST).anum < 16 && ((LIST).darg_mask |= (1 << (LIST).anum))), \
2199245
+	   (((float*)(LIST).aptr)[1] = (float)(VAL)),			\
2199245
 	   (LIST).anum++,						\
2199245
 	   (LIST).aptr++,						\
2199245
 	   0))
2199245
@@ -1332,10 +1330,8 @@ typedef struct
2199245
       ? -1 : (ASSIGN(TYPE,TYPE_SIZE,TYPE_ALIGN,(void*)((__avword)(LIST).aptr-(TYPE_SIZE)),VAL),\
2199245
 	      (LIST).aptr = (__avword*)(((__avword)(LIST).aptr+sizeof(__avword)-1) & -(long)sizeof(__avword)),\
2199245
 	      ((LIST).anum < 16						\
2199245
-		&& ((LIST).farg_mask |= (-1 << (LIST).anum),		\
2199245
-		    (LIST).darg_mask |= (-1 << (LIST).anum))),		\
2199245
+		&& ((LIST).darg_mask |= (-1 << (LIST).anum))),		\
2199245
 	      (LIST).anum += (((((TYPE_SIZE)+(TYPE_ALIGN)-1) & -(long)(TYPE_ALIGN)) + sizeof(__avword)-1) & -(long)sizeof(__avword))/sizeof(__avword),\
2199245
-	      (LIST).farg_mask &= (1 << ((LIST).anum < 16 ? (LIST).anum : 16)) - 1, \
2199245
 	      (LIST).darg_mask &= (1 << ((LIST).anum < 16 ? (LIST).anum : 16)) - 1, \
2199245
 	      0)))
2199245
 #endif