Change _IO_stderr_/_IO_stdin_/_IO_stdout to compat symbols [BZ #31766]
[glibc.git] / sysdeps / unix / sysv / linux / s390 / s390-32 / sysdep.S
blobd77c5bfb9c075587c956a9630e55cb7d8dd993cb
1 /* Copyright (C) 2000-2024 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    <https://www.gnu.org/licenses/>.  */
18 #include <sysdep.h>
19 #include <tls.h>
21 /* The following code is only used in the shared library when we
22    compile the reentrant version.  Otherwise each system call defines
23    each own version.  */
25 /* The syscall stubs jump here when they detect an error.  */
27 #undef CALL_MCOUNT
28 #define CALL_MCOUNT
30         .text
31 ENTRY(__syscall_error)
32 #ifndef PIC
33 # if IS_IN (libc)
34 #  define SYSCALL_ERROR_ERRNO __libc_errno
35 # else
36 #  define SYSCALL_ERROR_ERRNO errno
37 # endif
38         basr    %r1,0
39 0:      l       %r1,1f-0b(%r1)
40         ear     %r3,%a0
41         lcr     %r2,%r2
42         st      %r2,0(%r1,%r3)
43         lhi     %r2,-1
44         br      %r14
45 1:      .long   SYSCALL_ERROR_ERRNO@ntpoff
46 #else
47 # if RTLD_PRIVATE_ERRNO
48         basr    %r1,0
49 0:      al      %r1,1f-0b(%r1)
50         lcr     %r2,%r2
51         st      %r2,0(%r1)
52         lhi     %r2,-1
53         br      %r14
54 1:      .long   rtld_errno - 0b
55 # else
56 #  if IS_IN (libc)
57 #   define SYSCALL_ERROR_ERRNO __libc_errno
58 #  else
59 #   define SYSCALL_ERROR_ERRNO errno
60 #  endif
61         basr    %r1,0
62 0:      al      %r1,1f-0b(%r1)
63         ear     %r3,%a0
64         l       %r1,SYSCALL_ERROR_ERRNO@gotntpoff(%r1)
65         lcr     %r2,%r2
66         st      %r2,0(%r1,%r3)
67         lhi     %r2,-1
68         br      %r14
69 1:      .long   _GLOBAL_OFFSET_TABLE_-0b
70 # endif
71 #endif
73 END (__syscall_error)