summaryrefslogtreecommitdiff
path: root/sysdeps/sh/sh4/setjmp.S
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2005-12-20 18:05:57 +0000
committerJakub Jelinek <jakub@redhat.com>2005-12-20 18:05:57 +0000
commit2bf037b4e8e189e910a41744d79404b94235ab8b (patch)
treeec0234c3f56396c982e3ed5a77780423502a111f /sysdeps/sh/sh4/setjmp.S
parent20a911071d1cfaf7d20d088efe9ede27c5809c09 (diff)
Updated to fedora-glibc-20051220T1751cvs/fedora-glibc-2_3_90-21
Diffstat (limited to 'sysdeps/sh/sh4/setjmp.S')
-rw-r--r--sysdeps/sh/sh4/setjmp.S18
1 files changed, 15 insertions, 3 deletions
diff --git a/sysdeps/sh/sh4/setjmp.S b/sysdeps/sh/sh4/setjmp.S
index c7b0aed0e7..b8853496f1 100644
--- a/sysdeps/sh/sh4/setjmp.S
+++ b/sysdeps/sh/sh4/setjmp.S
@@ -1,5 +1,5 @@
/* setjmp for SH4.
- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -31,7 +31,13 @@ ENTRY (__sigsetjmp)
fmov.s fr12, @-r4
sts.l fpscr, @-r4
stc.l gbr, @-r4
+#ifdef PTR_MANGLE
+ sts pr, r2
+ PTR_MANGLE (r2)
+ mov.l r2, @-r4
+#else
sts.l pr, @-r4
+#endif
mov.l r15, @-r4
mov.l r14, @-r4
mov.l r13, @-r4
@@ -41,8 +47,13 @@ ENTRY (__sigsetjmp)
mov.l r9, @-r4
mov.l r8, @-r4
+#if defined NOT_IN_libc && defined IS_IN_rtld
+ /* In ld.so we never save the signal mask. */
+ rts
+ mov #0, r0
+#else
/* Make a tail call to __sigjmp_save; it takes the same args. */
-#ifdef SHARED
+# ifdef SHARED
mov.l 1f, r1
mova 1f, r0
bra 2f
@@ -58,12 +69,13 @@ ENTRY (__sigsetjmp)
.align 2
.L1:
.long C_SYMBOL_NAME(__sigjmp_save@GOT)
-#else
+# else
mov.l .L1, r1
jmp @r1
nop
.align 2
.L1:
.long C_SYMBOL_NAME(__sigjmp_save)
+# endif
#endif
END (__sigsetjmp)