Update copyright notices with scripts/update-copyrights
[glibc.git] / sysdeps / unix / sysv / linux / s390 / s390-32 / __makecontext_ret.S
blob83cf0d8ffa7ca1c463ea5bad2adc9430d6e97be8
1 /* Copyright (C) 2012-2014 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
4    The GNU C Library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public
6    License as published by the Free Software Foundation; either
7    version 2.1 of the License, or (at your option) any later version.
9    The GNU C Library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Lesser General Public License for more details.
14    You should have received a copy of the GNU Lesser General Public
15    License along with the GNU C Library; if not, see
16    <http://www.gnu.org/licenses/>.  */
18 #include <sysdep.h>
20 ENTRY(__makecontext_ret)
21         basr  %r14,%r7
22         ltr   %r8,%r8                   /* Check whether uc_link is 0.  */
23         jz    1f
24         lr    %r2,%r8
25         br    %r9
26 1:      lhi   %r2,0                     /* EXIT return value.  */
27         basr    %r13,0
29 #ifdef PIC
30         l       %r12,4f-2b(%r13)
31         la      %r12,0(%r12,%r13)       /* GOT pointer in r12 after this.  */
32         l       %r1,3f-2b(%r13)
33         bas     %r14,0(%r1,%r12)
34         .align  4
36         .long   HIDDEN_JUMPTARGET (exit)@GOTOFF
38         .long   _GLOBAL_OFFSET_TABLE_-2b
39 #else
40         l       %r1,3f-2b(%r13)
41         basr    %r14,%r1
42         .align  4
44         .long   HIDDEN_JUMPTARGET (exit)
45 #endif
46         .align  2
47         j       .+2                     /* Trap if exit returns for some reason.  */
48 END(__makecontext_ret)