]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/unix/sh/sysdep.S
Update copyright dates with scripts/update-copyrights.
[thirdparty/glibc.git] / sysdeps / unix / sh / sysdep.S
CommitLineData
b168057a 1/* Copyright (C) 1999-2015 Free Software Foundation, Inc.
3846ef75
UD
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
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.
3846ef75
UD
8
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
41bdb6e2 12 Lesser General Public License for more details.
3846ef75 13
41bdb6e2 14 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
15 License along with the GNU C Library; if not, see
16 <http://www.gnu.org/licenses/>. */
3846ef75
UD
17
18#include <sysdep.h>
19#define _ERRNO_H
20#include <bits/errno.h>
21
22ENTRY(__syscall_error)
23#if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
24 /* We translate the system's EWOULDBLOCK error into EAGAIN.
25 The GNU C library always defines EWOULDBLOCK==EAGAIN.
26 EWOULDBLOCK_sys is the original number. */
27 mov.l .L1, r1
28 cmp/eq r1, r0
29 bf skip
30 nop
31 mov.l .L2, r0
32skip:
33#endif
34 /* Store it in errno... */
35#ifndef SHARED
36#ifndef _LIBC_REENTRANT
37 mov.l .L3, r1
38 mov.l r0, @r1
39#else
40 mov.l .L3, r1
41 sts.l pr, @-r15
db0a00d3
UD
42 cfi_adjust_cfa_offset (4)
43 cfi_rel_offset (pr, 0)
65a4de4e 44 mov.l r0, @-r15
db0a00d3 45 cfi_adjust_cfa_offset (4)
65a4de4e
CLT
46 jsr @r1
47 nop
3846ef75 48 mov.l @r15+, r1
db0a00d3 49 cfi_adjust_cfa_offset (-4)
3846ef75 50 lds.l @r15+, pr
db0a00d3 51 cfi_adjust_cfa_offset (-4)
65a4de4e 52 cfi_restore (pr)
3846ef75
UD
53 mov.l r1, @r0
54#endif
55#else
56 mov.l r12, @-r15
db0a00d3
UD
57 cfi_adjust_cfa_offset (4)
58 cfi_rel_offset (r12, 0)
3846ef75
UD
59#ifndef _LIBC_REENTRANT
60 mov r0, r2
61 mov.l 0f, r12
62 mova 0f, r0
63 add r0, r12
64 mov.l .L3, r0
65 mov.l @(r0,r12), r1
66 mov.l r2, @r1
67#else
68 mov.l r0, @-r15
db0a00d3 69 cfi_adjust_cfa_offset (4)
3846ef75 70 sts.l pr, @-r15
db0a00d3
UD
71 cfi_adjust_cfa_offset (4)
72 cfi_rel_offset (pr, 0)
3846ef75
UD
73 mov.l 0f, r12
74 mova 0f, r0
75 add r0, r12
76 mov.l .L3, r1
77 mova .L3, r0
78 add r0, r1
79 jsr @r1
80 nop
81 lds.l @r15+, pr
65a4de4e
CLT
82 cfi_adjust_cfa_offset (-4)
83 cfi_restore (pr)
3846ef75 84 mov.l @r15+, r1
65a4de4e 85 cfi_adjust_cfa_offset (-4)
3846ef75
UD
86 mov.l r1, @r0
87#endif
88 mov.l @r15+, r12
65a4de4e
CLT
89 cfi_adjust_cfa_offset (-4)
90 cfi_restore (r12)
3846ef75
UD
91#endif
92 /* And just kick back a -1. */
93 rts
94 mov #-1, r0
95
96 .align 2
97#if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
98.L1: .long EWOULDBLOCK_sys
99.L2: .long EAGAIN
100#endif
101#ifndef SHARED
102#ifndef _LIBC_REENTRANT
103.L3: .long C_SYMBOL_NAME(errno)
104#else
105.L3: .long C_SYMBOL_NAME(__errno_location)
106#endif
107#else
1080:
109 .long _GLOBAL_OFFSET_TABLE_
110#ifndef _LIBC_REENTRANT
111.L3: .long C_SYMBOL_NAME(errno@GOT)
112#else
113.L3: .long C_SYMBOL_NAME(__errno_location@PLT)
114#endif
115#endif
116END(__syscall_error)