]>
Commit | Line | Data |
---|---|---|
688903eb | 1 | /* Copyright (C) 1992-2018 Free Software Foundation, Inc. |
36e28152 UD |
2 | This file is part of the GNU C Library. |
3 | Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995. | |
6932e444 | 4 | |
36e28152 | 5 | The GNU C Library is free software; you can redistribute it and/or |
3214b89b AJ |
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. | |
6932e444 | 9 | |
36e28152 UD |
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 | |
3214b89b | 13 | Lesser General Public License for more details. |
6932e444 | 14 | |
3214b89b | 15 | You should have received a copy of the GNU Lesser General Public |
ab84e3ff PE |
16 | License along with the GNU C Library. If not, see |
17 | <http://www.gnu.org/licenses/>. */ | |
6932e444 | 18 | |
543d2ed9 RM |
19 | #ifndef _LINUX_ALPHA_SYSDEP_H |
20 | #define _LINUX_ALPHA_SYSDEP_H 1 | |
21 | ||
e0ebc3b2 | 22 | #ifdef __ASSEMBLER__ |
6932e444 RM |
23 | #include <asm/pal.h> |
24 | #include <alpha/regdef.h> | |
6932e444 RM |
25 | #endif |
26 | ||
27 | /* There is some commonality. */ | |
fb1cf108 | 28 | #include <sysdeps/unix/sysv/linux/sysdep.h> |
6932e444 RM |
29 | #include <sysdeps/unix/alpha/sysdep.h> |
30 | ||
ceb34e81 JJ |
31 | #include <tls.h> |
32 | ||
6932e444 RM |
33 | /* For Linux we can use the system call table in the header file |
34 | /usr/include/asm/unistd.h | |
35 | of the kernel. But these symbols do not follow the SYS_* syntax | |
36 | so we have to redefine the `SYS_ify' macro here. */ | |
37 | #undef SYS_ify | |
4ca39b2a | 38 | #define SYS_ify(syscall_name) __NR_##syscall_name |
6932e444 | 39 | |
3dbefc47 RM |
40 | /* Define some aliases to make automatic syscall generation work |
41 | properly. The SYS_* variants are for the benefit of the files in | |
42 | sysdeps/unix. */ | |
6932e444 | 43 | #define __NR_getpid __NR_getxpid |
6932e444 | 44 | #define __NR_getuid __NR_getxuid |
6932e444 | 45 | #define __NR_getgid __NR_getxgid |
3dbefc47 RM |
46 | #define SYS_getpid __NR_getxpid |
47 | #define SYS_getuid __NR_getxuid | |
48 | #define SYS_getgid __NR_getxgid | |
6932e444 RM |
49 | |
50 | /* | |
51 | * Some syscalls no Linux program should know about: | |
52 | */ | |
53 | #define __NR_osf_sigprocmask 48 | |
54 | #define __NR_osf_shmat 209 | |
55 | #define __NR_osf_getsysinfo 256 | |
56 | #define __NR_osf_setsysinfo 257 | |
26ecf6a8 | 57 | |
a382880a RH |
58 | /* Help old kernel headers where particular syscalls are not available. */ |
59 | #ifndef __NR_semtimedop | |
60 | # define __NR_semtimedop 423 | |
61 | #endif | |
62 | ||
240d7112 UD |
63 | /* This is a kludge to make syscalls.list find these under the names |
64 | pread and pwrite, since some kernel headers define those names | |
65 | and some define the *64 names for the same system calls. */ | |
66 | #if !defined __NR_pread && defined __NR_pread64 | |
67 | # define __NR_pread __NR_pread64 | |
68 | #endif | |
69 | #if !defined __NR_pwrite && defined __NR_pwrite64 | |
70 | # define __NR_pwrite __NR_pwrite64 | |
71 | #endif | |
72 | ||
09c76a74 AZ |
73 | #define SINGLE_THREAD_BY_GLOBAL 1 |
74 | ||
26ecf6a8 UD |
75 | /* |
76 | * In order to get the hidden arguments for rt_sigaction set up | |
ebcd2cd1 RH |
77 | * properly, we need to call the assembly version. This shouldn't |
78 | * happen except for inside sigaction.c, where we handle this | |
79 | * specially. Catch other uses and error. | |
26ecf6a8 UD |
80 | */ |
81 | ||
82 | #undef INLINE_SYSCALL | |
ebcd2cd1 RH |
83 | #define INLINE_SYSCALL(name, nr, args...) \ |
84 | ({ \ | |
85 | extern char ChEcK[__NR_##name == __NR_rt_sigaction ? -1 : 1] \ | |
86 | __attribute__((unused)); \ | |
87 | INLINE_SYSCALL1(name, nr, args); \ | |
88 | }) | |
54df0cf5 | 89 | |
411c121b UD |
90 | #undef INTERNAL_SYSCALL |
91 | #define INTERNAL_SYSCALL(name, err_out, nr, args...) \ | |
92 | ({ \ | |
3de1f4af RM |
93 | extern char ChEcK[__NR_##name == __NR_rt_sigaction ? -1 : 1] \ |
94 | __attribute__((unused)); \ | |
411c121b | 95 | INTERNAL_SYSCALL1(name, err_out, nr, args); \ |
54df0cf5 RM |
96 | }) |
97 | ||
543d2ed9 | 98 | #endif /* _LINUX_ALPHA_SYSDEP_H */ |