# HG changeset patch # User cslag # Date 1467641699 -7200 # Node ID 6bd0974d257b0559b6af3273f7f2024f25023a1e # Parent d203ba52c2467fa0d2475b709f759115538737a1 - big-endian mips fixes for return values - cleanups diff -r d203ba52c246 -r 6bd0974d257b dyncall/dyncall_call_mips_n32_gas.s --- 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 diff -r d203ba52c246 -r 6bd0974d257b dyncall/dyncall_call_mips_n64_gas.s --- 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 diff -r d203ba52c246 -r 6bd0974d257b dyncall/dyncall_value.h --- 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; }; diff -r d203ba52c246 -r 6bd0974d257b dyncallback/dyncall_callback_mips_n64_gas.s --- 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. */