summaryrefslogtreecommitdiff
path: root/ext/ffi_c/libffi/src/mips/n32.S
diff options
context:
space:
mode:
Diffstat (limited to 'ext/ffi_c/libffi/src/mips/n32.S')
-rw-r--r--ext/ffi_c/libffi/src/mips/n32.S33
1 files changed, 9 insertions, 24 deletions
diff --git a/ext/ffi_c/libffi/src/mips/n32.S b/ext/ffi_c/libffi/src/mips/n32.S
index ae23094..c6985d3 100644
--- a/ext/ffi_c/libffi/src/mips/n32.S
+++ b/ext/ffi_c/libffi/src/mips/n32.S
@@ -43,6 +43,7 @@
#ifdef __GNUC__
.abicalls
#endif
+ .set mips4
.text
.align 2
.globl ffi_call_N32
@@ -107,10 +108,8 @@ loadregs:
REG_L t6, 3*FFI_SIZEOF_ARG($fp) # load the flags word into t6.
and t4, t6, ((1<<FFI_FLAG_BITS)-1)
- bnez t4, arg1_floatp
REG_L a0, 0*FFI_SIZEOF_ARG(t9)
- b arg1_next
-arg1_floatp:
+ beqz t4, arg1_next
bne t4, FFI_TYPE_FLOAT, arg1_doublep
l.s $f12, 0*FFI_SIZEOF_ARG(t9)
b arg1_next
@@ -120,10 +119,8 @@ arg1_next:
SRL t4, t6, 1*FFI_FLAG_BITS
and t4, ((1<<FFI_FLAG_BITS)-1)
- bnez t4, arg2_floatp
REG_L a1, 1*FFI_SIZEOF_ARG(t9)
- b arg2_next
-arg2_floatp:
+ beqz t4, arg2_next
bne t4, FFI_TYPE_FLOAT, arg2_doublep
l.s $f13, 1*FFI_SIZEOF_ARG(t9)
b arg2_next
@@ -133,10 +130,8 @@ arg2_next:
SRL t4, t6, 2*FFI_FLAG_BITS
and t4, ((1<<FFI_FLAG_BITS)-1)
- bnez t4, arg3_floatp
REG_L a2, 2*FFI_SIZEOF_ARG(t9)
- b arg3_next
-arg3_floatp:
+ beqz t4, arg3_next
bne t4, FFI_TYPE_FLOAT, arg3_doublep
l.s $f14, 2*FFI_SIZEOF_ARG(t9)
b arg3_next
@@ -146,10 +141,8 @@ arg3_next:
SRL t4, t6, 3*FFI_FLAG_BITS
and t4, ((1<<FFI_FLAG_BITS)-1)
- bnez t4, arg4_floatp
REG_L a3, 3*FFI_SIZEOF_ARG(t9)
- b arg4_next
-arg4_floatp:
+ beqz t4, arg4_next
bne t4, FFI_TYPE_FLOAT, arg4_doublep
l.s $f15, 3*FFI_SIZEOF_ARG(t9)
b arg4_next
@@ -159,10 +152,8 @@ arg4_next:
SRL t4, t6, 4*FFI_FLAG_BITS
and t4, ((1<<FFI_FLAG_BITS)-1)
- bnez t4, arg5_floatp
REG_L a4, 4*FFI_SIZEOF_ARG(t9)
- b arg5_next
-arg5_floatp:
+ beqz t4, arg5_next
bne t4, FFI_TYPE_FLOAT, arg5_doublep
l.s $f16, 4*FFI_SIZEOF_ARG(t9)
b arg5_next
@@ -172,10 +163,8 @@ arg5_next:
SRL t4, t6, 5*FFI_FLAG_BITS
and t4, ((1<<FFI_FLAG_BITS)-1)
- bnez t4, arg6_floatp
REG_L a5, 5*FFI_SIZEOF_ARG(t9)
- b arg6_next
-arg6_floatp:
+ beqz t4, arg6_next
bne t4, FFI_TYPE_FLOAT, arg6_doublep
l.s $f17, 5*FFI_SIZEOF_ARG(t9)
b arg6_next
@@ -185,10 +174,8 @@ arg6_next:
SRL t4, t6, 6*FFI_FLAG_BITS
and t4, ((1<<FFI_FLAG_BITS)-1)
- bnez t4, arg7_floatp
REG_L a6, 6*FFI_SIZEOF_ARG(t9)
- b arg7_next
-arg7_floatp:
+ beqz t4, arg7_next
bne t4, FFI_TYPE_FLOAT, arg7_doublep
l.s $f18, 6*FFI_SIZEOF_ARG(t9)
b arg7_next
@@ -198,10 +185,8 @@ arg7_next:
SRL t4, t6, 7*FFI_FLAG_BITS
and t4, ((1<<FFI_FLAG_BITS)-1)
- bnez t4, arg8_floatp
REG_L a7, 7*FFI_SIZEOF_ARG(t9)
- b arg8_next
-arg8_floatp:
+ beqz t4, arg8_next
bne t4, FFI_TYPE_FLOAT, arg8_doublep
l.s $f19, 7*FFI_SIZEOF_ARG(t9)
b arg8_next