# HG changeset patch # User cslag # Date 1467810823 -7200 # Node ID 9a554d1c4da645b5e18c59110502e75100536b2a # Parent 645443fcfb4717ab9aa3d2b886800c78c1520188 - mips n64 vararg call fixes if non-variadic arguments are floats diff -r 645443fcfb47 -r 9a554d1c4da6 ToDo --- a/ToDo Tue Jul 05 14:30:56 2016 +0200 +++ b/ToDo Wed Jul 06 15:13:43 2016 +0200 @@ -47,7 +47,7 @@ - where is dyncall_callvm_mips_n32.h? (included by dyncall_callvm_mips_n32.c) - support for return values: aggregate return values - support for argument values: structures, half-precision, vector types, long double -- varargs for mips (might exist, but test all ABIs) +- varargs for mips (might exist, but test all ABIs (mipseb n64 already confirmed)) - consider automatic type-promotion for arguments passed through DC_CALL_C_ELLIPSIS_VARARGS; this would make it easier to just pass arguments instead of having to know about the C type promotions (this is partly done, see todo-item above under 1.0) @@ -56,7 +56,6 @@ * linux - other syscalls - MIPS32 softfloat support (-msoft-float) -- MIPS64 ellipsis not working - MIPS64 little-endian needs testing (current port works on openbsd/octeon, which is big endian) dynload: diff -r 645443fcfb47 -r 9a554d1c4da6 dyncall/dyncall_callvm_mips_n64.c --- a/dyncall/dyncall_callvm_mips_n64.c Tue Jul 05 14:30:56 2016 +0200 +++ b/dyncall/dyncall_callvm_mips_n64.c Wed Jul 06 15:13:43 2016 +0200 @@ -234,9 +234,9 @@ switch(mode) { case DC_CALL_C_DEFAULT: case DC_CALL_C_MIPS64_N64: + case DC_CALL_C_ELLIPSIS: vt = &gVT_mips_n64; break; - case DC_CALL_C_ELLIPSIS: case DC_CALL_C_ELLIPSIS_VARARGS: vt = &gVT_mips_n64_ellipsis; break;