Mercurial > pub > dyncall > dyncall
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. */