2002-10-07 Roland McGrath <roland@redhat.com>
[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         .text
24         .align 2
25
26 #ifdef  _LIBC_REENTRANT
27
28         .globl __syscall_error
29         .ent __syscall_error
30 __syscall_error:
31         ldgp    gp, 0(pv)
32         lda     sp, -16(sp)
33         .frame  sp, 16, ra, 0
34         stq     ra, 0(sp)
35         stq     v0, 8(sp)
36         .mask   0x4000001, -16
37         .prologue 1
38
39         /* Find our per-thread errno address  */
40         jsr     ra, __errno_location
41
42         /* Store the error value.  */
43         ldq     t0, 8(sp)
44         stl     t0, 0(v0)
45
46         /* And kick back a -1.  */
47         ldi     v0, -1
48
49         ldq     ra, 0(sp)
50         lda     sp, 16(sp)
51         ret
52         .end __syscall_error
53 #else
54
55 ENTRY(__syscall_error)
56         ldgp    gp, 0(t12)
57         .prologue 1
58
59         stl     v0, errno
60         lda     v0, -1
61         ret
62         END(__syscall_error)
63
64 #endif /* _LIBC_REENTRANT */