about summary refs log tree commit diff
path: root/sysdeps/s390/s390-64/setjmp.S
diff options
context:
space:
mode:
authorAndreas Jaeger <aj@suse.de>2012-03-23 17:37:32 +0100
committerAndreas Jaeger <jaegerandi@gmail.com>2012-03-28 09:31:29 +0200
commit492e01c879b139f2a19c76e1abc171eda5ae5c66 (patch)
tree30e9651e1b876ac02cc46162b9ce0ac1a545ba00 /sysdeps/s390/s390-64/setjmp.S
parentbbaf00a652cad1057d5a96b79172b02d942c6961 (diff)
downloadglibc-492e01c879b139f2a19c76e1abc171eda5ae5c66.tar.gz
glibc-492e01c879b139f2a19c76e1abc171eda5ae5c66.tar.xz
glibc-492e01c879b139f2a19c76e1abc171eda5ae5c66.zip
Move sysdeps/s390/s390-64/elf files
	* sysdeps/s390/s390-64/elf/bsd-_setjmp.S: Moved to ...
	* sysdeps/s390/s390-64/bsd-_setjmp.S: ... here.
	* sysdeps/s390/s390-64/elf/bsd-setjmp.S: Moved to ...
	* sysdeps/s390/s390-64/bsd-setjmp.S: ... here.
	* sysdeps/s390/s390-64/elf/setjmp.S: Moved to ...
	* sysdeps/s390/s390-64/setjmp.S: ... here.
	* sysdeps/s390/s390-64/elf/configure.in: Moved to ...
	* sysdeps/s390/s390-64/configure.in: ... here
	* sysdeps/s390/s390-64/elf/configure: Delete file.
	* sysdeps/s390/s390-64/elf/start.S: Moved to ...
	* sysdeps/s390/s390-64/start.S: ... here.
	* sysdeps/s390/s390-64/elf/configure: Delete.
Diffstat (limited to 'sysdeps/s390/s390-64/setjmp.S')
-rw-r--r--sysdeps/s390/s390-64/setjmp.S36
1 files changed, 27 insertions, 9 deletions
diff --git a/sysdeps/s390/s390-64/setjmp.S b/sysdeps/s390/s390-64/setjmp.S
index 0c5f1fbf3f..cbf68bce53 100644
--- a/sysdeps/s390/s390-64/setjmp.S
+++ b/sysdeps/s390/s390-64/setjmp.S
@@ -1,4 +1,5 @@
-/* Copyright (C) 2001, 2005 Free Software Foundation, Inc.
+/* setjmp for 64 bit S/390, ELF version.
+   Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
    This file is part of the GNU C Library.
 
@@ -16,17 +17,34 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifndef _ASM
-#define _ASM
-#endif
-
 #include <sysdep.h>
+#define _ASM
+#define _SETJMP_H
 #include <bits/setjmp.h>
 
-/* Save the current program position in ENV and return 0.  */
-/* R2 = pointer to jmp_buf, R3 = savemask.  */
+	/* We include the BSD entry points here as well but we make
+	   them weak.  */
+ENTRY (setjmp)
+	.weak C_SYMBOL_NAME (setjmp)
+        lghi   %r3,1                /* Second argument of one.  */
+        j      .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp.  */
+END (setjmp)
+
+	/* Binary compatibility entry point.  */
+ENTRY(_setjmp)
+        .weak  C_SYMBOL_NAME (_setjmp)
+        slgr   %r3,%r3              /* Second argument of zero.  */
+        j      .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp.  */
+END (setjmp)
+libc_hidden_def (_setjmp)
+
+ENTRY(__setjmp)
+        slgr   %r3,%r3              /* Second argument of zero.  */
+        j      .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp.  */
+END (setjmp)
 
 ENTRY(__sigsetjmp)
+.Linternal_sigsetjmp:
 #ifdef PTR_MANGLE
 	stmg   %r6,%r13,0(%r2)      /* Store registers in jmp_buf.  */
 	lgr    %r4,%r14
@@ -46,8 +64,8 @@ ENTRY(__sigsetjmp)
 	lghi   %r2,0
 	br     %r14
 #elif defined PIC
-        jg     __sigjmp_save@PLT    /* Tail-call __sigjmp_save.  */
+        jg     __sigjmp_save@PLT    /* Branch to PLT of __sigsetjmp.  */
 #else
-        jg     __sigjmp_save        /* Tail-call __sigjmp_save.  */
+	jg     __sigjmp_save
 #endif
 END (__sigsetjmp)