Commit 302486f4 by Andreas Schwab

ffi.c (ffi_prep_args_SYSV): Advance intarg_count when a float arguments is passed in memory.

* src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count
when a float arguments is passed in memory.
(ffi_closure_helper_SYSV): Mark general registers as used up when
a 64bit or soft-float long double argument is passed in memory.

From-SVN: r155473
parent b8f38e89
...@@ -185,6 +185,7 @@ ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack) ...@@ -185,6 +185,7 @@ ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack)
{ {
*next_arg.f = (float) double_tmp; *next_arg.f = (float) double_tmp;
next_arg.u += 1; next_arg.u += 1;
intarg_count++;
} }
else else
*fpr_base.d++ = double_tmp; *fpr_base.d++ = double_tmp;
...@@ -1149,6 +1150,7 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, ...@@ -1149,6 +1150,7 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
pst++; pst++;
avalue[i] = pst; avalue[i] = pst;
pst += 2; pst += 2;
ng = 8;
} }
break; break;
...@@ -1222,6 +1224,7 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, ...@@ -1222,6 +1224,7 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
{ {
avalue[i] = pst; avalue[i] = pst;
pst += 4; pst += 4;
ng = 8;
} }
break; break;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment