]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/s390/s390-64/setjmp.S
Update copyright notices with scripts/update-copyrights.
[thirdparty/glibc.git] / sysdeps / s390 / s390-64 / setjmp.S
CommitLineData
492e01c8 1/* setjmp for 64 bit S/390, ELF version.
568035b7 2 Copyright (C) 2001-2013 Free Software Foundation, Inc.
847b055c 3 Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
ffeac417 4 This file is part of the GNU C Library.
847b055c
AJ
5
6 The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
847b055c
AJ
10
11 The GNU C Library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2 14 Lesser General Public License for more details.
847b055c 15
41bdb6e2 16 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
17 License along with the GNU C Library; if not, see
18 <http://www.gnu.org/licenses/>. */
847b055c 19
ffeac417 20#include <sysdep.h>
492e01c8
AJ
21#define _ASM
22#define _SETJMP_H
ffeac417
UD
23#include <bits/setjmp.h>
24
492e01c8
AJ
25 /* We include the BSD entry points here as well but we make
26 them weak. */
27ENTRY (setjmp)
28 .weak C_SYMBOL_NAME (setjmp)
29 lghi %r3,1 /* Second argument of one. */
30 j .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp. */
31END (setjmp)
32
33 /* Binary compatibility entry point. */
34ENTRY(_setjmp)
35 .weak C_SYMBOL_NAME (_setjmp)
36 slgr %r3,%r3 /* Second argument of zero. */
37 j .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp. */
38END (setjmp)
39libc_hidden_def (_setjmp)
40
41ENTRY(__setjmp)
42 slgr %r3,%r3 /* Second argument of zero. */
43 j .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp. */
44END (setjmp)
ffeac417
UD
45
46ENTRY(__sigsetjmp)
492e01c8 47.Linternal_sigsetjmp:
00c2b3b9
UD
48#ifdef PTR_MANGLE
49 stmg %r6,%r13,0(%r2) /* Store registers in jmp_buf. */
50 lgr %r4,%r14
305bb37e
UD
51 lgr %r5,%r15
52 PTR_MANGLE (%r4, %r1)
53 PTR_MANGLE2 (%r5, %r1)
54 stmg %r4,%r5,64(%r2)
00c2b3b9 55#else
ffeac417 56 stmg %r6,%r15,0(%r2) /* Store registers in jmp_buf. */
00c2b3b9 57#endif
ffeac417
UD
58 std %f1,80(%r2)
59 std %f3,88(%r2)
60 std %f5,96(%r2)
61 std %f7,104(%r2)
00c2b3b9
UD
62#if defined NOT_IN_libc && defined IS_IN_rtld
63 /* In ld.so we never save the signal mask. */
64 lghi %r2,0
65 br %r14
66#elif defined PIC
492e01c8 67 jg __sigjmp_save@PLT /* Branch to PLT of __sigsetjmp. */
ffeac417 68#else
492e01c8 69 jg __sigjmp_save
847b055c 70#endif
ffeac417 71END (__sigsetjmp)