diff options
Diffstat (limited to 'sysdeps/sparc/setjmp.S')
-rw-r--r-- | sysdeps/sparc/setjmp.S | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sysdeps/sparc/setjmp.S b/sysdeps/sparc/setjmp.S index d9599079c2..f07a348fe3 100644 --- a/sysdeps/sparc/setjmp.S +++ b/sysdeps/sparc/setjmp.S @@ -26,16 +26,19 @@ ENTRY (__sigsetjmp) return PC. Save the signal mask if requested with a tail-call for simplicity; it always returns zero. */ #ifdef PIC + mov %o7,%g1 2: - jmpl 1f,%g2 + call 1f nop 1: sethi %hi(_GLOBAL_OFFSET_TABLE_-(2b-.)),%l7 - sethi %hi(C_SYMBOL_NAME (__sigjmp_save)), %g3 - st %sp, [%o0 + (JB_SP * 4)] or %l7,%lo(_GLOBAL_OFFSET_TABLE_-(2b-.)),%l7 + add %l7,%o7,%l7 + sethi %hi(C_SYMBOL_NAME (__sigjmp_save)), %g3 or %g3,%lo(C_SYMBOL_NAME (__sigjmp_save)), %g3 + st %sp, [%o0 + (JB_SP * 4)] st %fp, [%o0 + (JB_FP * 4)] + mov %g1,%o7 ld [%l7+%g3],%g1 jmp %g1 st %o7, [%o0+(JB_PC*4)] |