|
@@ -16,11 +16,7 @@
|
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
|
02111-1307 USA. */
|
|
02111-1307 USA. */
|
|
|
|
|
|
-#include <features.h>
|
|
+#include <jmpbuf-offsets.h>
|
|
-#define _ASM
|
|
|
|
-#define _SETJMP_H
|
|
|
|
-#define __ASSEMBLY__
|
|
|
|
-#include <bits/setjmp.h>
|
|
|
|
|
|
|
|
#define a0 $16
|
|
#define a0 $16
|
|
|
|
|
|
@@ -30,10 +26,16 @@ __sigsetjmp:
|
|
ldgp $29, 0($27)
|
|
ldgp $29, 0($27)
|
|
|
|
|
|
$sigsetjmp_local:
|
|
$sigsetjmp_local:
|
|
- subq $30, 16, $30
|
|
+#ifndef __PIC__
|
|
- .frame $26, 16, $26, 0
|
|
+# define FRAME 16
|
|
- stq $26, 0($30)
|
|
+ subq $30, FRAME, $30
|
|
- .mask 0x04000000, -16
|
|
+ .frame $30, FRAME, $26, 0
|
|
|
|
+ stq $26, 0($30)
|
|
|
|
+ .mask 0x04000000, -FRAME
|
|
|
|
+#else
|
|
|
|
+# define FRAME 0
|
|
|
|
+ .frame $30, FRAME, $26, 0
|
|
|
|
+#endif
|
|
.prologue 1
|
|
.prologue 1
|
|
|
|
|
|
stq $9, JB_S0*8(a0)
|
|
stq $9, JB_S0*8(a0)
|
|
@@ -43,9 +45,9 @@ $sigsetjmp_local:
|
|
stq $13, JB_S4*8(a0)
|
|
stq $13, JB_S4*8(a0)
|
|
stq $14, JB_S5*8(a0)
|
|
stq $14, JB_S5*8(a0)
|
|
stq $26, JB_PC*8(a0)
|
|
stq $26, JB_PC*8(a0)
|
|
- addq $30, 16, $1
|
|
+ addq $30, FRAME, $1
|
|
- stq $15, JB_FP*8(a0)
|
|
|
|
stq $1, JB_SP*8(a0)
|
|
stq $1, JB_SP*8(a0)
|
|
|
|
+ stq $15, JB_FP*8(a0)
|
|
stt $f2, JB_F2*8(a0)
|
|
stt $f2, JB_F2*8(a0)
|
|
stt $f3, JB_F3*8(a0)
|
|
stt $f3, JB_F3*8(a0)
|
|
stt $f4, JB_F4*8(a0)
|
|
stt $f4, JB_F4*8(a0)
|
|
@@ -55,12 +57,16 @@ $sigsetjmp_local:
|
|
stt $f8, JB_F8*8(a0)
|
|
stt $f8, JB_F8*8(a0)
|
|
stt $f9, JB_F9*8(a0)
|
|
stt $f9, JB_F9*8(a0)
|
|
|
|
|
|
|
|
+#ifndef __PIC__
|
|
/* Call to C to (potentially) save our signal mask. */
|
|
/* Call to C to (potentially) save our signal mask. */
|
|
jsr $26, __sigjmp_save
|
|
jsr $26, __sigjmp_save
|
|
-
|
|
|
|
ldq $26, 0($30)
|
|
ldq $26, 0($30)
|
|
addq $30, 16, $30
|
|
addq $30, 16, $30
|
|
ret
|
|
ret
|
|
|
|
+#else
|
|
|
|
+ /* Tailcall to save the signal mask. */
|
|
|
|
+ br $31, __sigjmp_save !samegp
|
|
|
|
+#endif
|
|
|
|
|
|
.end __sigsetjmp
|
|
.end __sigsetjmp
|
|
|
|
|
|
@@ -71,7 +77,6 @@ $sigsetjmp_local:
|
|
.align 3;
|
|
.align 3;
|
|
.ent _setjmp , 0;
|
|
.ent _setjmp , 0;
|
|
_setjmp:
|
|
_setjmp:
|
|
- .frame $30 , 0, $26
|
|
|
|
ldgp $29, 0($27)
|
|
ldgp $29, 0($27)
|
|
mov 0, $17
|
|
mov 0, $17
|
|
br $sigsetjmp_local
|
|
br $sigsetjmp_local
|
|
@@ -81,11 +86,7 @@ _setjmp:
|
|
.align 3;
|
|
.align 3;
|
|
.ent setjmp , 0;
|
|
.ent setjmp , 0;
|
|
setjmp:
|
|
setjmp:
|
|
- .frame $30 , 0, $26
|
|
|
|
ldgp $29, 0($27)
|
|
ldgp $29, 0($27)
|
|
mov 1, $17
|
|
mov 1, $17
|
|
br $sigsetjmp_local
|
|
br $sigsetjmp_local
|
|
.end setjmp
|
|
.end setjmp
|
|
-
|
|
|
|
-.weak _setjmp
|
|
|
|
-.weak setjmp
|
|
|