Mercurial > pub > dyncall > dyncall
changeset 109:9e677d4c0b6b
- mips comment cleanups
- mips callback args prep for non-o32
author | cslag |
---|---|
date | Sat, 11 Jun 2016 21:44:38 +0200 |
parents | bf8aef292216 |
children | 9aa75a74614c |
files | dyncall/dyncall_call_mips_eabi_gas.s dyncallback/dyncall_args_mips.c dyncallback/dyncall_args_mips.h dyncallback/dyncall_args_mips_o32.c dyncallback/dyncall_callback_mips_o32_gas.s |
diffstat | 5 files changed, 20 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/dyncall/dyncall_call_mips_eabi_gas.s Sat Jun 11 21:38:46 2016 +0200 +++ b/dyncall/dyncall_call_mips_eabi_gas.s Sat Jun 11 21:44:38 2016 +0200 @@ -89,7 +89,7 @@ lw $10,24($13) lw $11,28($13) - /* load single-precise floating pointer parameter registers */ + /* load single-precision floating pointer parameter registers */ lwc1 $f12, 32($13) lwc1 $f13, 36($13)
--- a/dyncallback/dyncall_args_mips.c Sat Jun 11 21:38:46 2016 +0200 +++ b/dyncallback/dyncall_args_mips.c Sat Jun 11 21:44:38 2016 +0200 @@ -3,7 +3,7 @@ Package: dyncall Library: dyncallback File: dyncallback/dyncall_args_mips.c - Description: Callback's Arguments VM - Implementation for MIPS + Description: Callback's Arguments VM - Implementation for non-o32 MIPS License: Copyright (c) 2013-2015 Daniel Adler <dadler@uni-goettingen.de>, @@ -29,11 +29,11 @@ DCint dcbArgInt(DCArgs* p) { DCint value; - if(p->reg_count.i < DCARGS_MIPS_PARAM_REGS) - value = p->reg_data.i[p->reg_count.i++]; + if(p->reg_count.i < DCARGS_MIPS_NUM_IREGS) + value = p->ireg_data[p->reg_count.i++]; else { - value = *((int*)p->stackptr); - p->stackptr += sizeof(int); + value = *((DCint*)p->stackptr); + p->stackptr += sizeof(DCint); } return value; } @@ -66,11 +66,11 @@ DCfloat dcbArgFloat(DCArgs* p) { DCfloat result; - if(p->reg_count.f < DCARGS_MIPS_PARAM_REGS) - result = (DCfloat)p->reg_data.f[p->reg_count.f++]; + if(p->reg_count.f < DCARGS_MIPS_NUM_FREGS) + result = (DCfloat)p->freg_data[p->reg_count.f++]; else { - result = *((float*)p->stackptr); - p->stackptr += sizeof(float); + result = *((DCfloat*)p->stackptr); + p->stackptr += sizeof(DCfloat); } return result; } @@ -78,7 +78,7 @@ { union { DCdouble result; - DCfloat f[2]; + DCfloat f[2]; } d; p->reg_count.f += (p->reg_count.f & 1); // Skip one reg if not aligned. #if defined(DC__Endian_LITTLE)
--- a/dyncallback/dyncall_args_mips.h Sat Jun 11 21:38:46 2016 +0200 +++ b/dyncallback/dyncall_args_mips.h Sat Jun 11 21:44:38 2016 +0200 @@ -33,13 +33,15 @@ { /* Don't change order! */ #if defined(DC__ABI_MIPS_O32) - int freg_count; + DCint freg_count; #else -# define DCARGS_MIPS_PARAM_REGS 8 - struct { int i; float f; } reg_data[DCARGS_MIPS_PARAM_REGS]; - struct { int i; int f; } reg_count; +# define DCARGS_MIPS_NUM_IREGS 8 +# define DCARGS_MIPS_NUM_FREGS 8 + DCint ireg_data[DCARGS_MIPS_NUM_IREGS]; + DCfloat freg_data[DCARGS_MIPS_NUM_FREGS]; + struct { DCshort i; DCshort f; } reg_count; #endif - unsigned char* stackptr; + unsigned DCchar* stackptr; }; #endif /* DYNCALLBACK_ARGS_MIPS_H */
--- a/dyncallback/dyncall_args_mips_o32.c Sat Jun 11 21:38:46 2016 +0200 +++ b/dyncallback/dyncall_args_mips_o32.c Sat Jun 11 21:44:38 2016 +0200 @@ -3,7 +3,7 @@ Package: dyncall Library: dyncallback File: dyncallback/dyncall_args_mips.c - Description: Callback's Arguments VM - Implementation for MIPS + Description: Callback's Arguments VM - Implementation for MIPS o32 License: Copyright (c) 2013-2015 Daniel Adler <dadler@uni-goettingen.de>,
--- a/dyncallback/dyncall_callback_mips_o32_gas.s Sat Jun 11 21:38:46 2016 +0200 +++ b/dyncallback/dyncall_callback_mips_o32_gas.s Sat Jun 11 21:44:38 2016 +0200 @@ -43,7 +43,7 @@ .set noreorder /* Prolog. Just store the minimum, return address, spill area. */ - /* Frame size of 48b comes from following areas (each 8b aligned); */ + /* Frame size of 56b comes from following areas (each 8b aligned): */ /* local: fpregs:16 + retval:8 + DCArgs:8 */ /* save: ra:4 (+ pad:4) */ /* param: spill:16 */