Lines Matching full:cif
92 const unsigned bytes = ecif->cif->bytes;
93 const unsigned flags = ecif->cif->flags;
141 if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
168 for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs;
176 if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
192 if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
215 if ((ecif->cif->abi != FFI_LINUX)
216 && (ecif->cif->abi != FFI_LINUX_SOFT_FLOAT))
223 if (ecif->cif->abi == FFI_LINUX_SOFT_FLOAT)
412 const unsigned long bytes = ecif->cif->bytes;
413 const unsigned long flags = ecif->cif->flags;
474 for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs;
587 /* Perform machine dependent cif processing */
589 ffi_prep_cif_machdep (ffi_cif *cif)
598 unsigned type = cif->rtype->type;
599 unsigned size = cif->rtype->size;
601 if (cif->abi == FFI_LINUX_SOFT_FLOAT)
604 if (cif->abi != FFI_LINUX64)
606 /* All the machine-independent calculation of cif->bytes will be wrong.
647 if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX64
648 && cif->abi != FFI_LINUX_SOFT_FLOAT)
658 if (cif->abi != FFI_LINUX_SOFT_FLOAT)
668 if (cif->abi == FFI_SYSV)
711 if (cif->abi != FFI_LINUX64)
717 for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
723 if (cif->abi == FFI_LINUX_SOFT_FLOAT)
731 if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
733 if (cif->abi == FFI_LINUX_SOFT_FLOAT)
750 if (cif->abi == FFI_LINUX_SOFT_FLOAT)
799 for (ptr = cif->arg_types, i = cif->nargs; i > 0; i--, ptr++)
805 if (cif->abi == FFI_LINUX_SOFT_FLOAT)
839 if (cif->abi != FFI_LINUX64)
868 cif->flags = flags;
869 cif->bytes = bytes;
881 ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
885 ecif.cif = cif;
891 if ((rvalue == NULL) && (cif->rtype->type == FFI_TYPE_STRUCT))
893 ecif.rvalue = alloca(cif->rtype->size);
899 switch (cif->abi)
906 ffi_call_SYSV (&ecif, -cif->bytes, cif->flags, ecif.rvalue, fn);
910 ffi_call_LINUX64 (&ecif, -(long) cif->bytes, cif->flags, ecif.rvalue, fn);
938 ffi_cif *cif,
946 FFI_ASSERT (cif->abi == FFI_LINUX64);
953 FFI_ASSERT (cif->abi == FFI_GCC_SYSV || cif->abi == FFI_SYSV);
971 closure->cif = cif;
1010 ffi_cif * cif;
1014 cif = closure->cif;
1015 avalue = alloca (cif->nargs * sizeof (void *));
1016 size = cif->rtype->size;
1026 if ((cif->rtype->type == FFI_TYPE_STRUCT
1027 && !((cif->abi == FFI_SYSV) && (size <= 8)))
1029 || (cif->rtype->type == FFI_TYPE_LONGDOUBLE
1030 && cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
1040 avn = cif->nargs;
1041 arg_types = cif->arg_types;
1152 if (cif->abi == FFI_LINUX_SOFT_FLOAT)
1183 if (cif->abi == FFI_LINUX_SOFT_FLOAT)
1205 if (cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
1207 if (cif->abi == FFI_LINUX_SOFT_FLOAT)
1248 (closure->fun) (cif, rvalue, avalue, closure->user_data);
1253 if (cif->abi == FFI_SYSV && cif->rtype->type == FFI_TYPE_STRUCT
1257 else if (cif->rtype->type == FFI_TYPE_LONGDOUBLE
1258 && cif->abi != FFI_LINUX && cif->abi != FFI_LINUX_SOFT_FLOAT)
1263 if (cif->abi == FFI_LINUX_SOFT_FLOAT)
1265 switch (cif->rtype->type)
1279 return cif->rtype->type;
1284 return cif->rtype->type;
1303 ffi_cif *cif;
1306 cif = closure->cif;
1307 avalue = alloca (cif->nargs * sizeof (void *));
1311 if (cif->rtype->type == FFI_TYPE_STRUCT)
1318 avn = cif->nargs;
1319 arg_types = cif->arg_types;
1425 (closure->fun) (cif, rvalue, avalue, closure->user_data);
1428 return cif->rtype->type;