changeset 124:6bd0974d257b

- big-endian mips fixes for return values - cleanups
author cslag
date Mon, 04 Jul 2016 16:14:59 +0200
parents d203ba52c246
children f1fc1c836baf
files dyncall/dyncall_call_mips_n32_gas.s dyncall/dyncall_call_mips_n64_gas.s dyncall/dyncall_value.h dyncallback/dyncall_callback_mips_n64_gas.s
diffstat 4 files changed, 7 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/dyncall/dyncall_call_mips_n32_gas.s	Mon Jul 04 16:13:59 2016 +0200
+++ b/dyncall/dyncall_call_mips_n32_gas.s	Mon Jul 04 16:14:59 2016 +0200
@@ -177,8 +177,8 @@
 	/* jump-and-link to register $25 */
 
 	jal	$31, $25
-
-	/* no nop according to gcc assembly output */	
+	nop /* branch-delay slot - no nop according to gcc assembly */
+	    /* output, but let's play safe */	
 
 	/* Stack-frame epilog */	
 	move	$sp,$fp 
--- a/dyncall/dyncall_call_mips_n64_gas.s	Mon Jul 04 16:13:59 2016 +0200
+++ b/dyncall/dyncall_call_mips_n64_gas.s	Mon Jul 04 16:14:59 2016 +0200
@@ -177,8 +177,8 @@
 	/* jump-and-link to register $25 */
 
 	jal	$31, $25
-
-	/* no nop according to gcc assembly output */	
+	nop /* branch-delay slot - no nop according to gcc assembly */
+	    /* output, but let's play safe */	
 
 	/* Stack-frame epilog */	
 	move	$sp,$fp 
--- a/dyncall/dyncall_value.h	Mon Jul 04 16:13:59 2016 +0200
+++ b/dyncall/dyncall_value.h	Mon Jul 04 16:14:59 2016 +0200
@@ -48,7 +48,7 @@
 
 union DCValue_
 {
-#if defined (DC__Arch_PPC32) && defined(DC__Endian_BIG)
+#if (defined(DC__Arch_PPC32) || defined(DC__Arch_MIPS)) && defined(DC__Endian_BIG)
   DCbool        B;
   struct { DCchar  c_pad[3]; DCchar  c; };
   struct { DCuchar C_pad[3]; DCuchar C; };
@@ -56,7 +56,7 @@
   struct { DCshort S_pad;    DCshort S; };
   DCint         i;
   DCuint        I;
-#elif defined (DC__Arch_PPC64) && defined(DC__Endian_BIG)
+#elif (defined(DC__Arch_PPC64) || defined(DC__Arch_MIPS64)) && defined(DC__Endian_BIG)
   struct { DCbool  B_pad;    DCbool  B; };
   struct { DCchar  c_pad[7]; DCchar  c; };
   struct { DCuchar C_pad[7]; DCuchar C; };
--- a/dyncallback/dyncall_callback_mips_n64_gas.s	Mon Jul 04 16:13:59 2016 +0200
+++ b/dyncallback/dyncall_callback_mips_n64_gas.s	Mon Jul 04 16:14:59 2016 +0200
@@ -20,7 +20,6 @@
    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-@@@ NOT FULLY WORKING, YET
 */
 
 	/* input:
@@ -84,8 +83,7 @@
 	nop                 /* branch delay nop */
 
 	/* Copy result in corresponding registers $2-$3 ($v0-$v1) and $f0 */
-	ld     $2, 144($sp)
-	/*ld     $3, 152($sp) @@@ ignoring second possible retval for now*/
+	ld     $2, 144($sp) /* note: ignoring second possible retval in $3, here */
 	l.d   $f0, 144($sp)
 
 	/* Epilog. Tear down frame and return. */