diff --git a/doc/libffi.texi b/doc/libffi.texi index 94b7a9e..4f16762 100644 --- a/doc/libffi.texi +++ b/doc/libffi.texi @@ -474,9 +474,9 @@ Compute the offset of each element of the given structure type. @var{abi} is the ABI to use; this is needed because in some cases the layout depends on the ABI. -@var{sizes} is an out parameter. The caller is responsible for +@var{offsets} is an out parameter. The caller is responsible for providing enough space for all the results to be written -- one -element per element type in @var{struct_type}. If @var{sizes} is +element per element type in @var{struct_type}. If @var{offsets} is @code{NULL}, then the type will be laid out but not otherwise modified. This can be useful for accessing the type's size or layout, as mentioned above. diff --git a/src/mips/n32.S b/src/mips/n32.S index b402c88..edc6905 100644 --- a/src/mips/n32.S +++ b/src/mips/n32.S @@ -112,6 +112,16 @@ loadregs: REG_L t6, 3*FFI_SIZEOF_ARG($fp) # load the flags word into t6. +#ifdef __mips_soft_float + REG_L a0, 0*FFI_SIZEOF_ARG(t9) + REG_L a1, 1*FFI_SIZEOF_ARG(t9) + REG_L a2, 2*FFI_SIZEOF_ARG(t9) + REG_L a3, 3*FFI_SIZEOF_ARG(t9) + REG_L a4, 4*FFI_SIZEOF_ARG(t9) + REG_L a5, 5*FFI_SIZEOF_ARG(t9) + REG_L a6, 6*FFI_SIZEOF_ARG(t9) + REG_L a7, 7*FFI_SIZEOF_ARG(t9) +#else and t4, t6, ((1<