sigsetjmp asm for mips
authorRich Felker <dalias@aerifal.cx>
Fri, 13 Jul 2012 02:20:36 +0000 (22:20 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 13 Jul 2012 02:20:36 +0000 (22:20 -0400)
src/signal/mips/sigsetjmp.s [new file with mode: 0644]

diff --git a/src/signal/mips/sigsetjmp.s b/src/signal/mips/sigsetjmp.s
new file mode 100644 (file)
index 0000000..ae9c542
--- /dev/null
@@ -0,0 +1,27 @@
+.set noreorder
+
+.global sigsetjmp
+.type sigsetjmp,@function
+sigsetjmp:
+       lui $gp, %hi(_gp_disp)
+       addiu $gp, %lo(_gp_disp)
+       beq $5, $0, 1f
+       addu $gp, $gp, $25
+       subu $sp, $sp, 32
+       sw $4, 20($sp)
+       sw $ra, 24($sp)
+       sw $gp, 28($sp)
+       addu $6, $4, 124
+       li $5, 0
+       li $4, 1
+       sw $4, -4($6)
+       lw $25, %call16(sigprocmask)($gp)
+       jalr $25
+       nop
+       lw $gp, 28($sp)
+       lw $ra, 24($sp)
+       lw $4, 20($sp)
+       addu $sp, $sp, 32
+1:     lw $25, %call16(setjmp)($gp)
+       jr $25
+       nop