Update to LGPL v2.1.
[kopensolaris-gnu/glibc.git] / sysdeps / unix / alpha / sysdep.S
1 /* Copyright (C) 1993, 1996, 1998 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3    Contributed by Brendan Kehoe (brendan@zen.org).
4
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
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
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.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, write to the Free
17    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18    02111-1307 USA.  */
19
20 #include <sysdep.h>
21 #include <features.h>
22
23         .section .bss
24         .globl errno
25         .align 2
26 errno:  .space 4
27 #ifdef __ELF__
28         .type errno, @object
29         .size errno, 4
30 #endif
31         .globl __errno
32 __errno = errno
33         .globl _errno
34 _errno = errno
35
36         .text
37         .align 2
38
39 #ifdef  _LIBC_REENTRANT
40
41         .globl __syscall_error
42         .ent __syscall_error
43 __syscall_error:
44         ldgp    gp, 0(pv)
45         lda     sp, -16(sp)
46         .frame  sp, 16, ra, 0
47         stq     ra, 0(sp)
48         stq     v0, 8(sp)
49         .mask   0x4000001, -16
50         .prologue 1
51
52         /* Find our per-thread errno address  */
53         jsr     ra, __errno_location
54
55         /* Store the error value.  */
56         ldq     t0, 8(sp)
57         stl     t0, 0(v0)
58
59         /* And kick back a -1.  */
60         ldi     v0, -1
61
62         ldq     ra, 0(sp)
63         lda     sp, 16(sp)
64         ret
65         .end __syscall_error
66 #else
67
68 ENTRY(__syscall_error)
69         ldgp    gp, 0(t12)
70         .prologue 1
71
72         stl     v0, errno
73         lda     v0, -1
74         ret
75         END(__syscall_error)
76
77 #endif /* _LIBC_REENTRANT */