Description: Update assembly code for new ABI on mips and mipsel
 There was a change in the ABI of mips and mipsel since gcc-5 (see #825342), that
 makes ffcall FTBFS on those arches, because it uses odd-numbered floating point
 registers, which is no longer possible with the new ABI.
 .
 This patch regenerates the assembly files with the new ABI. Note that the flag
 -fno-tree-dce was added for generating the avcall files, because otherwise the
 allocation on the stack with __builtin_alloca is optimized out.
 .
 On mips, the new assembly files have been created with the following commands:
 .
   rm avcall/avcall-mipseb* vacall/vacall-mipseb* callback/vacall_r/vacall-mipseb*
   make -C avcall -f Makefile.devel avcall-mipseb-linux.s avcall-mipseb-macro.S
   make -C vacall -f Makefile.devel vacall-mipseb-linux.s vacall-mipseb-macro.S
   make -C callback/vacall_r -f Makefile.devel vacall-mipseb-linux.s vacall-mipseb-macro.S
 .
 On mipsel, the commands are the same after substituting mipseb by mipsel.
Author: Sébastien Villemot <sebastien@debian.org>
Forwarded: no
Last-Update: 2017-11-26
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/avcall/Makefile.devel
+++ b/avcall/Makefile.devel
@@ -48,13 +48,13 @@ avcall-m68k.motorola.S : avcall-m68k-lin
 
 
 avcall-mipseb-linux.s : avcall-mips.c avcall-internal.h avcall.h avcall-alist.h $(THISFILE)
-	$(CROSS_TOOL) mips64-linux gcc -V 4.0.2 -mabi=32 -meb $(GCCFLAGS) -D__mips__ -S avcall-mips.c -o avcall-mipseb-linux.s
+	mips-linux-gnu-gcc $(GCCFLAGS) -fno-tree-dce -D__mips__ -S avcall-mips.c -o avcall-mipseb-linux.s
 
 avcall-mipseb-macro.S : avcall-mipseb-linux.s ../common/asm-mips.sh $(THISFILE)
 	(echo '#include "asm-mips.h"' ; ../common/asm-mips.sh < avcall-mipseb-linux.s) > avcall-mipseb-macro.S
 
 avcall-mipsel-linux.s : avcall-mips.c avcall-internal.h avcall.h avcall-alist.h $(THISFILE)
-	$(CROSS_TOOL) mips64-linux gcc -V 4.0.2 -mabi=32 -mel $(GCCFLAGS) -D__mips__ -S avcall-mips.c -o avcall-mipsel-linux.s
+	mipsel-linux-gnu-gcc $(GCCFLAGS) -fno-tree-dce -D__mips__ -S avcall-mips.c -o avcall-mipsel-linux.s
 
 avcall-mipsel-macro.S : avcall-mipsel-linux.s ../common/asm-mips.sh $(THISFILE)
 	(echo '#include "asm-mips.h"' ; ../common/asm-mips.sh < avcall-mipsel-linux.s) > avcall-mipsel-macro.S
--- a/callback/vacall_r/Makefile.devel
+++ b/callback/vacall_r/Makefile.devel
@@ -49,13 +49,13 @@ vacall-m68k.motorola.S : vacall-m68k-lin
 
 vacall-mipseb-linux.s : ../../vacall/vacall-mips.c ../../vacall/vacall-internal.h vacall_r.h $(THISFILE)
 # For references to symbols: -mno-explicit-relocs ensures a syntax that the IRIX assembler understands.
-	$(CROSS_TOOL) mips64-linux gcc -V 4.0.2 -mabi=32 -meb -mno-explicit-relocs $(GCCFLAGS) -D__mips__ -S ../../vacall/vacall-mips.c -I../../vacall -I. -o vacall-mipseb-linux.s
+	mips-linux-gnu-gcc -mno-explicit-relocs $(GCCFLAGS) -D__mips__ -S ../../vacall/vacall-mips.c -I../../vacall -I. -o vacall-mipseb-linux.s
 
 vacall-mipseb-macro.S : vacall-mipseb-linux.s ../../common/asm-mips.sh $(THISFILE)
 	(echo '#include "asm-mips.h"' ; ../../common/asm-mips.sh < vacall-mipseb-linux.s) > vacall-mipseb-macro.S
 
 vacall-mipsel-linux.s : ../../vacall/vacall-mips.c ../../vacall/vacall-internal.h vacall_r.h $(THISFILE)
-	$(CROSS_TOOL) mips64-linux gcc -V 4.0.2 -mabi=32 -mel -mno-explicit-relocs $(GCCFLAGS) -D__mips__ -S ../../vacall/vacall-mips.c -I../../vacall -I. -o vacall-mipsel-linux.s
+	mipsel-linux-gnu-gcc -mno-explicit-relocs $(GCCFLAGS) -D__mips__ -S ../../vacall/vacall-mips.c -I../../vacall -I. -o vacall-mipsel-linux.s
 
 vacall-mipsel-macro.S : vacall-mipsel-linux.s ../../common/asm-mips.sh $(THISFILE)
 	(echo '#include "asm-mips.h"' ; ../../common/asm-mips.sh < vacall-mipsel-linux.s) > vacall-mipsel-macro.S
--- a/vacall/Makefile.devel
+++ b/vacall/Makefile.devel
@@ -49,13 +49,13 @@ vacall-m68k.motorola.S : vacall-m68k-lin
 
 vacall-mipseb-linux.s : vacall-mips.c vacall-internal.h vacall.h $(THISFILE)
 # For references to global symbols: -mno-explicit-relocs ensures a syntax that the IRIX assembler understands.
-	$(CROSS_TOOL) mips64-linux gcc -V 4.0.2 -mabi=32 -meb -mno-explicit-relocs $(GCCFLAGS) -D__mips__ -S vacall-mips.c -o vacall-mipseb-linux.s
+	mips-linux-gnu-gcc -mno-explicit-relocs $(GCCFLAGS) -D__mips__ -S vacall-mips.c -o vacall-mipseb-linux.s
 
 vacall-mipseb-macro.S : vacall-mipseb-linux.s ../common/asm-mips.sh $(THISFILE)
 	(echo '#include "asm-mips.h"' ; ../common/asm-mips.sh < vacall-mipseb-linux.s) > vacall-mipseb-macro.S
 
 vacall-mipsel-linux.s : vacall-mips.c vacall-internal.h vacall.h $(THISFILE)
-	$(CROSS_TOOL) mips64-linux gcc -V 4.0.2 -mabi=32 -mel -mno-explicit-relocs $(GCCFLAGS) -D__mips__ -S vacall-mips.c -o vacall-mipsel-linux.s
+	mipsel-linux-gnu-gcc -mno-explicit-relocs $(GCCFLAGS) -D__mips__ -S vacall-mips.c -o vacall-mipsel-linux.s
 
 vacall-mipsel-macro.S : vacall-mipsel-linux.s ../common/asm-mips.sh $(THISFILE)
 	(echo '#include "asm-mips.h"' ; ../common/asm-mips.sh < vacall-mipsel-linux.s) > vacall-mipsel-macro.S
--- a/avcall/avcall-mipseb-linux.s
+++ b/avcall/avcall-mipseb-linux.s
@@ -1,325 +1,310 @@
 	.file	1 "avcall-mips.c"
 	.section .mdebug.abi32
 	.previous
+	.nan	legacy
+	.module	fp=xx
+	.module	nooddspreg
 	.abicalls
 	.text
 	.align	2
 	.globl	avcall_call
+	.set	nomips16
+	.set	nomicromips
 	.ent	avcall_call
 	.type	avcall_call, @function
 avcall_call:
 	.frame	$fp,40,$31		# vars= 0, regs= 3/0, args= 16, gp= 8
-	.mask	0xc0010000,-8
+	.mask	0xc0010000,-4
 	.fmask	0x00000000,0
 	addiu	$sp,$sp,-40
-	sw	$fp,28($sp)
+	lw	$8,24($4)
+	lw	$3,20($4)
+	lw	$5,40($4)
+	sw	$fp,32($sp)
 	move	$fp,$sp
-	sw	$31,32($sp)
-	sw	$16,24($sp)
-	.cprestore	16
-	lw	$3,24($4)
-	lw	$2,20($4)
-	move	$16,$4
-	lw	$4,40($4)
-	subu	$2,$2,$3
+	sw	$16,28($sp)
+	subu	$3,$3,$8
+	sw	$31,36($sp)
 	addiu	$sp,$sp,-1032
-	andi	$3,$4,0x1
-	sra	$7,$2,2
+	move	$16,$4
+	andi	$4,$5,0x1
+	move	$2,$sp
 	.set	noreorder
 	.set	nomacro
-	beq	$3,$0,$L2
-	move	$5,$sp
+	beq	$4,$0,$L2
+	sra	$7,$3,2
 	.set	macro
 	.set	reorder
 
 #APP
+ # 76 "avcall-mips.c" 1
 	l.s $f12,48($16)
+ # 0 "" 2
 #NO_APP
 $L2:
-	lw	$3,44($16)
-	#nop
-	andi	$2,$3,0x1
-	.set	noreorder
-	.set	nomacro
-	beq	$2,$0,$L63
-	andi	$2,$4,0x2
-	.set	macro
-	.set	reorder
-
+	lw	$4,44($16)
+	andi	$6,$4,0x1
+	beq	$6,$0,$L3
 #APP
+ # 78 "avcall-mips.c" 1
 	l.d $f12,56($16)
+ # 0 "" 2
 #NO_APP
-	andi	$2,$4,0x2
-$L63:
-	.set	noreorder
-	.set	nomacro
-	beq	$2,$0,$L64
-	andi	$2,$3,0x2
-	.set	macro
-	.set	reorder
-
+$L3:
+	andi	$5,$5,0x2
+	beq	$5,$0,$L4
 #APP
+ # 80 "avcall-mips.c" 1
 	l.s $f14,52($16)
+ # 0 "" 2
 #NO_APP
-	andi	$2,$3,0x2
-$L64:
-	.set	noreorder
-	.set	nomacro
-	beq	$2,$0,$L65
-	slt	$2,$7,5
-	.set	macro
-	.set	reorder
-
+$L4:
+	andi	$4,$4,0x2
+	beq	$4,$0,$L5
 #APP
+ # 82 "avcall-mips.c" 1
 	l.d $f14,64($16)
+ # 0 "" 2
 #NO_APP
-	slt	$2,$7,5
-$L65:
+$L5:
+	slt	$3,$3,17
 	.set	noreorder
 	.set	nomacro
-	bne	$2,$0,$L51
-	li	$4,4			# 0x4
+	bne	$3,$0,$L6
+	addiu	$4,$8,16
 	.set	macro
 	.set	reorder
 
-	lw	$6,24($16)
-$L10:
-	sll	$2,$4,2
-	addu	$2,$2,$6
-	lw	$3,0($2)
-	addiu	$4,$4,1
-	sw	$3,16($5)
+	addiu	$2,$2,16
+	li	$3,4			# 0x4
+$L7:
+	lw	$6,0($4)
+	addiu	$3,$3,1
+	addiu	$4,$4,4
+	slt	$5,$3,$7
+	sw	$6,0($2)
 	.set	noreorder
 	.set	nomacro
-	bne	$7,$4,$L10
-	addiu	$5,$5,4
+	bne	$5,$0,$L7
+	addiu	$2,$2,4
 	.set	macro
 	.set	reorder
 
-$L11:
-	lw	$4,0($6)
-	lw	$5,4($6)
-	lw	$7,12($6)
+$L6:
+	lw	$5,4($8)
+	lw	$4,0($8)
 	lw	$25,4($16)
-	lw	$6,8($6)
-	jalr	$25
-	lw	$4,12($16)
-	move	$5,$2
-	li	$2,1			# 0x1
-	lw	$28,16($fp)
-	beq	$4,$2,$L12
+	lw	$7,12($8)
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$0,$L57
-	li	$2,2			# 0x2
+	jalr	$25
+	lw	$6,8($8)
 	.set	macro
 	.set	reorder
 
+	li	$5,1			# 0x1
+	lw	$4,12($16)
+	beq	$4,$5,$L8
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L56
-	li	$2,3			# 0x3
+	beq	$4,$0,$L42
+	li	$5,2			# 0x2
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L56
-	li	$2,4			# 0x4
+	beq	$4,$5,$L45
+	li	$5,3			# 0x3
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L56
-	li	$2,5			# 0x5
+	beq	$4,$5,$L45
+	li	$5,4			# 0x4
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L58
-	li	$2,6			# 0x6
+	beq	$4,$5,$L45
+	li	$5,5			# 0x5
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L58
-	li	$2,7			# 0x7
+	beq	$4,$5,$L46
+	li	$5,6			# 0x6
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,8			# 0x8
+	beq	$4,$5,$L46
+	li	$5,7			# 0x7
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,9			# 0x9
+	beq	$4,$5,$L42
+	li	$5,8			# 0x8
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,10			# 0xa
+	beq	$4,$5,$L42
+	li	$5,9			# 0x9
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	addiu	$2,$4,-11
+	beq	$4,$5,$L42
+	li	$5,10			# 0xa
 	.set	macro
 	.set	reorder
 
-	sltu	$2,$2,2
 	.set	noreorder
 	.set	nomacro
-	bne	$2,$0,$L60
-	li	$2,13			# 0xd
+	beq	$4,$5,$L42
+	addiu	$5,$4,-11
 	.set	macro
 	.set	reorder
 
+	sltu	$5,$5,2
+	bne	$5,$0,$L48
+	li	$3,13			# 0xd
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L61
-	li	$2,14			# 0xe
+	beq	$4,$3,$L49
+	li	$3,14			# 0xe
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L62
-	li	$2,15			# 0xf
+	beq	$4,$3,$L50
+	li	$3,15			# 0xf
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,16			# 0x10
+	beq	$4,$3,$L42
+	li	$3,16			# 0x10
 	.set	macro
 	.set	reorder
 
-	bne	$4,$2,$L12
-	lw	$2,0($16)
-	#nop
-	andi	$2,$2,0x2
+	bne	$4,$3,$L8
+	lw	$3,0($16)
+	andi	$3,$3,0x2
 	.set	noreorder
 	.set	nomacro
-	beq	$2,$0,$L12
-	li	$2,1			# 0x1
+	beq	$3,$0,$L8
+	li	$4,1			# 0x1
 	.set	macro
 	.set	reorder
 
 	lw	$3,16($16)
-	#nop
 	.set	noreorder
 	.set	nomacro
-	beq	$3,$2,$L56
-	li	$2,2			# 0x2
+	beq	$3,$4,$L45
+	li	$4,2			# 0x2
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$3,$2,$L58
-	li	$2,4			# 0x4
+	beq	$3,$4,$L46
+	li	$4,4			# 0x4
 	.set	macro
 	.set	reorder
 
-	beq	$3,$2,$L57
-$L12:
+	beq	$3,$4,$L42
+$L8:
 	move	$sp,$fp
-	lw	$31,32($fp)
-	lw	$fp,28($sp)
-	lw	$16,24($sp)
 	move	$2,$0
+	lw	$31,36($sp)
+	lw	$fp,32($sp)
+	lw	$16,28($sp)
 	.set	noreorder
 	.set	nomacro
-	j	$31
+	jr	$31
 	addiu	$sp,$sp,40
 	.set	macro
 	.set	reorder
 
-$L51:
-	lw	$6,24($16)
-	b	$L11
-$L57:
-	lw	$2,8($16)
+$L42:
+	lw	$3,8($16)
+	sw	$2,0($3)
 	move	$sp,$fp
-	sw	$5,0($2)
-	lw	$31,32($sp)
-	lw	$fp,28($sp)
-	lw	$16,24($sp)
 	move	$2,$0
+	lw	$31,36($sp)
+	lw	$fp,32($sp)
+	lw	$16,28($sp)
 	.set	noreorder
 	.set	nomacro
-	j	$31
+	jr	$31
 	addiu	$sp,$sp,40
 	.set	macro
 	.set	reorder
 
-$L56:
-	lw	$2,8($16)
+$L45:
+	lw	$3,8($16)
+	sb	$2,0($3)
 	move	$sp,$fp
-	sb	$5,0($2)
-	lw	$31,32($sp)
-	lw	$fp,28($sp)
-	lw	$16,24($sp)
 	move	$2,$0
+	lw	$31,36($sp)
+	lw	$fp,32($sp)
+	lw	$16,28($sp)
 	.set	noreorder
 	.set	nomacro
-	j	$31
+	jr	$31
 	addiu	$sp,$sp,40
 	.set	macro
 	.set	reorder
 
-$L58:
-	lw	$2,8($16)
+$L46:
+	lw	$3,8($16)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	sh	$5,0($2)
+	b	$L8
+	sh	$2,0($3)
 	.set	macro
 	.set	reorder
 
-$L61:
-	lw	$2,8($16)
+$L48:
+	lw	$4,8($16)
+	sw	$2,0($4)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	swc1	$f0,0($2)
+	b	$L8
+	sw	$3,4($4)
 	.set	macro
 	.set	reorder
 
-$L60:
+$L49:
 	lw	$2,8($16)
-	#nop
-	sw	$3,4($2)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	sw	$5,0($2)
+	b	$L8
+	swc1	$f0,0($2)
 	.set	macro
 	.set	reorder
 
-$L62:
+$L50:
 	lw	$2,8($16)
-	#nop
-	swc1	$f0,4($2)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	swc1	$f1,0($2)
+	b	$L8
+	sdc1	$f0,0($2)
 	.set	macro
 	.set	reorder
 
 	.end	avcall_call
-	.ident	"GCC: (GNU) 4.0.2"
+	.size	avcall_call, .-avcall_call
+	.ident	"GCC: (Debian 7.2.0-11) 7.2.0"
--- a/avcall/avcall-mipseb-macro.S
+++ b/avcall/avcall-mipseb-macro.S
@@ -1,322 +1,307 @@
 #include "asm-mips.h"
 	.file	1 "avcall-mips.c"
+	.nan	legacy
+	.module	fp=xx
+	.module	nooddspreg
 	.text
 	.align	2
 	.globl	avcall_call
+	.set	nomips16
+	.set	nomicromips
 	.ent	avcall_call
 	DECLARE_FUNCTION(avcall_call)
 avcall_call:
 	.frame	$fp,40,$31		
-	.mask	0xc0010000,-8
+	.mask	0xc0010000,-4
 	.fmask	0x00000000,0
 	addiu	$sp,$sp,-40
-	sw	$fp,28($sp)
+	lw	$8,24($4)
+	lw	$3,20($4)
+	lw	$5,40($4)
+	sw	$fp,32($sp)
 	move	$fp,$sp
-	sw	$31,32($sp)
-	sw	$16,24($sp)
-	.cprestore	16
-	lw	$3,24($4)
-	lw	$2,20($4)
-	move	$16,$4
-	lw	$4,40($4)
-	subu	$2,$2,$3
+	sw	$16,28($sp)
+	subu	$3,$3,$8
+	sw	$31,36($sp)
 	addiu	$sp,$sp,-1032
-	andi	$3,$4,0x1
-	sra	$7,$2,2
+	move	$16,$4
+	andi	$4,$5,0x1
+	move	$2,$sp
 	.set	noreorder
 	.set	nomacro
-	beq	$3,$0,$L2
-	move	$5,$sp
+	beq	$4,$0,$L2
+	sra	$7,$3,2
 	.set	macro
 	.set	reorder
 
 
+ 
 	l.s $f12,48($16)
+ 
 
 $L2:
-	lw	$3,44($16)
-	
-	andi	$2,$3,0x1
-	.set	noreorder
-	.set	nomacro
-	beq	$2,$0,$L63
-	andi	$2,$4,0x2
-	.set	macro
-	.set	reorder
-
+	lw	$4,44($16)
+	andi	$6,$4,0x1
+	beq	$6,$0,$L3
 
+ 
 	l.d $f12,56($16)
+ 
 
-	andi	$2,$4,0x2
-$L63:
-	.set	noreorder
-	.set	nomacro
-	beq	$2,$0,$L64
-	andi	$2,$3,0x2
-	.set	macro
-	.set	reorder
-
+$L3:
+	andi	$5,$5,0x2
+	beq	$5,$0,$L4
 
+ 
 	l.s $f14,52($16)
+ 
 
-	andi	$2,$3,0x2
-$L64:
-	.set	noreorder
-	.set	nomacro
-	beq	$2,$0,$L65
-	slt	$2,$7,5
-	.set	macro
-	.set	reorder
-
+$L4:
+	andi	$4,$4,0x2
+	beq	$4,$0,$L5
 
+ 
 	l.d $f14,64($16)
+ 
 
-	slt	$2,$7,5
-$L65:
+$L5:
+	slt	$3,$3,17
 	.set	noreorder
 	.set	nomacro
-	bne	$2,$0,$L51
-	li	$4,4			
+	bne	$3,$0,$L6
+	addiu	$4,$8,16
 	.set	macro
 	.set	reorder
 
-	lw	$6,24($16)
-$L10:
-	sll	$2,$4,2
-	addu	$2,$2,$6
-	lw	$3,0($2)
-	addiu	$4,$4,1
-	sw	$3,16($5)
+	addiu	$2,$2,16
+	li	$3,4			
+$L7:
+	lw	$6,0($4)
+	addiu	$3,$3,1
+	addiu	$4,$4,4
+	slt	$5,$3,$7
+	sw	$6,0($2)
 	.set	noreorder
 	.set	nomacro
-	bne	$7,$4,$L10
-	addiu	$5,$5,4
+	bne	$5,$0,$L7
+	addiu	$2,$2,4
 	.set	macro
 	.set	reorder
 
-$L11:
-	lw	$4,0($6)
-	lw	$5,4($6)
-	lw	$7,12($6)
+$L6:
+	lw	$5,4($8)
+	lw	$4,0($8)
 	lw	$25,4($16)
-	lw	$6,8($6)
-	jalr	$25
-	lw	$4,12($16)
-	move	$5,$2
-	li	$2,1			
-	lw	$28,16($fp)
-	beq	$4,$2,$L12
+	lw	$7,12($8)
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$0,$L57
-	li	$2,2			
+	jalr	$25
+	lw	$6,8($8)
 	.set	macro
 	.set	reorder
 
+	li	$5,1			
+	lw	$4,12($16)
+	beq	$4,$5,$L8
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L56
-	li	$2,3			
+	beq	$4,$0,$L42
+	li	$5,2			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L56
-	li	$2,4			
+	beq	$4,$5,$L45
+	li	$5,3			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L56
-	li	$2,5			
+	beq	$4,$5,$L45
+	li	$5,4			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L58
-	li	$2,6			
+	beq	$4,$5,$L45
+	li	$5,5			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L58
-	li	$2,7			
+	beq	$4,$5,$L46
+	li	$5,6			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,8			
+	beq	$4,$5,$L46
+	li	$5,7			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,9			
+	beq	$4,$5,$L42
+	li	$5,8			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,10			
+	beq	$4,$5,$L42
+	li	$5,9			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	addiu	$2,$4,-11
+	beq	$4,$5,$L42
+	li	$5,10			
 	.set	macro
 	.set	reorder
 
-	sltu	$2,$2,2
 	.set	noreorder
 	.set	nomacro
-	bne	$2,$0,$L60
-	li	$2,13			
+	beq	$4,$5,$L42
+	addiu	$5,$4,-11
 	.set	macro
 	.set	reorder
 
+	sltu	$5,$5,2
+	bne	$5,$0,$L48
+	li	$3,13			
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L61
-	li	$2,14			
+	beq	$4,$3,$L49
+	li	$3,14			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L62
-	li	$2,15			
+	beq	$4,$3,$L50
+	li	$3,15			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,16			
+	beq	$4,$3,$L42
+	li	$3,16			
 	.set	macro
 	.set	reorder
 
-	bne	$4,$2,$L12
-	lw	$2,0($16)
-	
-	andi	$2,$2,0x2
+	bne	$4,$3,$L8
+	lw	$3,0($16)
+	andi	$3,$3,0x2
 	.set	noreorder
 	.set	nomacro
-	beq	$2,$0,$L12
-	li	$2,1			
+	beq	$3,$0,$L8
+	li	$4,1			
 	.set	macro
 	.set	reorder
 
 	lw	$3,16($16)
-	
 	.set	noreorder
 	.set	nomacro
-	beq	$3,$2,$L56
-	li	$2,2			
+	beq	$3,$4,$L45
+	li	$4,2			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$3,$2,$L58
-	li	$2,4			
+	beq	$3,$4,$L46
+	li	$4,4			
 	.set	macro
 	.set	reorder
 
-	beq	$3,$2,$L57
-$L12:
+	beq	$3,$4,$L42
+$L8:
 	move	$sp,$fp
-	lw	$31,32($fp)
-	lw	$fp,28($sp)
-	lw	$16,24($sp)
 	move	$2,$0
+	lw	$31,36($sp)
+	lw	$fp,32($sp)
+	lw	$16,28($sp)
 	.set	noreorder
 	.set	nomacro
-	j	$31
+	jr	$31
 	addiu	$sp,$sp,40
 	.set	macro
 	.set	reorder
 
-$L51:
-	lw	$6,24($16)
-	b	$L11
-$L57:
-	lw	$2,8($16)
+$L42:
+	lw	$3,8($16)
+	sw	$2,0($3)
 	move	$sp,$fp
-	sw	$5,0($2)
-	lw	$31,32($sp)
-	lw	$fp,28($sp)
-	lw	$16,24($sp)
 	move	$2,$0
+	lw	$31,36($sp)
+	lw	$fp,32($sp)
+	lw	$16,28($sp)
 	.set	noreorder
 	.set	nomacro
-	j	$31
+	jr	$31
 	addiu	$sp,$sp,40
 	.set	macro
 	.set	reorder
 
-$L56:
-	lw	$2,8($16)
+$L45:
+	lw	$3,8($16)
+	sb	$2,0($3)
 	move	$sp,$fp
-	sb	$5,0($2)
-	lw	$31,32($sp)
-	lw	$fp,28($sp)
-	lw	$16,24($sp)
 	move	$2,$0
+	lw	$31,36($sp)
+	lw	$fp,32($sp)
+	lw	$16,28($sp)
 	.set	noreorder
 	.set	nomacro
-	j	$31
+	jr	$31
 	addiu	$sp,$sp,40
 	.set	macro
 	.set	reorder
 
-$L58:
-	lw	$2,8($16)
+$L46:
+	lw	$3,8($16)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	sh	$5,0($2)
+	b	$L8
+	sh	$2,0($3)
 	.set	macro
 	.set	reorder
 
-$L61:
-	lw	$2,8($16)
+$L48:
+	lw	$4,8($16)
+	sw	$2,0($4)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	swc1	$f0,0($2)
+	b	$L8
+	sw	$3,4($4)
 	.set	macro
 	.set	reorder
 
-$L60:
+$L49:
 	lw	$2,8($16)
-	
-	sw	$3,4($2)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	sw	$5,0($2)
+	b	$L8
+	swc1	$f0,0($2)
 	.set	macro
 	.set	reorder
 
-$L62:
+$L50:
 	lw	$2,8($16)
-	
-	swc1	$f0,4($2)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	swc1	$f1,0($2)
+	b	$L8
+	sdc1	$f0,0($2)
 	.set	macro
 	.set	reorder
 
 	.end	avcall_call
+	.size	avcall_call, .-avcall_call
--- a/avcall/avcall-mipsel-linux.s
+++ b/avcall/avcall-mipsel-linux.s
@@ -1,325 +1,310 @@
 	.file	1 "avcall-mips.c"
 	.section .mdebug.abi32
 	.previous
+	.nan	legacy
+	.module	fp=xx
+	.module	nooddspreg
 	.abicalls
 	.text
 	.align	2
 	.globl	avcall_call
+	.set	nomips16
+	.set	nomicromips
 	.ent	avcall_call
 	.type	avcall_call, @function
 avcall_call:
 	.frame	$fp,40,$31		# vars= 0, regs= 3/0, args= 16, gp= 8
-	.mask	0xc0010000,-8
+	.mask	0xc0010000,-4
 	.fmask	0x00000000,0
 	addiu	$sp,$sp,-40
-	sw	$fp,28($sp)
+	lw	$8,24($4)
+	lw	$3,20($4)
+	lw	$5,40($4)
+	sw	$fp,32($sp)
 	move	$fp,$sp
-	sw	$31,32($sp)
-	sw	$16,24($sp)
-	.cprestore	16
-	lw	$3,24($4)
-	lw	$2,20($4)
-	move	$16,$4
-	lw	$4,40($4)
-	subu	$2,$2,$3
+	sw	$16,28($sp)
+	subu	$3,$3,$8
+	sw	$31,36($sp)
 	addiu	$sp,$sp,-1032
-	andi	$3,$4,0x1
-	sra	$7,$2,2
+	move	$16,$4
+	andi	$4,$5,0x1
+	move	$2,$sp
 	.set	noreorder
 	.set	nomacro
-	beq	$3,$0,$L2
-	move	$5,$sp
+	beq	$4,$0,$L2
+	sra	$7,$3,2
 	.set	macro
 	.set	reorder
 
 #APP
+ # 76 "avcall-mips.c" 1
 	l.s $f12,48($16)
+ # 0 "" 2
 #NO_APP
 $L2:
-	lw	$3,44($16)
-	#nop
-	andi	$2,$3,0x1
-	.set	noreorder
-	.set	nomacro
-	beq	$2,$0,$L63
-	andi	$2,$4,0x2
-	.set	macro
-	.set	reorder
-
+	lw	$4,44($16)
+	andi	$6,$4,0x1
+	beq	$6,$0,$L3
 #APP
+ # 78 "avcall-mips.c" 1
 	l.d $f12,56($16)
+ # 0 "" 2
 #NO_APP
-	andi	$2,$4,0x2
-$L63:
-	.set	noreorder
-	.set	nomacro
-	beq	$2,$0,$L64
-	andi	$2,$3,0x2
-	.set	macro
-	.set	reorder
-
+$L3:
+	andi	$5,$5,0x2
+	beq	$5,$0,$L4
 #APP
+ # 80 "avcall-mips.c" 1
 	l.s $f14,52($16)
+ # 0 "" 2
 #NO_APP
-	andi	$2,$3,0x2
-$L64:
-	.set	noreorder
-	.set	nomacro
-	beq	$2,$0,$L65
-	slt	$2,$7,5
-	.set	macro
-	.set	reorder
-
+$L4:
+	andi	$4,$4,0x2
+	beq	$4,$0,$L5
 #APP
+ # 82 "avcall-mips.c" 1
 	l.d $f14,64($16)
+ # 0 "" 2
 #NO_APP
-	slt	$2,$7,5
-$L65:
+$L5:
+	slt	$3,$3,17
 	.set	noreorder
 	.set	nomacro
-	bne	$2,$0,$L51
-	li	$4,4			# 0x4
+	bne	$3,$0,$L6
+	addiu	$4,$8,16
 	.set	macro
 	.set	reorder
 
-	lw	$6,24($16)
-$L10:
-	sll	$2,$4,2
-	addu	$2,$2,$6
-	lw	$3,0($2)
-	addiu	$4,$4,1
-	sw	$3,16($5)
+	addiu	$2,$2,16
+	li	$3,4			# 0x4
+$L7:
+	lw	$6,0($4)
+	addiu	$3,$3,1
+	addiu	$4,$4,4
+	slt	$5,$3,$7
+	sw	$6,0($2)
 	.set	noreorder
 	.set	nomacro
-	bne	$7,$4,$L10
-	addiu	$5,$5,4
+	bne	$5,$0,$L7
+	addiu	$2,$2,4
 	.set	macro
 	.set	reorder
 
-$L11:
-	lw	$4,0($6)
-	lw	$5,4($6)
-	lw	$7,12($6)
+$L6:
+	lw	$5,4($8)
+	lw	$4,0($8)
 	lw	$25,4($16)
-	lw	$6,8($6)
-	jalr	$25
-	lw	$4,12($16)
-	move	$5,$2
-	li	$2,1			# 0x1
-	lw	$28,16($fp)
-	beq	$4,$2,$L12
+	lw	$7,12($8)
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$0,$L57
-	li	$2,2			# 0x2
+	jalr	$25
+	lw	$6,8($8)
 	.set	macro
 	.set	reorder
 
+	li	$5,1			# 0x1
+	lw	$4,12($16)
+	beq	$4,$5,$L8
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L56
-	li	$2,3			# 0x3
+	beq	$4,$0,$L42
+	li	$5,2			# 0x2
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L56
-	li	$2,4			# 0x4
+	beq	$4,$5,$L45
+	li	$5,3			# 0x3
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L56
-	li	$2,5			# 0x5
+	beq	$4,$5,$L45
+	li	$5,4			# 0x4
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L58
-	li	$2,6			# 0x6
+	beq	$4,$5,$L45
+	li	$5,5			# 0x5
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L58
-	li	$2,7			# 0x7
+	beq	$4,$5,$L46
+	li	$5,6			# 0x6
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,8			# 0x8
+	beq	$4,$5,$L46
+	li	$5,7			# 0x7
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,9			# 0x9
+	beq	$4,$5,$L42
+	li	$5,8			# 0x8
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,10			# 0xa
+	beq	$4,$5,$L42
+	li	$5,9			# 0x9
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	addiu	$2,$4,-11
+	beq	$4,$5,$L42
+	li	$5,10			# 0xa
 	.set	macro
 	.set	reorder
 
-	sltu	$2,$2,2
 	.set	noreorder
 	.set	nomacro
-	bne	$2,$0,$L60
-	li	$2,13			# 0xd
+	beq	$4,$5,$L42
+	addiu	$5,$4,-11
 	.set	macro
 	.set	reorder
 
+	sltu	$5,$5,2
+	bne	$5,$0,$L48
+	li	$3,13			# 0xd
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L61
-	li	$2,14			# 0xe
+	beq	$4,$3,$L49
+	li	$3,14			# 0xe
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L62
-	li	$2,15			# 0xf
+	beq	$4,$3,$L50
+	li	$3,15			# 0xf
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,16			# 0x10
+	beq	$4,$3,$L42
+	li	$3,16			# 0x10
 	.set	macro
 	.set	reorder
 
-	bne	$4,$2,$L12
-	lw	$2,0($16)
-	#nop
-	andi	$2,$2,0x2
+	bne	$4,$3,$L8
+	lw	$3,0($16)
+	andi	$3,$3,0x2
 	.set	noreorder
 	.set	nomacro
-	beq	$2,$0,$L12
-	li	$2,1			# 0x1
+	beq	$3,$0,$L8
+	li	$4,1			# 0x1
 	.set	macro
 	.set	reorder
 
 	lw	$3,16($16)
-	#nop
 	.set	noreorder
 	.set	nomacro
-	beq	$3,$2,$L56
-	li	$2,2			# 0x2
+	beq	$3,$4,$L45
+	li	$4,2			# 0x2
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$3,$2,$L58
-	li	$2,4			# 0x4
+	beq	$3,$4,$L46
+	li	$4,4			# 0x4
 	.set	macro
 	.set	reorder
 
-	beq	$3,$2,$L57
-$L12:
+	beq	$3,$4,$L42
+$L8:
 	move	$sp,$fp
-	lw	$31,32($fp)
-	lw	$fp,28($sp)
-	lw	$16,24($sp)
 	move	$2,$0
+	lw	$31,36($sp)
+	lw	$fp,32($sp)
+	lw	$16,28($sp)
 	.set	noreorder
 	.set	nomacro
-	j	$31
+	jr	$31
 	addiu	$sp,$sp,40
 	.set	macro
 	.set	reorder
 
-$L51:
-	lw	$6,24($16)
-	b	$L11
-$L57:
-	lw	$2,8($16)
+$L42:
+	lw	$3,8($16)
+	sw	$2,0($3)
 	move	$sp,$fp
-	sw	$5,0($2)
-	lw	$31,32($sp)
-	lw	$fp,28($sp)
-	lw	$16,24($sp)
 	move	$2,$0
+	lw	$31,36($sp)
+	lw	$fp,32($sp)
+	lw	$16,28($sp)
 	.set	noreorder
 	.set	nomacro
-	j	$31
+	jr	$31
 	addiu	$sp,$sp,40
 	.set	macro
 	.set	reorder
 
-$L56:
-	lw	$2,8($16)
+$L45:
+	lw	$3,8($16)
+	sb	$2,0($3)
 	move	$sp,$fp
-	sb	$5,0($2)
-	lw	$31,32($sp)
-	lw	$fp,28($sp)
-	lw	$16,24($sp)
 	move	$2,$0
+	lw	$31,36($sp)
+	lw	$fp,32($sp)
+	lw	$16,28($sp)
 	.set	noreorder
 	.set	nomacro
-	j	$31
+	jr	$31
 	addiu	$sp,$sp,40
 	.set	macro
 	.set	reorder
 
-$L58:
-	lw	$2,8($16)
+$L46:
+	lw	$3,8($16)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	sh	$5,0($2)
+	b	$L8
+	sh	$2,0($3)
 	.set	macro
 	.set	reorder
 
-$L61:
-	lw	$2,8($16)
+$L48:
+	lw	$4,8($16)
+	sw	$2,0($4)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	swc1	$f0,0($2)
+	b	$L8
+	sw	$3,4($4)
 	.set	macro
 	.set	reorder
 
-$L60:
+$L49:
 	lw	$2,8($16)
-	#nop
-	sw	$3,4($2)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	sw	$5,0($2)
+	b	$L8
+	swc1	$f0,0($2)
 	.set	macro
 	.set	reorder
 
-$L62:
+$L50:
 	lw	$2,8($16)
-	#nop
-	swc1	$f0,0($2)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	swc1	$f1,4($2)
+	b	$L8
+	sdc1	$f0,0($2)
 	.set	macro
 	.set	reorder
 
 	.end	avcall_call
-	.ident	"GCC: (GNU) 4.0.2"
+	.size	avcall_call, .-avcall_call
+	.ident	"GCC: (Debian 7.2.0-11) 7.2.0"
--- a/avcall/avcall-mipsel-macro.S
+++ b/avcall/avcall-mipsel-macro.S
@@ -1,322 +1,307 @@
 #include "asm-mips.h"
 	.file	1 "avcall-mips.c"
+	.nan	legacy
+	.module	fp=xx
+	.module	nooddspreg
 	.text
 	.align	2
 	.globl	avcall_call
+	.set	nomips16
+	.set	nomicromips
 	.ent	avcall_call
 	DECLARE_FUNCTION(avcall_call)
 avcall_call:
 	.frame	$fp,40,$31		
-	.mask	0xc0010000,-8
+	.mask	0xc0010000,-4
 	.fmask	0x00000000,0
 	addiu	$sp,$sp,-40
-	sw	$fp,28($sp)
+	lw	$8,24($4)
+	lw	$3,20($4)
+	lw	$5,40($4)
+	sw	$fp,32($sp)
 	move	$fp,$sp
-	sw	$31,32($sp)
-	sw	$16,24($sp)
-	.cprestore	16
-	lw	$3,24($4)
-	lw	$2,20($4)
-	move	$16,$4
-	lw	$4,40($4)
-	subu	$2,$2,$3
+	sw	$16,28($sp)
+	subu	$3,$3,$8
+	sw	$31,36($sp)
 	addiu	$sp,$sp,-1032
-	andi	$3,$4,0x1
-	sra	$7,$2,2
+	move	$16,$4
+	andi	$4,$5,0x1
+	move	$2,$sp
 	.set	noreorder
 	.set	nomacro
-	beq	$3,$0,$L2
-	move	$5,$sp
+	beq	$4,$0,$L2
+	sra	$7,$3,2
 	.set	macro
 	.set	reorder
 
 
+ 
 	l.s $f12,48($16)
+ 
 
 $L2:
-	lw	$3,44($16)
-	
-	andi	$2,$3,0x1
-	.set	noreorder
-	.set	nomacro
-	beq	$2,$0,$L63
-	andi	$2,$4,0x2
-	.set	macro
-	.set	reorder
-
+	lw	$4,44($16)
+	andi	$6,$4,0x1
+	beq	$6,$0,$L3
 
+ 
 	l.d $f12,56($16)
+ 
 
-	andi	$2,$4,0x2
-$L63:
-	.set	noreorder
-	.set	nomacro
-	beq	$2,$0,$L64
-	andi	$2,$3,0x2
-	.set	macro
-	.set	reorder
-
+$L3:
+	andi	$5,$5,0x2
+	beq	$5,$0,$L4
 
+ 
 	l.s $f14,52($16)
+ 
 
-	andi	$2,$3,0x2
-$L64:
-	.set	noreorder
-	.set	nomacro
-	beq	$2,$0,$L65
-	slt	$2,$7,5
-	.set	macro
-	.set	reorder
-
+$L4:
+	andi	$4,$4,0x2
+	beq	$4,$0,$L5
 
+ 
 	l.d $f14,64($16)
+ 
 
-	slt	$2,$7,5
-$L65:
+$L5:
+	slt	$3,$3,17
 	.set	noreorder
 	.set	nomacro
-	bne	$2,$0,$L51
-	li	$4,4			
+	bne	$3,$0,$L6
+	addiu	$4,$8,16
 	.set	macro
 	.set	reorder
 
-	lw	$6,24($16)
-$L10:
-	sll	$2,$4,2
-	addu	$2,$2,$6
-	lw	$3,0($2)
-	addiu	$4,$4,1
-	sw	$3,16($5)
+	addiu	$2,$2,16
+	li	$3,4			
+$L7:
+	lw	$6,0($4)
+	addiu	$3,$3,1
+	addiu	$4,$4,4
+	slt	$5,$3,$7
+	sw	$6,0($2)
 	.set	noreorder
 	.set	nomacro
-	bne	$7,$4,$L10
-	addiu	$5,$5,4
+	bne	$5,$0,$L7
+	addiu	$2,$2,4
 	.set	macro
 	.set	reorder
 
-$L11:
-	lw	$4,0($6)
-	lw	$5,4($6)
-	lw	$7,12($6)
+$L6:
+	lw	$5,4($8)
+	lw	$4,0($8)
 	lw	$25,4($16)
-	lw	$6,8($6)
-	jalr	$25
-	lw	$4,12($16)
-	move	$5,$2
-	li	$2,1			
-	lw	$28,16($fp)
-	beq	$4,$2,$L12
+	lw	$7,12($8)
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$0,$L57
-	li	$2,2			
+	jalr	$25
+	lw	$6,8($8)
 	.set	macro
 	.set	reorder
 
+	li	$5,1			
+	lw	$4,12($16)
+	beq	$4,$5,$L8
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L56
-	li	$2,3			
+	beq	$4,$0,$L42
+	li	$5,2			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L56
-	li	$2,4			
+	beq	$4,$5,$L45
+	li	$5,3			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L56
-	li	$2,5			
+	beq	$4,$5,$L45
+	li	$5,4			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L58
-	li	$2,6			
+	beq	$4,$5,$L45
+	li	$5,5			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L58
-	li	$2,7			
+	beq	$4,$5,$L46
+	li	$5,6			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,8			
+	beq	$4,$5,$L46
+	li	$5,7			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,9			
+	beq	$4,$5,$L42
+	li	$5,8			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,10			
+	beq	$4,$5,$L42
+	li	$5,9			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	addiu	$2,$4,-11
+	beq	$4,$5,$L42
+	li	$5,10			
 	.set	macro
 	.set	reorder
 
-	sltu	$2,$2,2
 	.set	noreorder
 	.set	nomacro
-	bne	$2,$0,$L60
-	li	$2,13			
+	beq	$4,$5,$L42
+	addiu	$5,$4,-11
 	.set	macro
 	.set	reorder
 
+	sltu	$5,$5,2
+	bne	$5,$0,$L48
+	li	$3,13			
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L61
-	li	$2,14			
+	beq	$4,$3,$L49
+	li	$3,14			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L62
-	li	$2,15			
+	beq	$4,$3,$L50
+	li	$3,15			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$2,$L57
-	li	$2,16			
+	beq	$4,$3,$L42
+	li	$3,16			
 	.set	macro
 	.set	reorder
 
-	bne	$4,$2,$L12
-	lw	$2,0($16)
-	
-	andi	$2,$2,0x2
+	bne	$4,$3,$L8
+	lw	$3,0($16)
+	andi	$3,$3,0x2
 	.set	noreorder
 	.set	nomacro
-	beq	$2,$0,$L12
-	li	$2,1			
+	beq	$3,$0,$L8
+	li	$4,1			
 	.set	macro
 	.set	reorder
 
 	lw	$3,16($16)
-	
 	.set	noreorder
 	.set	nomacro
-	beq	$3,$2,$L56
-	li	$2,2			
+	beq	$3,$4,$L45
+	li	$4,2			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$3,$2,$L58
-	li	$2,4			
+	beq	$3,$4,$L46
+	li	$4,4			
 	.set	macro
 	.set	reorder
 
-	beq	$3,$2,$L57
-$L12:
+	beq	$3,$4,$L42
+$L8:
 	move	$sp,$fp
-	lw	$31,32($fp)
-	lw	$fp,28($sp)
-	lw	$16,24($sp)
 	move	$2,$0
+	lw	$31,36($sp)
+	lw	$fp,32($sp)
+	lw	$16,28($sp)
 	.set	noreorder
 	.set	nomacro
-	j	$31
+	jr	$31
 	addiu	$sp,$sp,40
 	.set	macro
 	.set	reorder
 
-$L51:
-	lw	$6,24($16)
-	b	$L11
-$L57:
-	lw	$2,8($16)
+$L42:
+	lw	$3,8($16)
+	sw	$2,0($3)
 	move	$sp,$fp
-	sw	$5,0($2)
-	lw	$31,32($sp)
-	lw	$fp,28($sp)
-	lw	$16,24($sp)
 	move	$2,$0
+	lw	$31,36($sp)
+	lw	$fp,32($sp)
+	lw	$16,28($sp)
 	.set	noreorder
 	.set	nomacro
-	j	$31
+	jr	$31
 	addiu	$sp,$sp,40
 	.set	macro
 	.set	reorder
 
-$L56:
-	lw	$2,8($16)
+$L45:
+	lw	$3,8($16)
+	sb	$2,0($3)
 	move	$sp,$fp
-	sb	$5,0($2)
-	lw	$31,32($sp)
-	lw	$fp,28($sp)
-	lw	$16,24($sp)
 	move	$2,$0
+	lw	$31,36($sp)
+	lw	$fp,32($sp)
+	lw	$16,28($sp)
 	.set	noreorder
 	.set	nomacro
-	j	$31
+	jr	$31
 	addiu	$sp,$sp,40
 	.set	macro
 	.set	reorder
 
-$L58:
-	lw	$2,8($16)
+$L46:
+	lw	$3,8($16)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	sh	$5,0($2)
+	b	$L8
+	sh	$2,0($3)
 	.set	macro
 	.set	reorder
 
-$L61:
-	lw	$2,8($16)
+$L48:
+	lw	$4,8($16)
+	sw	$2,0($4)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	swc1	$f0,0($2)
+	b	$L8
+	sw	$3,4($4)
 	.set	macro
 	.set	reorder
 
-$L60:
+$L49:
 	lw	$2,8($16)
-	
-	sw	$3,4($2)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	sw	$5,0($2)
+	b	$L8
+	swc1	$f0,0($2)
 	.set	macro
 	.set	reorder
 
-$L62:
+$L50:
 	lw	$2,8($16)
-	
-	swc1	$f0,0($2)
 	.set	noreorder
 	.set	nomacro
-	b	$L12
-	swc1	$f1,4($2)
+	b	$L8
+	sdc1	$f0,0($2)
 	.set	macro
 	.set	reorder
 
 	.end	avcall_call
+	.size	avcall_call, .-avcall_call
--- a/callback/vacall_r/vacall-mipseb-linux.s
+++ b/callback/vacall_r/vacall-mipseb-linux.s
@@ -1,9 +1,14 @@
 	.file	1 "vacall-mips.c"
 	.section .mdebug.abi32
 	.previous
+	.nan	legacy
+	.module	fp=xx
+	.module	nooddspreg
 	.abicalls
 	.text
 	.align	2
+	.set	nomips16
+	.set	nomicromips
 	.ent	callback_receiver
 	.type	callback_receiver, @function
 callback_receiver:
@@ -17,162 +22,164 @@ callback_receiver:
 	sw	$fp,96($sp)
 	move	$fp,$sp
 	sw	$31,100($sp)
-	.cprestore	16
-	sw	$0,44($fp)
-	sw	$5,108($fp)
-	addiu	$5,$fp,120
 	sw	$4,104($fp)
-	sw	$5,56($fp)
-	lw	$4,4($2)
-	addiu	$5,$fp,104
-	lw	$25,0($2)
-	sw	$5,40($fp)
-	sw	$6,112($fp)
+	addiu	$4,$fp,104
+	sw	$5,108($fp)
 	addiu	$5,$fp,24
+	sw	$4,40($fp)
+	addiu	$4,$fp,120
+	.cprestore	16
+	sw	$4,56($fp)
+	sw	$6,112($fp)
 	sw	$7,116($fp)
-	swc1	$f12,84($fp)
-	swc1	$f13,80($fp)
-	swc1	$f14,92($fp)
-	swc1	$f15,88($fp)
-	swc1	$f12,68($fp)
-	swc1	$f14,72($fp)
 	sw	$0,24($fp)
+	sw	$0,44($fp)
 	sw	$0,48($fp)
 	sw	$0,60($fp)
 	sw	$0,64($fp)
+	lw	$4,4($2)
+	lw	$25,0($2)
+	sdc1	$f12,80($fp)
+	sdc1	$f14,88($fp)
+	swc1	$f12,68($fp)
+	swc1	$f14,72($fp)
 	jal	$25
-	lw	$5,48($fp)
+	lw	$4,48($fp)
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$0,$L38
-	li	$4,1			# 0x1
+	beq	$4,$0,$L1
+	li	$5,1			# 0x1
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,2			# 0x2
+	beq	$4,$5,$L23
+	li	$5,2			# 0x2
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,3			# 0x3
+	beq	$4,$5,$L23
+	li	$5,3			# 0x3
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L45
-	li	$4,4			# 0x4
+	beq	$4,$5,$L29
+	li	$5,4			# 0x4
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L46
-	li	$4,5			# 0x5
+	beq	$4,$5,$L30
+	li	$5,5			# 0x5
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L47
-	li	$4,6			# 0x6
+	beq	$4,$5,$L31
+	li	$5,6			# 0x6
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,7			# 0x7
+	beq	$4,$5,$L27
+	li	$5,7			# 0x7
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,8			# 0x8
+	beq	$4,$5,$L27
+	li	$5,8			# 0x8
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,9			# 0x9
+	beq	$4,$5,$L27
+	li	$5,9			# 0x9
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	addiu	$4,$5,-10
+	beq	$4,$5,$L27
+	addiu	$5,$4,-10
 	.set	macro
 	.set	reorder
 
-	sltu	$4,$4,2
+	sltu	$5,$5,2
 	.set	noreorder
 	.set	nomacro
-	bne	$4,$0,$L48
-	li	$4,12			# 0xc
+	bne	$5,$0,$L32
+	li	$5,12			# 0xc
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L49
-	li	$4,13			# 0xd
+	beq	$4,$5,$L33
+	li	$5,13			# 0xd
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L50
-	li	$4,14			# 0xe
+	beq	$4,$5,$L34
+	li	$5,14			# 0xe
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,15			# 0xf
+	beq	$4,$5,$L27
+	li	$5,15			# 0xf
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
+	.set	noreorder
+	.set	nomacro
+	bne	$4,$5,$L1
 	lw	$4,24($fp)
+	.set	macro
+	.set	reorder
+
 	andi	$4,$4,0x2
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$0,$L31
-	li	$4,1			# 0x1
+	beq	$4,$0,$L16
+	lw	$4,52($fp)
 	.set	macro
 	.set	reorder
 
-	lw	$5,52($fp)
+	li	$5,1			# 0x1
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L51
-	li	$4,2			# 0x2
+	beq	$4,$5,$L35
+	li	$5,2			# 0x2
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L52
-	li	$4,4			# 0x4
+	beq	$4,$5,$L36
+	li	$5,4			# 0x4
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
-	lw	$4,44($fp)
-	lw	$2,0($4)
-$L38:
+	bne	$4,$5,$L1
+	lw	$2,44($fp)
+	lw	$2,0($2)
+$L1:
 	move	$sp,$fp
-$L53:
-	lw	$31,100($sp)
+	lw	$31,100($fp)
 	lw	$fp,96($sp)
 	.set	noreorder
 	.set	nomacro
@@ -181,7 +188,7 @@ $L53:
 	.set	macro
 	.set	reorder
 
-$L39:
+$L23:
 	move	$sp,$fp
 	lb	$2,32($fp)
 	lw	$31,100($sp)
@@ -193,118 +200,110 @@ $L39:
 	.set	macro
 	.set	reorder
 
-$L46:
-	lh	$2,32($fp)
+$L29:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L43:
-	lw	$2,32($fp)
+$L27:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L45:
-	lbu	$2,32($fp)
+$L30:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lh	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L47:
-	lhu	$2,32($fp)
+$L31:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L49:
-	lwc1	$f0,32($fp)
+$L32:
+	lw	$2,32($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$3,36($fp)
 	.set	macro
 	.set	reorder
 
-$L48:
-	lw	$2,32($fp)
-	lw	$3,36($fp)
+$L33:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lwc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L50:
-	lwc1	$f0,36($fp)
-	lwc1	$f1,32($fp)
+$L34:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	ldc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L31:
-	lw	$2,44($fp)
+$L16:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,44($fp)
 	.set	macro
 	.set	reorder
 
-$L51:
-	lw	$4,44($fp)
-	lbu	$2,0($4)
+$L35:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,0($2)
 	.set	macro
 	.set	reorder
 
-$L52:
-	lw	$4,44($fp)
-	lhu	$2,0($4)
+$L36:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,0($2)
 	.set	macro
 	.set	reorder
 
 	.end	callback_receiver
+	.size	callback_receiver, .-callback_receiver
 	.align	2
 	.globl	callback_get_receiver
+	.set	nomips16
+	.set	nomicromips
 	.ent	callback_get_receiver
 	.type	callback_get_receiver, @function
 callback_get_receiver:
 	.frame	$fp,8,$31		# vars= 0, regs= 1/0, args= 0, gp= 0
-	.mask	0x40000000,-8
+	.mask	0x40000000,-4
 	.fmask	0x00000000,0
 	.set	noreorder
 	.cpload	$25
 	.set	reorder
 	addiu	$sp,$sp,-8
-	sw	$fp,0($sp)
+	sw	$fp,4($sp)
 	move	$fp,$sp
 	move	$sp,$fp
-	lw	$fp,0($sp)
 	la	$2,callback_receiver
+	lw	$fp,4($sp)
 	.set	noreorder
 	.set	nomacro
 	j	$31
@@ -313,4 +312,5 @@ callback_get_receiver:
 	.set	reorder
 
 	.end	callback_get_receiver
-	.ident	"GCC: (GNU) 4.0.2"
+	.size	callback_get_receiver, .-callback_get_receiver
+	.ident	"GCC: (Debian 7.2.0-11) 7.2.0"
--- a/callback/vacall_r/vacall-mipseb-macro.S
+++ b/callback/vacall_r/vacall-mipseb-macro.S
@@ -1,7 +1,12 @@
 #include "asm-mips.h"
 	.file	1 "vacall-mips.c"
+	.nan	legacy
+	.module	fp=xx
+	.module	nooddspreg
 	.text
 	.align	2
+	.set	nomips16
+	.set	nomicromips
 	.ent	callback_receiver
 	DECLARE_FUNCTION(callback_receiver)
 callback_receiver:
@@ -15,162 +20,164 @@ callback_receiver:
 	sw	$fp,96($sp)
 	move	$fp,$sp
 	sw	$31,100($sp)
-	.cprestore	16
-	sw	$0,44($fp)
-	sw	$5,108($fp)
-	addiu	$5,$fp,120
 	sw	$4,104($fp)
-	sw	$5,56($fp)
-	lw	$4,4($2)
-	addiu	$5,$fp,104
-	lw	$25,0($2)
-	sw	$5,40($fp)
-	sw	$6,112($fp)
+	addiu	$4,$fp,104
+	sw	$5,108($fp)
 	addiu	$5,$fp,24
+	sw	$4,40($fp)
+	addiu	$4,$fp,120
+	.cprestore	16
+	sw	$4,56($fp)
+	sw	$6,112($fp)
 	sw	$7,116($fp)
-	swc1	$f12,84($fp)
-	swc1	$f13,80($fp)
-	swc1	$f14,92($fp)
-	swc1	$f15,88($fp)
-	swc1	$f12,68($fp)
-	swc1	$f14,72($fp)
 	sw	$0,24($fp)
+	sw	$0,44($fp)
 	sw	$0,48($fp)
 	sw	$0,60($fp)
 	sw	$0,64($fp)
+	lw	$4,4($2)
+	lw	$25,0($2)
+	sdc1	$f12,80($fp)
+	sdc1	$f14,88($fp)
+	swc1	$f12,68($fp)
+	swc1	$f14,72($fp)
 	jal	$25
-	lw	$5,48($fp)
+	lw	$4,48($fp)
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$0,$L38
-	li	$4,1			
+	beq	$4,$0,$L1
+	li	$5,1			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,2			
+	beq	$4,$5,$L23
+	li	$5,2			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,3			
+	beq	$4,$5,$L23
+	li	$5,3			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L45
-	li	$4,4			
+	beq	$4,$5,$L29
+	li	$5,4			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L46
-	li	$4,5			
+	beq	$4,$5,$L30
+	li	$5,5			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L47
-	li	$4,6			
+	beq	$4,$5,$L31
+	li	$5,6			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,7			
+	beq	$4,$5,$L27
+	li	$5,7			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,8			
+	beq	$4,$5,$L27
+	li	$5,8			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,9			
+	beq	$4,$5,$L27
+	li	$5,9			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	addiu	$4,$5,-10
+	beq	$4,$5,$L27
+	addiu	$5,$4,-10
 	.set	macro
 	.set	reorder
 
-	sltu	$4,$4,2
+	sltu	$5,$5,2
 	.set	noreorder
 	.set	nomacro
-	bne	$4,$0,$L48
-	li	$4,12			
+	bne	$5,$0,$L32
+	li	$5,12			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L49
-	li	$4,13			
+	beq	$4,$5,$L33
+	li	$5,13			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L50
-	li	$4,14			
+	beq	$4,$5,$L34
+	li	$5,14			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,15			
+	beq	$4,$5,$L27
+	li	$5,15			
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
+	.set	noreorder
+	.set	nomacro
+	bne	$4,$5,$L1
 	lw	$4,24($fp)
+	.set	macro
+	.set	reorder
+
 	andi	$4,$4,0x2
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$0,$L31
-	li	$4,1			
+	beq	$4,$0,$L16
+	lw	$4,52($fp)
 	.set	macro
 	.set	reorder
 
-	lw	$5,52($fp)
+	li	$5,1			
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L51
-	li	$4,2			
+	beq	$4,$5,$L35
+	li	$5,2			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L52
-	li	$4,4			
+	beq	$4,$5,$L36
+	li	$5,4			
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
-	lw	$4,44($fp)
-	lw	$2,0($4)
-$L38:
+	bne	$4,$5,$L1
+	lw	$2,44($fp)
+	lw	$2,0($2)
+$L1:
 	move	$sp,$fp
-$L53:
-	lw	$31,100($sp)
+	lw	$31,100($fp)
 	lw	$fp,96($sp)
 	.set	noreorder
 	.set	nomacro
@@ -179,7 +186,7 @@ $L53:
 	.set	macro
 	.set	reorder
 
-$L39:
+$L23:
 	move	$sp,$fp
 	lb	$2,32($fp)
 	lw	$31,100($sp)
@@ -191,118 +198,110 @@ $L39:
 	.set	macro
 	.set	reorder
 
-$L46:
-	lh	$2,32($fp)
+$L29:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L43:
-	lw	$2,32($fp)
+$L27:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L45:
-	lbu	$2,32($fp)
+$L30:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lh	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L47:
-	lhu	$2,32($fp)
+$L31:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L49:
-	lwc1	$f0,32($fp)
+$L32:
+	lw	$2,32($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$3,36($fp)
 	.set	macro
 	.set	reorder
 
-$L48:
-	lw	$2,32($fp)
-	lw	$3,36($fp)
+$L33:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lwc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L50:
-	lwc1	$f0,36($fp)
-	lwc1	$f1,32($fp)
+$L34:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	ldc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L31:
-	lw	$2,44($fp)
+$L16:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,44($fp)
 	.set	macro
 	.set	reorder
 
-$L51:
-	lw	$4,44($fp)
-	lbu	$2,0($4)
+$L35:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,0($2)
 	.set	macro
 	.set	reorder
 
-$L52:
-	lw	$4,44($fp)
-	lhu	$2,0($4)
+$L36:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,0($2)
 	.set	macro
 	.set	reorder
 
 	.end	callback_receiver
+	.size	callback_receiver, .-callback_receiver
 	.align	2
 	.globl	callback_get_receiver
+	.set	nomips16
+	.set	nomicromips
 	.ent	callback_get_receiver
 	DECLARE_FUNCTION(callback_get_receiver)
 callback_get_receiver:
 	.frame	$fp,8,$31		
-	.mask	0x40000000,-8
+	.mask	0x40000000,-4
 	.fmask	0x00000000,0
 	.set	noreorder
 	.cpload	$25
 	.set	reorder
 	addiu	$sp,$sp,-8
-	sw	$fp,0($sp)
+	sw	$fp,4($sp)
 	move	$fp,$sp
 	move	$sp,$fp
-	lw	$fp,0($sp)
 	la	$2,callback_receiver
+	lw	$fp,4($sp)
 	.set	noreorder
 	.set	nomacro
 	j	$31
@@ -311,3 +310,4 @@ callback_get_receiver:
 	.set	reorder
 
 	.end	callback_get_receiver
+	.size	callback_get_receiver, .-callback_get_receiver
--- a/callback/vacall_r/vacall-mipsel-linux.s
+++ b/callback/vacall_r/vacall-mipsel-linux.s
@@ -1,9 +1,14 @@
 	.file	1 "vacall-mips.c"
 	.section .mdebug.abi32
 	.previous
+	.nan	legacy
+	.module	fp=xx
+	.module	nooddspreg
 	.abicalls
 	.text
 	.align	2
+	.set	nomips16
+	.set	nomicromips
 	.ent	callback_receiver
 	.type	callback_receiver, @function
 callback_receiver:
@@ -17,162 +22,164 @@ callback_receiver:
 	sw	$fp,96($sp)
 	move	$fp,$sp
 	sw	$31,100($sp)
-	.cprestore	16
-	sw	$0,44($fp)
-	sw	$5,108($fp)
-	addiu	$5,$fp,120
 	sw	$4,104($fp)
-	sw	$5,56($fp)
-	lw	$4,4($2)
-	addiu	$5,$fp,104
-	lw	$25,0($2)
-	sw	$5,40($fp)
-	sw	$6,112($fp)
+	addiu	$4,$fp,104
+	sw	$5,108($fp)
 	addiu	$5,$fp,24
+	sw	$4,40($fp)
+	addiu	$4,$fp,120
+	.cprestore	16
+	sw	$4,56($fp)
+	sw	$6,112($fp)
 	sw	$7,116($fp)
-	swc1	$f12,80($fp)
-	swc1	$f13,84($fp)
-	swc1	$f14,88($fp)
-	swc1	$f15,92($fp)
-	swc1	$f12,68($fp)
-	swc1	$f14,72($fp)
 	sw	$0,24($fp)
+	sw	$0,44($fp)
 	sw	$0,48($fp)
 	sw	$0,60($fp)
 	sw	$0,64($fp)
+	lw	$4,4($2)
+	lw	$25,0($2)
+	sdc1	$f12,80($fp)
+	sdc1	$f14,88($fp)
+	swc1	$f12,68($fp)
+	swc1	$f14,72($fp)
 	jal	$25
-	lw	$5,48($fp)
+	lw	$4,48($fp)
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$0,$L38
-	li	$4,1			# 0x1
+	beq	$4,$0,$L1
+	li	$5,1			# 0x1
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,2			# 0x2
+	beq	$4,$5,$L23
+	li	$5,2			# 0x2
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,3			# 0x3
+	beq	$4,$5,$L23
+	li	$5,3			# 0x3
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L45
-	li	$4,4			# 0x4
+	beq	$4,$5,$L29
+	li	$5,4			# 0x4
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L46
-	li	$4,5			# 0x5
+	beq	$4,$5,$L30
+	li	$5,5			# 0x5
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L47
-	li	$4,6			# 0x6
+	beq	$4,$5,$L31
+	li	$5,6			# 0x6
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,7			# 0x7
+	beq	$4,$5,$L27
+	li	$5,7			# 0x7
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,8			# 0x8
+	beq	$4,$5,$L27
+	li	$5,8			# 0x8
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,9			# 0x9
+	beq	$4,$5,$L27
+	li	$5,9			# 0x9
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	addiu	$4,$5,-10
+	beq	$4,$5,$L27
+	addiu	$5,$4,-10
 	.set	macro
 	.set	reorder
 
-	sltu	$4,$4,2
+	sltu	$5,$5,2
 	.set	noreorder
 	.set	nomacro
-	bne	$4,$0,$L48
-	li	$4,12			# 0xc
+	bne	$5,$0,$L32
+	li	$5,12			# 0xc
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L49
-	li	$4,13			# 0xd
+	beq	$4,$5,$L33
+	li	$5,13			# 0xd
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L50
-	li	$4,14			# 0xe
+	beq	$4,$5,$L34
+	li	$5,14			# 0xe
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,15			# 0xf
+	beq	$4,$5,$L27
+	li	$5,15			# 0xf
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
+	.set	noreorder
+	.set	nomacro
+	bne	$4,$5,$L1
 	lw	$4,24($fp)
+	.set	macro
+	.set	reorder
+
 	andi	$4,$4,0x2
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$0,$L31
-	li	$4,1			# 0x1
+	beq	$4,$0,$L16
+	lw	$4,52($fp)
 	.set	macro
 	.set	reorder
 
-	lw	$5,52($fp)
+	li	$5,1			# 0x1
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L51
-	li	$4,2			# 0x2
+	beq	$4,$5,$L35
+	li	$5,2			# 0x2
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L52
-	li	$4,4			# 0x4
+	beq	$4,$5,$L36
+	li	$5,4			# 0x4
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
-	lw	$4,44($fp)
-	lw	$2,0($4)
-$L38:
+	bne	$4,$5,$L1
+	lw	$2,44($fp)
+	lw	$2,0($2)
+$L1:
 	move	$sp,$fp
-$L53:
-	lw	$31,100($sp)
+	lw	$31,100($fp)
 	lw	$fp,96($sp)
 	.set	noreorder
 	.set	nomacro
@@ -181,7 +188,7 @@ $L53:
 	.set	macro
 	.set	reorder
 
-$L39:
+$L23:
 	move	$sp,$fp
 	lb	$2,32($fp)
 	lw	$31,100($sp)
@@ -193,118 +200,110 @@ $L39:
 	.set	macro
 	.set	reorder
 
-$L46:
-	lh	$2,32($fp)
+$L29:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L43:
-	lw	$2,32($fp)
+$L27:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L45:
-	lbu	$2,32($fp)
+$L30:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lh	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L47:
-	lhu	$2,32($fp)
+$L31:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L49:
-	lwc1	$f0,32($fp)
+$L32:
+	lw	$2,32($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$3,36($fp)
 	.set	macro
 	.set	reorder
 
-$L48:
-	lw	$2,32($fp)
-	lw	$3,36($fp)
+$L33:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lwc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L50:
-	lwc1	$f0,32($fp)
-	lwc1	$f1,36($fp)
+$L34:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	ldc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L31:
-	lw	$2,44($fp)
+$L16:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,44($fp)
 	.set	macro
 	.set	reorder
 
-$L51:
-	lw	$4,44($fp)
-	lbu	$2,0($4)
+$L35:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,0($2)
 	.set	macro
 	.set	reorder
 
-$L52:
-	lw	$4,44($fp)
-	lhu	$2,0($4)
+$L36:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,0($2)
 	.set	macro
 	.set	reorder
 
 	.end	callback_receiver
+	.size	callback_receiver, .-callback_receiver
 	.align	2
 	.globl	callback_get_receiver
+	.set	nomips16
+	.set	nomicromips
 	.ent	callback_get_receiver
 	.type	callback_get_receiver, @function
 callback_get_receiver:
 	.frame	$fp,8,$31		# vars= 0, regs= 1/0, args= 0, gp= 0
-	.mask	0x40000000,-8
+	.mask	0x40000000,-4
 	.fmask	0x00000000,0
 	.set	noreorder
 	.cpload	$25
 	.set	reorder
 	addiu	$sp,$sp,-8
-	sw	$fp,0($sp)
+	sw	$fp,4($sp)
 	move	$fp,$sp
 	move	$sp,$fp
-	lw	$fp,0($sp)
 	la	$2,callback_receiver
+	lw	$fp,4($sp)
 	.set	noreorder
 	.set	nomacro
 	j	$31
@@ -313,4 +312,5 @@ callback_get_receiver:
 	.set	reorder
 
 	.end	callback_get_receiver
-	.ident	"GCC: (GNU) 4.0.2"
+	.size	callback_get_receiver, .-callback_get_receiver
+	.ident	"GCC: (Debian 7.2.0-11) 7.2.0"
--- a/callback/vacall_r/vacall-mipsel-macro.S
+++ b/callback/vacall_r/vacall-mipsel-macro.S
@@ -1,7 +1,12 @@
 #include "asm-mips.h"
 	.file	1 "vacall-mips.c"
+	.nan	legacy
+	.module	fp=xx
+	.module	nooddspreg
 	.text
 	.align	2
+	.set	nomips16
+	.set	nomicromips
 	.ent	callback_receiver
 	DECLARE_FUNCTION(callback_receiver)
 callback_receiver:
@@ -15,162 +20,164 @@ callback_receiver:
 	sw	$fp,96($sp)
 	move	$fp,$sp
 	sw	$31,100($sp)
-	.cprestore	16
-	sw	$0,44($fp)
-	sw	$5,108($fp)
-	addiu	$5,$fp,120
 	sw	$4,104($fp)
-	sw	$5,56($fp)
-	lw	$4,4($2)
-	addiu	$5,$fp,104
-	lw	$25,0($2)
-	sw	$5,40($fp)
-	sw	$6,112($fp)
+	addiu	$4,$fp,104
+	sw	$5,108($fp)
 	addiu	$5,$fp,24
+	sw	$4,40($fp)
+	addiu	$4,$fp,120
+	.cprestore	16
+	sw	$4,56($fp)
+	sw	$6,112($fp)
 	sw	$7,116($fp)
-	swc1	$f12,80($fp)
-	swc1	$f13,84($fp)
-	swc1	$f14,88($fp)
-	swc1	$f15,92($fp)
-	swc1	$f12,68($fp)
-	swc1	$f14,72($fp)
 	sw	$0,24($fp)
+	sw	$0,44($fp)
 	sw	$0,48($fp)
 	sw	$0,60($fp)
 	sw	$0,64($fp)
+	lw	$4,4($2)
+	lw	$25,0($2)
+	sdc1	$f12,80($fp)
+	sdc1	$f14,88($fp)
+	swc1	$f12,68($fp)
+	swc1	$f14,72($fp)
 	jal	$25
-	lw	$5,48($fp)
+	lw	$4,48($fp)
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$0,$L38
-	li	$4,1			
+	beq	$4,$0,$L1
+	li	$5,1			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,2			
+	beq	$4,$5,$L23
+	li	$5,2			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,3			
+	beq	$4,$5,$L23
+	li	$5,3			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L45
-	li	$4,4			
+	beq	$4,$5,$L29
+	li	$5,4			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L46
-	li	$4,5			
+	beq	$4,$5,$L30
+	li	$5,5			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L47
-	li	$4,6			
+	beq	$4,$5,$L31
+	li	$5,6			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,7			
+	beq	$4,$5,$L27
+	li	$5,7			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,8			
+	beq	$4,$5,$L27
+	li	$5,8			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,9			
+	beq	$4,$5,$L27
+	li	$5,9			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	addiu	$4,$5,-10
+	beq	$4,$5,$L27
+	addiu	$5,$4,-10
 	.set	macro
 	.set	reorder
 
-	sltu	$4,$4,2
+	sltu	$5,$5,2
 	.set	noreorder
 	.set	nomacro
-	bne	$4,$0,$L48
-	li	$4,12			
+	bne	$5,$0,$L32
+	li	$5,12			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L49
-	li	$4,13			
+	beq	$4,$5,$L33
+	li	$5,13			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L50
-	li	$4,14			
+	beq	$4,$5,$L34
+	li	$5,14			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,15			
+	beq	$4,$5,$L27
+	li	$5,15			
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
+	.set	noreorder
+	.set	nomacro
+	bne	$4,$5,$L1
 	lw	$4,24($fp)
+	.set	macro
+	.set	reorder
+
 	andi	$4,$4,0x2
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$0,$L31
-	li	$4,1			
+	beq	$4,$0,$L16
+	lw	$4,52($fp)
 	.set	macro
 	.set	reorder
 
-	lw	$5,52($fp)
+	li	$5,1			
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L51
-	li	$4,2			
+	beq	$4,$5,$L35
+	li	$5,2			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L52
-	li	$4,4			
+	beq	$4,$5,$L36
+	li	$5,4			
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
-	lw	$4,44($fp)
-	lw	$2,0($4)
-$L38:
+	bne	$4,$5,$L1
+	lw	$2,44($fp)
+	lw	$2,0($2)
+$L1:
 	move	$sp,$fp
-$L53:
-	lw	$31,100($sp)
+	lw	$31,100($fp)
 	lw	$fp,96($sp)
 	.set	noreorder
 	.set	nomacro
@@ -179,7 +186,7 @@ $L53:
 	.set	macro
 	.set	reorder
 
-$L39:
+$L23:
 	move	$sp,$fp
 	lb	$2,32($fp)
 	lw	$31,100($sp)
@@ -191,118 +198,110 @@ $L39:
 	.set	macro
 	.set	reorder
 
-$L46:
-	lh	$2,32($fp)
+$L29:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L43:
-	lw	$2,32($fp)
+$L27:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L45:
-	lbu	$2,32($fp)
+$L30:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lh	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L47:
-	lhu	$2,32($fp)
+$L31:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L49:
-	lwc1	$f0,32($fp)
+$L32:
+	lw	$2,32($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$3,36($fp)
 	.set	macro
 	.set	reorder
 
-$L48:
-	lw	$2,32($fp)
-	lw	$3,36($fp)
+$L33:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lwc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L50:
-	lwc1	$f0,32($fp)
-	lwc1	$f1,36($fp)
+$L34:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	ldc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L31:
-	lw	$2,44($fp)
+$L16:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,44($fp)
 	.set	macro
 	.set	reorder
 
-$L51:
-	lw	$4,44($fp)
-	lbu	$2,0($4)
+$L35:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,0($2)
 	.set	macro
 	.set	reorder
 
-$L52:
-	lw	$4,44($fp)
-	lhu	$2,0($4)
+$L36:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,0($2)
 	.set	macro
 	.set	reorder
 
 	.end	callback_receiver
+	.size	callback_receiver, .-callback_receiver
 	.align	2
 	.globl	callback_get_receiver
+	.set	nomips16
+	.set	nomicromips
 	.ent	callback_get_receiver
 	DECLARE_FUNCTION(callback_get_receiver)
 callback_get_receiver:
 	.frame	$fp,8,$31		
-	.mask	0x40000000,-8
+	.mask	0x40000000,-4
 	.fmask	0x00000000,0
 	.set	noreorder
 	.cpload	$25
 	.set	reorder
 	addiu	$sp,$sp,-8
-	sw	$fp,0($sp)
+	sw	$fp,4($sp)
 	move	$fp,$sp
 	move	$sp,$fp
-	lw	$fp,0($sp)
 	la	$2,callback_receiver
+	lw	$fp,4($sp)
 	.set	noreorder
 	.set	nomacro
 	j	$31
@@ -311,3 +310,4 @@ callback_get_receiver:
 	.set	reorder
 
 	.end	callback_get_receiver
+	.size	callback_get_receiver, .-callback_get_receiver
--- a/vacall/vacall-mipseb-linux.s
+++ b/vacall/vacall-mipseb-linux.s
@@ -1,10 +1,15 @@
 	.file	1 "vacall-mips.c"
 	.section .mdebug.abi32
 	.previous
+	.nan	legacy
+	.module	fp=xx
+	.module	nooddspreg
 	.abicalls
 	.text
 	.align	2
 	.globl	vacall_receiver
+	.set	nomips16
+	.set	nomicromips
 	.ent	vacall_receiver
 	.type	vacall_receiver, @function
 vacall_receiver:
@@ -18,162 +23,164 @@ vacall_receiver:
 	sw	$fp,96($sp)
 	move	$fp,$sp
 	sw	$31,100($sp)
-	.cprestore	16
-	sw	$4,104($fp)
-	la	$8,vacall_function
-	addiu	$4,$fp,120
-	sw	$4,56($fp)
-	lw	$25,0($8)
-	addiu	$4,$fp,104
 	sw	$5,108($fp)
-	sw	$4,40($fp)
+	addiu	$5,$fp,104
+	sw	$4,104($fp)
+	addiu	$4,$fp,24
+	sw	$5,40($fp)
+	addiu	$5,$fp,120
+	sdc1	$f12,80($fp)
+	sw	$5,56($fp)
+	la	$5,vacall_function
+	sdc1	$f14,88($fp)
+	.cprestore	16
 	sw	$6,112($fp)
 	sw	$7,116($fp)
-	swc1	$f12,84($fp)
-	swc1	$f13,80($fp)
-	swc1	$f14,92($fp)
-	swc1	$f15,88($fp)
-	swc1	$f12,68($fp)
-	swc1	$f14,72($fp)
 	sw	$0,24($fp)
 	sw	$0,44($fp)
 	sw	$0,48($fp)
 	sw	$0,60($fp)
 	sw	$0,64($fp)
-	addiu	$4,$fp,24
+	lw	$25,0($5)
+	swc1	$f12,68($fp)
+	swc1	$f14,72($fp)
 	jal	$25
-	lw	$5,48($fp)
+	lw	$4,48($fp)
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$0,$L38
-	li	$4,1			# 0x1
+	beq	$4,$0,$L1
+	li	$5,1			# 0x1
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,2			# 0x2
+	beq	$4,$5,$L23
+	li	$5,2			# 0x2
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,3			# 0x3
+	beq	$4,$5,$L23
+	li	$5,3			# 0x3
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L45
-	li	$4,4			# 0x4
+	beq	$4,$5,$L29
+	li	$5,4			# 0x4
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L46
-	li	$4,5			# 0x5
+	beq	$4,$5,$L30
+	li	$5,5			# 0x5
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L47
-	li	$4,6			# 0x6
+	beq	$4,$5,$L31
+	li	$5,6			# 0x6
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,7			# 0x7
+	beq	$4,$5,$L27
+	li	$5,7			# 0x7
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,8			# 0x8
+	beq	$4,$5,$L27
+	li	$5,8			# 0x8
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,9			# 0x9
+	beq	$4,$5,$L27
+	li	$5,9			# 0x9
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	addiu	$4,$5,-10
+	beq	$4,$5,$L27
+	addiu	$5,$4,-10
 	.set	macro
 	.set	reorder
 
-	sltu	$4,$4,2
+	sltu	$5,$5,2
 	.set	noreorder
 	.set	nomacro
-	bne	$4,$0,$L48
-	li	$4,12			# 0xc
+	bne	$5,$0,$L32
+	li	$5,12			# 0xc
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L49
-	li	$4,13			# 0xd
+	beq	$4,$5,$L33
+	li	$5,13			# 0xd
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L50
-	li	$4,14			# 0xe
+	beq	$4,$5,$L34
+	li	$5,14			# 0xe
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,15			# 0xf
+	beq	$4,$5,$L27
+	li	$5,15			# 0xf
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
+	.set	noreorder
+	.set	nomacro
+	bne	$4,$5,$L1
 	lw	$4,24($fp)
+	.set	macro
+	.set	reorder
+
 	andi	$4,$4,0x2
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$0,$L31
-	li	$4,1			# 0x1
+	beq	$4,$0,$L16
+	lw	$4,52($fp)
 	.set	macro
 	.set	reorder
 
-	lw	$5,52($fp)
+	li	$5,1			# 0x1
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L51
-	li	$4,2			# 0x2
+	beq	$4,$5,$L35
+	li	$5,2			# 0x2
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L52
-	li	$4,4			# 0x4
+	beq	$4,$5,$L36
+	li	$5,4			# 0x4
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
-	lw	$4,44($fp)
-	lw	$2,0($4)
-$L38:
+	bne	$4,$5,$L1
+	lw	$2,44($fp)
+	lw	$2,0($2)
+$L1:
 	move	$sp,$fp
-$L53:
-	lw	$31,100($sp)
+	lw	$31,100($fp)
 	lw	$fp,96($sp)
 	.set	noreorder
 	.set	nomacro
@@ -182,7 +189,7 @@ $L53:
 	.set	macro
 	.set	reorder
 
-$L39:
+$L23:
 	move	$sp,$fp
 	lb	$2,32($fp)
 	lw	$31,100($sp)
@@ -194,99 +201,89 @@ $L39:
 	.set	macro
 	.set	reorder
 
-$L46:
-	lh	$2,32($fp)
+$L29:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L43:
-	lw	$2,32($fp)
+$L27:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L45:
-	lbu	$2,32($fp)
+$L30:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lh	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L47:
-	lhu	$2,32($fp)
+$L31:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L49:
-	lwc1	$f0,32($fp)
+$L32:
+	lw	$2,32($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$3,36($fp)
 	.set	macro
 	.set	reorder
 
-$L48:
-	lw	$2,32($fp)
-	lw	$3,36($fp)
+$L33:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lwc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L50:
-	lwc1	$f0,36($fp)
-	lwc1	$f1,32($fp)
+$L34:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	ldc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L31:
-	lw	$2,44($fp)
+$L16:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,44($fp)
 	.set	macro
 	.set	reorder
 
-$L51:
-	lw	$4,44($fp)
-	lbu	$2,0($4)
+$L35:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,0($2)
 	.set	macro
 	.set	reorder
 
-$L52:
-	lw	$4,44($fp)
-	lhu	$2,0($4)
+$L36:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,0($2)
 	.set	macro
 	.set	reorder
 
 	.end	vacall_receiver
-	.ident	"GCC: (GNU) 4.0.2"
+	.size	vacall_receiver, .-vacall_receiver
+	.ident	"GCC: (Debian 7.2.0-11) 7.2.0"
--- a/vacall/vacall-mipseb-macro.S
+++ b/vacall/vacall-mipseb-macro.S
@@ -1,8 +1,13 @@
 #include "asm-mips.h"
 	.file	1 "vacall-mips.c"
+	.nan	legacy
+	.module	fp=xx
+	.module	nooddspreg
 	.text
 	.align	2
 	.globl	vacall_receiver
+	.set	nomips16
+	.set	nomicromips
 	.ent	vacall_receiver
 	DECLARE_FUNCTION(vacall_receiver)
 vacall_receiver:
@@ -16,162 +21,164 @@ vacall_receiver:
 	sw	$fp,96($sp)
 	move	$fp,$sp
 	sw	$31,100($sp)
-	.cprestore	16
-	sw	$4,104($fp)
-	la	$8,vacall_function
-	addiu	$4,$fp,120
-	sw	$4,56($fp)
-	lw	$25,0($8)
-	addiu	$4,$fp,104
 	sw	$5,108($fp)
-	sw	$4,40($fp)
+	addiu	$5,$fp,104
+	sw	$4,104($fp)
+	addiu	$4,$fp,24
+	sw	$5,40($fp)
+	addiu	$5,$fp,120
+	sdc1	$f12,80($fp)
+	sw	$5,56($fp)
+	la	$5,vacall_function
+	sdc1	$f14,88($fp)
+	.cprestore	16
 	sw	$6,112($fp)
 	sw	$7,116($fp)
-	swc1	$f12,84($fp)
-	swc1	$f13,80($fp)
-	swc1	$f14,92($fp)
-	swc1	$f15,88($fp)
-	swc1	$f12,68($fp)
-	swc1	$f14,72($fp)
 	sw	$0,24($fp)
 	sw	$0,44($fp)
 	sw	$0,48($fp)
 	sw	$0,60($fp)
 	sw	$0,64($fp)
-	addiu	$4,$fp,24
+	lw	$25,0($5)
+	swc1	$f12,68($fp)
+	swc1	$f14,72($fp)
 	jal	$25
-	lw	$5,48($fp)
+	lw	$4,48($fp)
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$0,$L38
-	li	$4,1			
+	beq	$4,$0,$L1
+	li	$5,1			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,2			
+	beq	$4,$5,$L23
+	li	$5,2			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,3			
+	beq	$4,$5,$L23
+	li	$5,3			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L45
-	li	$4,4			
+	beq	$4,$5,$L29
+	li	$5,4			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L46
-	li	$4,5			
+	beq	$4,$5,$L30
+	li	$5,5			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L47
-	li	$4,6			
+	beq	$4,$5,$L31
+	li	$5,6			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,7			
+	beq	$4,$5,$L27
+	li	$5,7			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,8			
+	beq	$4,$5,$L27
+	li	$5,8			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,9			
+	beq	$4,$5,$L27
+	li	$5,9			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	addiu	$4,$5,-10
+	beq	$4,$5,$L27
+	addiu	$5,$4,-10
 	.set	macro
 	.set	reorder
 
-	sltu	$4,$4,2
+	sltu	$5,$5,2
 	.set	noreorder
 	.set	nomacro
-	bne	$4,$0,$L48
-	li	$4,12			
+	bne	$5,$0,$L32
+	li	$5,12			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L49
-	li	$4,13			
+	beq	$4,$5,$L33
+	li	$5,13			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L50
-	li	$4,14			
+	beq	$4,$5,$L34
+	li	$5,14			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,15			
+	beq	$4,$5,$L27
+	li	$5,15			
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
+	.set	noreorder
+	.set	nomacro
+	bne	$4,$5,$L1
 	lw	$4,24($fp)
+	.set	macro
+	.set	reorder
+
 	andi	$4,$4,0x2
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$0,$L31
-	li	$4,1			
+	beq	$4,$0,$L16
+	lw	$4,52($fp)
 	.set	macro
 	.set	reorder
 
-	lw	$5,52($fp)
+	li	$5,1			
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L51
-	li	$4,2			
+	beq	$4,$5,$L35
+	li	$5,2			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L52
-	li	$4,4			
+	beq	$4,$5,$L36
+	li	$5,4			
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
-	lw	$4,44($fp)
-	lw	$2,0($4)
-$L38:
+	bne	$4,$5,$L1
+	lw	$2,44($fp)
+	lw	$2,0($2)
+$L1:
 	move	$sp,$fp
-$L53:
-	lw	$31,100($sp)
+	lw	$31,100($fp)
 	lw	$fp,96($sp)
 	.set	noreorder
 	.set	nomacro
@@ -180,7 +187,7 @@ $L53:
 	.set	macro
 	.set	reorder
 
-$L39:
+$L23:
 	move	$sp,$fp
 	lb	$2,32($fp)
 	lw	$31,100($sp)
@@ -192,98 +199,88 @@ $L39:
 	.set	macro
 	.set	reorder
 
-$L46:
-	lh	$2,32($fp)
+$L29:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L43:
-	lw	$2,32($fp)
+$L27:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L45:
-	lbu	$2,32($fp)
+$L30:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lh	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L47:
-	lhu	$2,32($fp)
+$L31:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L49:
-	lwc1	$f0,32($fp)
+$L32:
+	lw	$2,32($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$3,36($fp)
 	.set	macro
 	.set	reorder
 
-$L48:
-	lw	$2,32($fp)
-	lw	$3,36($fp)
+$L33:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lwc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L50:
-	lwc1	$f0,36($fp)
-	lwc1	$f1,32($fp)
+$L34:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	ldc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L31:
-	lw	$2,44($fp)
+$L16:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,44($fp)
 	.set	macro
 	.set	reorder
 
-$L51:
-	lw	$4,44($fp)
-	lbu	$2,0($4)
+$L35:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,0($2)
 	.set	macro
 	.set	reorder
 
-$L52:
-	lw	$4,44($fp)
-	lhu	$2,0($4)
+$L36:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,0($2)
 	.set	macro
 	.set	reorder
 
 	.end	vacall_receiver
+	.size	vacall_receiver, .-vacall_receiver
--- a/vacall/vacall-mipsel-linux.s
+++ b/vacall/vacall-mipsel-linux.s
@@ -1,10 +1,15 @@
 	.file	1 "vacall-mips.c"
 	.section .mdebug.abi32
 	.previous
+	.nan	legacy
+	.module	fp=xx
+	.module	nooddspreg
 	.abicalls
 	.text
 	.align	2
 	.globl	vacall_receiver
+	.set	nomips16
+	.set	nomicromips
 	.ent	vacall_receiver
 	.type	vacall_receiver, @function
 vacall_receiver:
@@ -18,162 +23,164 @@ vacall_receiver:
 	sw	$fp,96($sp)
 	move	$fp,$sp
 	sw	$31,100($sp)
-	.cprestore	16
-	sw	$4,104($fp)
-	la	$8,vacall_function
-	addiu	$4,$fp,120
-	sw	$4,56($fp)
-	lw	$25,0($8)
-	addiu	$4,$fp,104
 	sw	$5,108($fp)
-	sw	$4,40($fp)
+	addiu	$5,$fp,104
+	sw	$4,104($fp)
+	addiu	$4,$fp,24
+	sw	$5,40($fp)
+	addiu	$5,$fp,120
+	sdc1	$f12,80($fp)
+	sw	$5,56($fp)
+	la	$5,vacall_function
+	sdc1	$f14,88($fp)
+	.cprestore	16
 	sw	$6,112($fp)
 	sw	$7,116($fp)
-	swc1	$f12,80($fp)
-	swc1	$f13,84($fp)
-	swc1	$f14,88($fp)
-	swc1	$f15,92($fp)
-	swc1	$f12,68($fp)
-	swc1	$f14,72($fp)
 	sw	$0,24($fp)
 	sw	$0,44($fp)
 	sw	$0,48($fp)
 	sw	$0,60($fp)
 	sw	$0,64($fp)
-	addiu	$4,$fp,24
+	lw	$25,0($5)
+	swc1	$f12,68($fp)
+	swc1	$f14,72($fp)
 	jal	$25
-	lw	$5,48($fp)
+	lw	$4,48($fp)
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$0,$L38
-	li	$4,1			# 0x1
+	beq	$4,$0,$L1
+	li	$5,1			# 0x1
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,2			# 0x2
+	beq	$4,$5,$L23
+	li	$5,2			# 0x2
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,3			# 0x3
+	beq	$4,$5,$L23
+	li	$5,3			# 0x3
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L45
-	li	$4,4			# 0x4
+	beq	$4,$5,$L29
+	li	$5,4			# 0x4
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L46
-	li	$4,5			# 0x5
+	beq	$4,$5,$L30
+	li	$5,5			# 0x5
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L47
-	li	$4,6			# 0x6
+	beq	$4,$5,$L31
+	li	$5,6			# 0x6
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,7			# 0x7
+	beq	$4,$5,$L27
+	li	$5,7			# 0x7
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,8			# 0x8
+	beq	$4,$5,$L27
+	li	$5,8			# 0x8
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,9			# 0x9
+	beq	$4,$5,$L27
+	li	$5,9			# 0x9
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	addiu	$4,$5,-10
+	beq	$4,$5,$L27
+	addiu	$5,$4,-10
 	.set	macro
 	.set	reorder
 
-	sltu	$4,$4,2
+	sltu	$5,$5,2
 	.set	noreorder
 	.set	nomacro
-	bne	$4,$0,$L48
-	li	$4,12			# 0xc
+	bne	$5,$0,$L32
+	li	$5,12			# 0xc
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L49
-	li	$4,13			# 0xd
+	beq	$4,$5,$L33
+	li	$5,13			# 0xd
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L50
-	li	$4,14			# 0xe
+	beq	$4,$5,$L34
+	li	$5,14			# 0xe
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,15			# 0xf
+	beq	$4,$5,$L27
+	li	$5,15			# 0xf
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
+	.set	noreorder
+	.set	nomacro
+	bne	$4,$5,$L1
 	lw	$4,24($fp)
+	.set	macro
+	.set	reorder
+
 	andi	$4,$4,0x2
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$0,$L31
-	li	$4,1			# 0x1
+	beq	$4,$0,$L16
+	lw	$4,52($fp)
 	.set	macro
 	.set	reorder
 
-	lw	$5,52($fp)
+	li	$5,1			# 0x1
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L51
-	li	$4,2			# 0x2
+	beq	$4,$5,$L35
+	li	$5,2			# 0x2
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L52
-	li	$4,4			# 0x4
+	beq	$4,$5,$L36
+	li	$5,4			# 0x4
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
-	lw	$4,44($fp)
-	lw	$2,0($4)
-$L38:
+	bne	$4,$5,$L1
+	lw	$2,44($fp)
+	lw	$2,0($2)
+$L1:
 	move	$sp,$fp
-$L53:
-	lw	$31,100($sp)
+	lw	$31,100($fp)
 	lw	$fp,96($sp)
 	.set	noreorder
 	.set	nomacro
@@ -182,7 +189,7 @@ $L53:
 	.set	macro
 	.set	reorder
 
-$L39:
+$L23:
 	move	$sp,$fp
 	lb	$2,32($fp)
 	lw	$31,100($sp)
@@ -194,99 +201,89 @@ $L39:
 	.set	macro
 	.set	reorder
 
-$L46:
-	lh	$2,32($fp)
+$L29:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L43:
-	lw	$2,32($fp)
+$L27:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L45:
-	lbu	$2,32($fp)
+$L30:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lh	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L47:
-	lhu	$2,32($fp)
+$L31:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L49:
-	lwc1	$f0,32($fp)
+$L32:
+	lw	$2,32($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$3,36($fp)
 	.set	macro
 	.set	reorder
 
-$L48:
-	lw	$2,32($fp)
-	lw	$3,36($fp)
+$L33:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lwc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L50:
-	lwc1	$f0,32($fp)
-	lwc1	$f1,36($fp)
+$L34:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	ldc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L31:
-	lw	$2,44($fp)
+$L16:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,44($fp)
 	.set	macro
 	.set	reorder
 
-$L51:
-	lw	$4,44($fp)
-	lbu	$2,0($4)
+$L35:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,0($2)
 	.set	macro
 	.set	reorder
 
-$L52:
-	lw	$4,44($fp)
-	lhu	$2,0($4)
+$L36:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,0($2)
 	.set	macro
 	.set	reorder
 
 	.end	vacall_receiver
-	.ident	"GCC: (GNU) 4.0.2"
+	.size	vacall_receiver, .-vacall_receiver
+	.ident	"GCC: (Debian 7.2.0-11) 7.2.0"
--- a/vacall/vacall-mipsel-macro.S
+++ b/vacall/vacall-mipsel-macro.S
@@ -1,8 +1,13 @@
 #include "asm-mips.h"
 	.file	1 "vacall-mips.c"
+	.nan	legacy
+	.module	fp=xx
+	.module	nooddspreg
 	.text
 	.align	2
 	.globl	vacall_receiver
+	.set	nomips16
+	.set	nomicromips
 	.ent	vacall_receiver
 	DECLARE_FUNCTION(vacall_receiver)
 vacall_receiver:
@@ -16,162 +21,164 @@ vacall_receiver:
 	sw	$fp,96($sp)
 	move	$fp,$sp
 	sw	$31,100($sp)
-	.cprestore	16
-	sw	$4,104($fp)
-	la	$8,vacall_function
-	addiu	$4,$fp,120
-	sw	$4,56($fp)
-	lw	$25,0($8)
-	addiu	$4,$fp,104
 	sw	$5,108($fp)
-	sw	$4,40($fp)
+	addiu	$5,$fp,104
+	sw	$4,104($fp)
+	addiu	$4,$fp,24
+	sw	$5,40($fp)
+	addiu	$5,$fp,120
+	sdc1	$f12,80($fp)
+	sw	$5,56($fp)
+	la	$5,vacall_function
+	sdc1	$f14,88($fp)
+	.cprestore	16
 	sw	$6,112($fp)
 	sw	$7,116($fp)
-	swc1	$f12,80($fp)
-	swc1	$f13,84($fp)
-	swc1	$f14,88($fp)
-	swc1	$f15,92($fp)
-	swc1	$f12,68($fp)
-	swc1	$f14,72($fp)
 	sw	$0,24($fp)
 	sw	$0,44($fp)
 	sw	$0,48($fp)
 	sw	$0,60($fp)
 	sw	$0,64($fp)
-	addiu	$4,$fp,24
+	lw	$25,0($5)
+	swc1	$f12,68($fp)
+	swc1	$f14,72($fp)
 	jal	$25
-	lw	$5,48($fp)
+	lw	$4,48($fp)
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$0,$L38
-	li	$4,1			
+	beq	$4,$0,$L1
+	li	$5,1			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,2			
+	beq	$4,$5,$L23
+	li	$5,2			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L39
-	li	$4,3			
+	beq	$4,$5,$L23
+	li	$5,3			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L45
-	li	$4,4			
+	beq	$4,$5,$L29
+	li	$5,4			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L46
-	li	$4,5			
+	beq	$4,$5,$L30
+	li	$5,5			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L47
-	li	$4,6			
+	beq	$4,$5,$L31
+	li	$5,6			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,7			
+	beq	$4,$5,$L27
+	li	$5,7			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,8			
+	beq	$4,$5,$L27
+	li	$5,8			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,9			
+	beq	$4,$5,$L27
+	li	$5,9			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	addiu	$4,$5,-10
+	beq	$4,$5,$L27
+	addiu	$5,$4,-10
 	.set	macro
 	.set	reorder
 
-	sltu	$4,$4,2
+	sltu	$5,$5,2
 	.set	noreorder
 	.set	nomacro
-	bne	$4,$0,$L48
-	li	$4,12			
+	bne	$5,$0,$L32
+	li	$5,12			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L49
-	li	$4,13			
+	beq	$4,$5,$L33
+	li	$5,13			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L50
-	li	$4,14			
+	beq	$4,$5,$L34
+	li	$5,14			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L43
-	li	$4,15			
+	beq	$4,$5,$L27
+	li	$5,15			
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
+	.set	noreorder
+	.set	nomacro
+	bne	$4,$5,$L1
 	lw	$4,24($fp)
+	.set	macro
+	.set	reorder
+
 	andi	$4,$4,0x2
 	.set	noreorder
 	.set	nomacro
-	beq	$4,$0,$L31
-	li	$4,1			
+	beq	$4,$0,$L16
+	lw	$4,52($fp)
 	.set	macro
 	.set	reorder
 
-	lw	$5,52($fp)
+	li	$5,1			
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L51
-	li	$4,2			
+	beq	$4,$5,$L35
+	li	$5,2			
 	.set	macro
 	.set	reorder
 
 	.set	noreorder
 	.set	nomacro
-	beq	$5,$4,$L52
-	li	$4,4			
+	beq	$4,$5,$L36
+	li	$5,4			
 	.set	macro
 	.set	reorder
 
-	bne	$5,$4,$L38
-	lw	$4,44($fp)
-	lw	$2,0($4)
-$L38:
+	bne	$4,$5,$L1
+	lw	$2,44($fp)
+	lw	$2,0($2)
+$L1:
 	move	$sp,$fp
-$L53:
-	lw	$31,100($sp)
+	lw	$31,100($fp)
 	lw	$fp,96($sp)
 	.set	noreorder
 	.set	nomacro
@@ -180,7 +187,7 @@ $L53:
 	.set	macro
 	.set	reorder
 
-$L39:
+$L23:
 	move	$sp,$fp
 	lb	$2,32($fp)
 	lw	$31,100($sp)
@@ -192,98 +199,88 @@ $L39:
 	.set	macro
 	.set	reorder
 
-$L46:
-	lh	$2,32($fp)
+$L29:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L43:
-	lw	$2,32($fp)
+$L27:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L45:
-	lbu	$2,32($fp)
+$L30:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lh	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L47:
-	lhu	$2,32($fp)
+$L31:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,32($fp)
 	.set	macro
 	.set	reorder
 
-$L49:
-	lwc1	$f0,32($fp)
+$L32:
+	lw	$2,32($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$3,36($fp)
 	.set	macro
 	.set	reorder
 
-$L48:
-	lw	$2,32($fp)
-	lw	$3,36($fp)
+$L33:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lwc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L50:
-	lwc1	$f0,32($fp)
-	lwc1	$f1,36($fp)
+$L34:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	ldc1	$f0,32($fp)
 	.set	macro
 	.set	reorder
 
-$L31:
-	lw	$2,44($fp)
+$L16:
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lw	$2,44($fp)
 	.set	macro
 	.set	reorder
 
-$L51:
-	lw	$4,44($fp)
-	lbu	$2,0($4)
+$L35:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lbu	$2,0($2)
 	.set	macro
 	.set	reorder
 
-$L52:
-	lw	$4,44($fp)
-	lhu	$2,0($4)
+$L36:
+	lw	$2,44($fp)
 	.set	noreorder
 	.set	nomacro
-	b	$L53
-	move	$sp,$fp
+	b	$L1
+	lhu	$2,0($2)
 	.set	macro
 	.set	reorder
 
 	.end	vacall_receiver
+	.size	vacall_receiver, .-vacall_receiver
