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