Update copyright dates with scripts/update-copyrights
[glibc.git] / sysdeps / unix / sysv / linux / nios2 / sysdep.S
blobecb6f270d40448fb3bfaceb85169d687e514c856
1 /* Static library error handling code fragment for Nios II.
2    Copyright (C) 2015-2023 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public License as
7    published by the Free Software Foundation; either version 2.1 of the
8    License, or (at your option) any later version.
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, see
17    <https://www.gnu.org/licenses/>.  */
19 #include <sysdep.h>
21 /* The following code is only used in the static library. In the shared
22    library, the error handling code is at the end of each function.  */
24 #ifndef PIC
26 /* In the static library, the syscall stubs jump here when they detect
27    an error.  */
29 # undef CALL_MCOUNT
30 # define CALL_MCOUNT /* Don't insert the profiling call, it clobbers r2.  */
32 # if IS_IN (libc)
33 #  define SYSCALL_ERROR_ERRNO __libc_errno
34 # else
35 #  define SYSCALL_ERROR_ERRNO errno
36 # endif
37         .text
38 ENTRY (__syscall_error)
39         nextpc  r3
41         movhi   r8, %hiadj(_gp_got - 1b)
42         addi    r8, r8, %lo(_gp_got - 1b)
43         add     r3, r3, r8
44         ldw     r3, %tls_ie(SYSCALL_ERROR_ERRNO)(r3)
45         add     r3, r23, r3
46         stw     r2, 0(r3)
47         movi    r2, -1
48         ret
49 END (__syscall_error)
50 #endif