changeset 128:9a554d1c4da6

- mips n64 vararg call fixes if non-variadic arguments are floats
author cslag
date Wed, 06 Jul 2016 15:13:43 +0200
parents 645443fcfb47
children a130676d0ceb
files ToDo dyncall/dyncall_callvm_mips_n64.c
diffstat 2 files changed, 2 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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:
--- 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;