Unify all the common syscall defines in syscalls-common.h and scrub all the duplicated code from relevant ports. This should also make converting existing ports to INLINE_SYSCALL() much easier as they don't have to get lost in all the unrelated noise, as well as creating new ports.
Signed-off-by: Mike Frysinger <vap...@gentoo.org> --- can people give this an eye over to make sure i didnt screw up your port ? i'm doing build tests for most arches, but a quick look over by other peeps would be good. include/sys/syscall.h | 1 + libc/sysdeps/linux/arm/bits/syscalls.h | 71 ----------- libc/sysdeps/linux/avr32/bits/syscalls.h | 89 ------------- libc/sysdeps/linux/bfin/bits/syscalls.h | 145 ---------------------- libc/sysdeps/linux/common/bits/syscalls-common.h | 81 ++++++++++++ libc/sysdeps/linux/common/bits/syscalls.h | 3 +- libc/sysdeps/linux/i386/bits/syscalls.h | 66 ---------- libc/sysdeps/linux/ia64/bits/syscalls.h | 55 -------- libc/sysdeps/linux/mips/bits/syscalls.h | 67 ---------- libc/sysdeps/linux/powerpc/bits/syscalls.h | 54 -------- libc/sysdeps/linux/sh/bits/syscalls.h | 134 -------------------- libc/sysdeps/linux/x86_64/bits/syscalls.h | 78 ------------ libc/sysdeps/linux/xtensa/bits/syscalls.h | 52 -------- 13 files changed, 84 insertions(+), 812 deletions(-) create mode 100644 libc/sysdeps/linux/common/bits/syscalls-common.h diff --git a/include/sys/syscall.h b/include/sys/syscall.h index 4c8ede8..db8364b 100644 --- a/include/sys/syscall.h +++ b/include/sys/syscall.h @@ -32,6 +32,7 @@ #include <bits/sysnum.h> #if defined _LIBC && (defined IS_IN_libc || defined NOT_IN_libc) # include <bits/syscalls.h> +# include <bits/syscalls-common.h> #endif #endif diff --git a/libc/sysdeps/linux/arm/bits/syscalls.h b/libc/sysdeps/linux/arm/bits/syscalls.h index 2d2e0f0..2ad7255 100644 --- a/libc/sysdeps/linux/arm/bits/syscalls.h +++ b/libc/sysdeps/linux/arm/bits/syscalls.h @@ -9,8 +9,6 @@ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/sysdep.h */ -#define SYS_ify(syscall_name) (__NR_##syscall_name) - #ifdef __ASSEMBLER__ /* Call a given syscall, with arguments loaded. For EABI, we must @@ -32,67 +30,6 @@ #include <errno.h> -#undef _syscall0 -#define _syscall0(type,name) \ -type name(void) \ -{ \ -return (type) (INLINE_SYSCALL(name, 0)); \ -} - -#undef _syscall1 -#define _syscall1(type,name,type1,arg1) \ -type name(type1 arg1) \ -{ \ -return (type) (INLINE_SYSCALL(name, 1, arg1)); \ -} - -#undef _syscall2 -#define _syscall2(type,name,type1,arg1,type2,arg2) \ -type name(type1 arg1,type2 arg2) \ -{ \ -return (type) (INLINE_SYSCALL(name, 2, arg1, arg2)); \ -} - -#undef _syscall3 -#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ -type name(type1 arg1,type2 arg2,type3 arg3) \ -{ \ -return (type) (INLINE_SYSCALL(name, 3, arg1, arg2, arg3)); \ -} - -#undef _syscall4 -#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ -type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ -{ \ -return (type) (INLINE_SYSCALL(name, 4, arg1, arg2, arg3, arg4)); \ -} - -#undef _syscall5 -#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ - type5,arg5) \ -type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ -{ \ -return (type) (INLINE_SYSCALL(name, 5, arg1, arg2, arg3, arg4, arg5)); \ -} - -#undef _syscall6 -#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ - type5,arg5,type6,arg6) \ -type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5, type6 arg6) \ -{ \ -return (type) (INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6)); \ -} - -#undef _syscall7 -#define _syscall7(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ - type5,arg5,type6,arg6,type7,arg7) \ -type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5, type6 arg6,type7 arg7) \ -{ \ -return (type) (INLINE_SYSCALL(name, 7, arg1, arg2, arg3, arg4, arg5, arg6, arg7)); \ -} - - -#undef INLINE_SYSCALL #define INLINE_SYSCALL(name, nr, args...) \ ({ unsigned int _inline_sys_result = INTERNAL_SYSCALL (name, , nr, args); \ if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_inline_sys_result, ), 0)) \ @@ -102,10 +39,6 @@ return (type) (INLINE_SYSCALL(name, 7, arg1, arg2, arg3, arg4, arg5, arg6, arg7) } \ (int) _inline_sys_result; }) -#undef INTERNAL_SYSCALL_DECL -#define INTERNAL_SYSCALL_DECL(err) do { } while (0) - -#undef INTERNAL_SYSCALL #if !defined(__thumb__) #if defined(__ARM_EABI__) #define INTERNAL_SYSCALL(name, err, nr, args...) \ @@ -160,13 +93,9 @@ return (type) (INLINE_SYSCALL(name, 7, arg1, arg2, arg3, arg4, arg5, arg6, arg7) (int) __sys_result; }) #endif /*!defined(__thumb__)*/ -#undef INTERNAL_SYSCALL_ERROR_P #define INTERNAL_SYSCALL_ERROR_P(val, err) \ ((unsigned int) (val) >= 0xfffff001u) -#undef INTERNAL_SYSCALL_ERRNO -#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) - #define LOAD_ARGS_0() #define ASM_ARGS_0 #define LOAD_ARGS_1(a1) \ diff --git a/libc/sysdeps/linux/avr32/bits/syscalls.h b/libc/sysdeps/linux/avr32/bits/syscalls.h index ff5d1a7..e473b10 100644 --- a/libc/sysdeps/linux/avr32/bits/syscalls.h +++ b/libc/sysdeps/linux/avr32/bits/syscalls.h @@ -4,95 +4,10 @@ # error "Never use <bits/syscalls.h> directly; include <sys/syscall.h> instead." #endif -/* - * This includes the `__NR_<name>' syscall numbers taken from the - * Linux kernel header files. It also defines the traditional - * `SYS_<name>' macros for older programs. - */ -#include <bits/sysnum.h> - #ifndef __ASSEMBLER__ #include <errno.h> -#define SYS_ify(syscall_name) (__NR_##syscall_name) - -#undef _syscall0 -#define _syscall0(type,name) \ - type name(void) \ - { \ - return (type)(INLINE_SYSCALL(name, 0)); \ - } - -#undef _syscall1 -#define _syscall1(type,name,type1,arg1) \ - type name(type1 arg1) \ - { \ - return (type)(INLINE_SYSCALL(name, 1, arg1)); \ - } - -#undef _syscall2 -#define _syscall2(type,name,type1,arg1,type2,arg2) \ - type name(type1 arg1, type2 arg2) \ - { \ - return (type)(INLINE_SYSCALL(name, 2, arg1, arg2)); \ - } - -#undef _syscall3 -#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ - type name(type1 arg1, type2 arg2, type3 arg3) \ - { \ - return (type)(INLINE_SYSCALL(name, 3, arg1, \ - arg2, arg3)); \ - } - -#undef _syscall4 -#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3, \ - type4,arg4) \ - type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ - { \ - return (type)(INLINE_SYSCALL(name, 4, arg1, arg2, \ - arg3, arg4)); \ - } - -#undef _syscall5 -#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3, \ - type4,arg4,type5,arg5) \ - type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \ - type5 arg5) \ - { \ - return (type)(INLINE_SYSCALL(name, 5, arg1, arg2, \ - arg3, arg4, arg5)); \ - } - -#undef _syscall6 -#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3, \ - type4,arg4,type5,arg5,type6,arg6) \ - type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \ - type5 arg5, type6 arg6) \ - { \ - return (type)(INLINE_SYSCALL(name, 6, arg1, arg2, arg3, \ - arg4, arg5, arg6)); \ - } - -#undef unlikely -#define unlikely(x) __builtin_expect((x), 0) - -#undef INLINE_SYSCALL -#define INLINE_SYSCALL(name, nr, args...) \ - ({ \ - unsigned _sys_result = INTERNAL_SYSCALL(name, , nr, args); \ - if (unlikely(INTERNAL_SYSCALL_ERROR_P(_sys_result, ))) { \ - __set_errno(INTERNAL_SYSCALL_ERRNO(_sys_result, )); \ - _sys_result = (unsigned int) -1; \ - } \ - (int) _sys_result; \ - }) - -#undef INTERNAL_SYSCALL_DECL -#define INTERNAL_SYSCALL_DECL(err) do { } while(0) - -#undef INTERNAL_SYSCALL #define INTERNAL_SYSCALL(name, err, nr, args...) \ ({ \ register int _a1 __asm__("r12"); \ @@ -105,13 +20,9 @@ _a1; \ }) -#undef INTERNAL_SYSCALL_ERROR_P #define INTERNAL_SYSCALL_ERROR_P(val, err) \ ((unsigned int)(val) >= 0xfffff001U) -#undef INTERNAL_SYSCALL_ERRNO -#define INTERNAL_SYSCALL_ERRNO(val, errr) (-(val)) - #define LOAD_ARGS_0() do { } while(0) #define ASM_ARGS_0 #define LOAD_ARGS_1(a1) \ diff --git a/libc/sysdeps/linux/bfin/bits/syscalls.h b/libc/sysdeps/linux/bfin/bits/syscalls.h index 37e564d..478ea2d 100644 --- a/libc/sysdeps/linux/bfin/bits/syscalls.h +++ b/libc/sysdeps/linux/bfin/bits/syscalls.h @@ -6,151 +6,6 @@ #ifndef __ASSEMBLER__ -#include <errno.h> - -#define SYS_ify(syscall_name) (__NR_##syscall_name) - -/* user-visible error numbers are in the range -1 - -4095: see <asm-frv/errno.h> */ -#if defined _LIBC && !defined __set_errno -# define __syscall_return(type, res) \ -do { \ - unsigned long __sr2 = (res); \ - if (__builtin_expect ((unsigned long)(__sr2) \ - >= (unsigned long)(-4095), 0)) { \ - extern int __syscall_error (int); \ - return (type) __syscall_error (__sr2); \ - } \ - return (type) (__sr2); \ -} while (0) -#else -# define __syscall_return(type, res) \ -do { \ - unsigned long __sr2 = (res); \ - if (__builtin_expect ((unsigned long)(__sr2) \ - >= (unsigned long)(-4095), 0)) { \ - __set_errno (-__sr2); \ - __sr2 = -1; \ - } \ - return (type) (__sr2); \ -} while (0) -#endif - -#define _syscall0(type,name) \ -type name(void) { \ - long __res; \ - __asm__ __volatile__ ( \ - "excpt 0;\n\t" \ - : "=q0" (__res) \ - : "qA" (__NR_##name) \ - : "memory","CC"); \ - __syscall_return(type,__res); \ -} - -#define _syscall1(type,name,type1,arg1) \ -type name(type1 arg1) { \ - long __res; \ - __asm__ __volatile__ ( \ - "excpt 0;\n\t" \ - : "=q0" (__res) \ - : "qA" (__NR_##name), \ - "q0" ((long)(arg1)) \ - : "memory","CC"); \ - __syscall_return(type,__res); \ -} - -#define _syscall2(type,name,type1,arg1,type2,arg2) \ -type name(type1 arg1,type2 arg2) { \ - long __res; \ - __asm__ __volatile__ ( \ - "excpt 0;\n\t" \ - "%0=r0;\n\t" \ - : "=q0" (__res) \ - : "qA" (__NR_##name), \ - "q0" ((long)(arg1)), \ - "q1" ((long)(arg2)) \ - : "memory","CC"); \ - __syscall_return(type,__res); \ -} - -#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ -type name(type1 arg1,type2 arg2,type3 arg3) { \ - long __res; \ - __asm__ __volatile__ ( \ - "excpt 0;\n\t" \ - : "=q0" (__res) \ - : "qA" (__NR_##name), \ - "q0" ((long)(arg1)), \ - "q1" ((long)(arg2)), \ - "q2" ((long)(arg3)) \ - : "memory","CC"); \ - __syscall_return(type,__res); \ -} - -#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4)\ -type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \ - long __res; \ - __asm__ __volatile__ ( \ - "excpt 0;\n\t" \ - : "=q0" (__res) \ - : "qA" (__NR_##name), \ - "q0" ((long)(arg1)), \ - "q1" ((long)(arg2)), \ - "q2" ((long)(arg3)), \ - "q3" ((long)(arg4)) \ - : "memory","CC"); \ - __syscall_return(type,__res); \ -} - -#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \ -type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) { \ - long __res; \ - __asm__ __volatile__ ( \ - "excpt 0;\n\t" \ - : "=q0" (__res) \ - : "qA" (__NR_##name), \ - "q0" ((long)(arg1)), \ - "q1" ((long)(arg2)), \ - "q2" ((long)(arg3)), \ - "q3" ((long)(arg4)), \ - "q4" ((long)(arg5)) \ - : "memory","CC"); \ - __syscall_return(type,__res); \ -} - -#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5,type6,arg6) \ -type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) { \ - long __res; \ - __asm__ __volatile__ ( \ - "excpt 0;\n\t" \ - : "=q0" (__res) \ - : "qA" (__NR_##name), \ - "q0" ((long)(arg1)), \ - "q1" ((long)(arg2)), \ - "q2" ((long)(arg3)), \ - "q3" ((long)(arg4)), \ - "q4" ((long)(arg5)), \ - "q5" ((long)(arg6)) \ - : "memory","CC"); \ - __syscall_return(type,__res); \ -} - - -/* Define a macro which expands into the inline wrapper code for a system call */ -#define INLINE_SYSCALL(name, nr, args...) \ -({ \ - INTERNAL_SYSCALL_DECL(err); \ - long result_var = INTERNAL_SYSCALL(name, err, nr, args); \ - if (INTERNAL_SYSCALL_ERROR_P(result_var, err)) { \ - __set_errno(INTERNAL_SYSCALL_ERRNO(result_var, err)); \ - result_var = -1L; \ - } \ - result_var; \ -}) - -#define INTERNAL_SYSCALL_DECL(err) do { } while (0) -#define INTERNAL_SYSCALL_ERROR_P(val, err) ((unsigned long)val >= (unsigned long)(-4095)) -#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) - #define INTERNAL_SYSCALL(name, err, nr, args...) \ ({ \ long __res; \ diff --git a/libc/sysdeps/linux/common/bits/syscalls-common.h b/libc/sysdeps/linux/common/bits/syscalls-common.h new file mode 100644 index 0000000..4fc21fa --- /dev/null +++ b/libc/sysdeps/linux/common/bits/syscalls-common.h @@ -0,0 +1,81 @@ +/* + * Common syscall type defines + * + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. + */ + +#ifndef _SYSCALLS_COMMON_H +#define _SYSCALLS_COMMON_H 1 + +#ifndef _SYSCALL_H +# error "Never use <bits/syscalls-common.h> directly; include <sys/syscall.h> instead." +#endif + +#ifndef SYS_ify +# define SYS_ify(syscall_name) (__NR_##syscall_name) +#endif + +#ifndef __ASSEMBLER__ + +#include <errno.h> + +#ifndef INTERNAL_SYSCALL_DECL +# define INTERNAL_SYSCALL_DECL(err) do { } while (0) +#endif +#ifndef INTERNAL_SYSCALL_ERROR_P +# define INTERNAL_SYSCALL_ERROR_P(val, err) ((unsigned long)val >= (unsigned long)(-4095)) +#endif +#ifndef INTERNAL_SYSCALL_ERRNO +# define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) +#endif + +/* Define a macro which expands into the inline wrapper code for a system call */ +#ifndef INLINE_SYSCALL +# define INLINE_SYSCALL(name, nr, args...) \ +({ \ + INTERNAL_SYSCALL_DECL(err); \ + long res = INTERNAL_SYSCALL(name, err, nr, args); \ + if (unlikely(INTERNAL_SYSCALL_ERROR_P(res, err))) { \ + __set_errno(INTERNAL_SYSCALL_ERRNO(res, err)); \ + res = -1L; \ + } \ + res; \ +}) +#endif + +#ifndef _syscall0 + +#define _syscall0(args...) SYSCALL_FUNC (0, args) +#define _syscall1(args...) SYSCALL_FUNC (1, args) +#define _syscall2(args...) SYSCALL_FUNC (2, args) +#define _syscall3(args...) SYSCALL_FUNC (3, args) +#define _syscall4(args...) SYSCALL_FUNC (4, args) +#define _syscall5(args...) SYSCALL_FUNC (5, args) +#define _syscall6(args...) SYSCALL_FUNC (6, args) + +#define C_DECL_ARGS_0() void +#define C_DECL_ARGS_1(t, v) t v +#define C_DECL_ARGS_2(t, v, args...) t v, C_DECL_ARGS_1(args) +#define C_DECL_ARGS_3(t, v, args...) t v, C_DECL_ARGS_2(args) +#define C_DECL_ARGS_4(t, v, args...) t v, C_DECL_ARGS_3(args) +#define C_DECL_ARGS_5(t, v, args...) t v, C_DECL_ARGS_4(args) +#define C_DECL_ARGS_6(t, v, args...) t v, C_DECL_ARGS_5(args) + +#define C_ARGS_0() +#define C_ARGS_1(t, v) v +#define C_ARGS_2(t, v, args...) v, C_ARGS_1 (args) +#define C_ARGS_3(t, v, args...) v, C_ARGS_2 (args) +#define C_ARGS_4(t, v, args...) v, C_ARGS_3 (args) +#define C_ARGS_5(t, v, args...) v, C_ARGS_4 (args) +#define C_ARGS_6(t, v, args...) v, C_ARGS_5 (args) + +#define SYSCALL_FUNC(nargs, type, name, args...) \ +type name (C_DECL_ARGS_##nargs (args)) { \ + return (type) INLINE_SYSCALL (name, nargs, C_ARGS_##nargs (args)); \ +} + +#endif /* _syscall0 */ + +#endif /* __ASSEMBLER__ */ + +#endif diff --git a/libc/sysdeps/linux/common/bits/syscalls.h b/libc/sysdeps/linux/common/bits/syscalls.h index ceba568..e7c6b03 100644 --- a/libc/sysdeps/linux/common/bits/syscalls.h +++ b/libc/sysdeps/linux/common/bits/syscalls.h @@ -5,4 +5,5 @@ * forbidden. Don't do it. It is bad for you. */ -#error You have not provided architecture specific _syscall[0-6] macros +#error You have not provided architecture specific bits/syscalls.h +#error You should need to define only INTERNAL_SYSCALL diff --git a/libc/sysdeps/linux/i386/bits/syscalls.h b/libc/sysdeps/linux/i386/bits/syscalls.h index 014539c..343b096 100644 --- a/libc/sysdeps/linux/i386/bits/syscalls.h +++ b/libc/sysdeps/linux/i386/bits/syscalls.h @@ -13,15 +13,9 @@ #include <errno.h> -#define SYS_ify(syscall_name) (__NR_##syscall_name) - -#define INTERNAL_SYSCALL_DECL(err) do { } while (0) - #define INTERNAL_SYSCALL_ERROR_P(val, err) \ ((unsigned int) (val) >= 0xfffff001u) -#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) - /* We need some help from the assembler to generate optimal code. We define some macros here which later will be used. */ @@ -102,66 +96,6 @@ __asm__ (".L__X'%ebx = 1\n\t" ".endm\n\t"); #endif -#undef _syscall0 -#define _syscall0(type,name) \ -type name(void) \ -{ \ -return (type) (INLINE_SYSCALL(name, 0)); \ -} - -#undef _syscall1 -#define _syscall1(type,name,type1,arg1) \ -type name(type1 arg1) \ -{ \ -return (type) (INLINE_SYSCALL(name, 1, arg1)); \ -} - -#undef _syscall2 -#define _syscall2(type,name,type1,arg1,type2,arg2) \ -type name(type1 arg1,type2 arg2) \ -{ \ -return (type) (INLINE_SYSCALL(name, 2, arg1, arg2)); \ -} - -#undef _syscall3 -#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ -type name(type1 arg1,type2 arg2,type3 arg3) \ -{ \ -return (type) (INLINE_SYSCALL(name, 3, arg1, arg2, arg3)); \ -} - -#undef _syscall4 -#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ -type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ -{ \ -return (type) (INLINE_SYSCALL(name, 4, arg1, arg2, arg3, arg4)); \ -} - -#undef _syscall5 -#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ - type5,arg5) \ -type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ -{ \ -return (type) (INLINE_SYSCALL(name, 5, arg1, arg2, arg3, arg4, arg5)); \ -} - -#undef _syscall6 -#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ - type5,arg5,type6,arg6) \ -type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5, type6 arg6) \ -{ \ -return (type) (INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6)); \ -} - #define INLINE_SYSCALL(name, nr, args...) \ - ({ \ - unsigned int _resultvar = INTERNAL_SYSCALL (name, , nr, args); \ - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_resultvar, ), 0)) \ - { \ - __set_errno (INTERNAL_SYSCALL_ERRNO (_resultvar, )); \ - _resultvar = 0xffffffff; \ - } \ - (int) _resultvar; }) - #define INTERNAL_SYSCALL(name, err, nr, args...) \ ({ \ register unsigned int resultvar; \ diff --git a/libc/sysdeps/linux/ia64/bits/syscalls.h b/libc/sysdeps/linux/ia64/bits/syscalls.h index 6722da9..81b2cf4 100644 --- a/libc/sysdeps/linux/ia64/bits/syscalls.h +++ b/libc/sysdeps/linux/ia64/bits/syscalls.h @@ -32,56 +32,6 @@ #undef IA64_USE_NEW_STUB -#undef _syscall0 -#define _syscall0(type,name) \ - type name(void) \ -{ \ -return (type) (INLINE_SYSCALL(name, 0)); \ -} - -#undef _syscall1 -#define _syscall1(type,name,type1,arg1) \ - type name(type1 arg1) \ -{ \ -return (type) (INLINE_SYSCALL(name, 1, arg1)); \ -} - -#undef _syscall2 -#define _syscall2(type,name,type1,arg1,type2,arg2) \ - type name(type1 arg1,type2 arg2) \ -{ \ -return (type) (INLINE_SYSCALL(name, 2, arg1, arg2)); \ -} - -#undef _syscall3 -#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ - type name(type1 arg1,type2 arg2,type3 arg3) \ -{ \ -return (type) (INLINE_SYSCALL(name, 3, arg1, arg2, arg3)); \ -} -#undef _syscall4 -#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ - type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ -{ \ -return (type) (INLINE_SYSCALL(name, 4, arg1, arg2, arg3, arg4)); \ -} - -#undef _syscall5 -#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ - type5,arg5) \ -type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ -{ \ -return (type) (INLINE_SYSCALL(name, 5, arg1, arg2, arg3, arg4, arg5)); \ -} - -#undef _syscall6 -#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ - type5,arg5,type6,arg6) \ -type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5,type6 arg6) \ -{ \ -return (type) (INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6)); \ -} - #define __IA64_BREAK_SYSCALL 0x100000 /* mostly taken from glibc sysdeps/unix/sysv/linux/ia64/sysdep.h */ @@ -114,7 +64,6 @@ return (type) (INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6)); \ #define DO_INLINE_SYSCALL(name, nr, args...) \ DO_INLINE_SYSCALL_NCS (__NR_##name, nr, ##args) -#undef INLINE_SYSCALL #define INLINE_SYSCALL(name, nr, args...) \ ({ \ DO_INLINE_SYSCALL_NCS (__NR_##name, nr, args) \ @@ -125,10 +74,8 @@ return (type) (INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6)); \ } \ _retval; }) -#undef INTERNAL_SYSCALL_DECL #define INTERNAL_SYSCALL_DECL(err) long int err -#undef INTERNAL_SYSCALL #define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \ ({ \ DO_INLINE_SYSCALL_NCS (name, nr, args) \ @@ -137,10 +84,8 @@ return (type) (INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6)); \ #define INTERNAL_SYSCALL(name, err, nr, args...) \ INTERNAL_SYSCALL_NCS (__NR_##name, err, nr, ##args) -#undef INTERNAL_SYSCALL_ERROR_P #define INTERNAL_SYSCALL_ERROR_P(val, err) (err == -1) -#undef INTERNAL_SYSCALL_ERRNO #define INTERNAL_SYSCALL_ERRNO(val, err) (val) #define LOAD_ARGS_0() diff --git a/libc/sysdeps/linux/mips/bits/syscalls.h b/libc/sysdeps/linux/mips/bits/syscalls.h index fa8b876..07e0fe4 100644 --- a/libc/sysdeps/linux/mips/bits/syscalls.h +++ b/libc/sysdeps/linux/mips/bits/syscalls.h @@ -10,67 +10,6 @@ #include <errno.h> -#define SYS_ify(syscall_name) (__NR_##syscall_name) - -#undef _syscall0 -#define _syscall0(type,name) \ -type name(void) \ -{ \ -return (type) (INLINE_SYSCALL(name, 0)); \ -} - -#undef _syscall1 -#define _syscall1(type,name,type1,arg1) \ -type name(type1 arg1) \ -{ \ -return (type) (INLINE_SYSCALL(name, 1, arg1)); \ -} - -#undef _syscall2 -#define _syscall2(type,name,type1,arg1,type2,arg2) \ -type name(type1 arg1,type2 arg2) \ -{ \ -return (type) (INLINE_SYSCALL(name, 2, arg1, arg2)); \ -} - -#undef _syscall3 -#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ -type name(type1 arg1,type2 arg2,type3 arg3) \ -{ \ -return (type) (INLINE_SYSCALL(name, 3, arg1, arg2, arg3)); \ -} - -#undef _syscall4 -#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ -type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ -{ \ -return (type) (INLINE_SYSCALL(name, 4, arg1, arg2, arg3, arg4)); \ -} - -#undef _syscall5 -#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ - type5,arg5) \ -type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ -{ \ -return (type) (INLINE_SYSCALL(name, 5, arg1, arg2, arg3, arg4, arg5)); \ -} - -#undef _syscall6 -#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ - type5,arg5,type6,arg6) \ -type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5, type6 arg6) \ -{ \ -return (type) (INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6)); \ -} - -#undef _syscall7 -#define _syscall7(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ - type5,arg5,type6,arg6,type7,arg7) \ -type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5, type6 arg6,type7 arg7) \ -{ \ -return (type) (INLINE_SYSCALL(name, 7, arg1, arg2, arg3, arg4, arg5, arg6, arg7)); \ -} - /* * Import from: * glibc-ports/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h @@ -80,7 +19,6 @@ return (type) (INLINE_SYSCALL(name, 7, arg1, arg2, arg3, arg4, arg5, arg6, arg7) /* Define a macro which expands into the inline wrapper code for a system call. */ -#undef INLINE_SYSCALL #define INLINE_SYSCALL(name, nr, args...) \ ({ INTERNAL_SYSCALL_DECL(err); \ long result_var = INTERNAL_SYSCALL (name, err, nr, args); \ @@ -91,21 +29,16 @@ return (type) (INLINE_SYSCALL(name, 7, arg1, arg2, arg3, arg4, arg5, arg6, arg7) } \ result_var; }) -#undef INTERNAL_SYSCALL_DECL #define INTERNAL_SYSCALL_DECL(err) long err -#undef INTERNAL_SYSCALL_ERROR_P #define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err)) -#undef INTERNAL_SYSCALL_ERRNO #define INTERNAL_SYSCALL_ERRNO(val, err) (val) -#undef INTERNAL_SYSCALL #define INTERNAL_SYSCALL(name, err, nr, args...) \ internal_syscall##nr (, "li\t$2, %2\t\t\t# " #name "\n\t", \ "i" (SYS_ify (name)), err, args) -#undef INTERNAL_SYSCALL_NCS #define INTERNAL_SYSCALL_NCS(number, err, nr, args...) \ internal_syscall##nr (= number, , "r" (__v0), err, args) diff --git a/libc/sysdeps/linux/powerpc/bits/syscalls.h b/libc/sysdeps/linux/powerpc/bits/syscalls.h index 96894d0..e11c362 100644 --- a/libc/sysdeps/linux/powerpc/bits/syscalls.h +++ b/libc/sysdeps/linux/powerpc/bits/syscalls.h @@ -22,12 +22,6 @@ #ifndef _SYSCALL_H # error "Never use <bits/syscalls.h> directly; include <sys/syscall.h> instead." #endif -/* For Linux we can use the system call table in the header file - /usr/include/asm/unistd.h - of the kernel. But these symbols do not follow the SYS_* syntax - so we have to redefine the `SYS_ify' macro here. */ -#undef SYS_ify -#define SYS_ify(syscall_name) __NR_##syscall_name #ifndef __ASSEMBLER__ @@ -136,7 +130,6 @@ (int) r3; \ }) -# undef INLINE_SYSCALL # define INLINE_SYSCALL(name, nr, args...) \ ({ \ INTERNAL_SYSCALL_DECL (sc_err); \ @@ -157,10 +150,8 @@ "sc; bnslr+" sequence) and CR (where only CR0.SO is clobbered to signal an error return status). */ -# undef INTERNAL_SYSCALL_DECL # define INTERNAL_SYSCALL_DECL(err) long int err -# undef INTERNAL_SYSCALL # define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \ ({ \ register long int r0 __asm__ ("r0"); \ @@ -189,11 +180,9 @@ # define INTERNAL_SYSCALL(name, err, nr, args...) \ INTERNAL_SYSCALL_NCS (__NR_##name, err, nr, ##args) -# undef INTERNAL_SYSCALL_ERROR_P # define INTERNAL_SYSCALL_ERROR_P(val, err) \ ((void) (val), __builtin_expect ((err) & (1 << 28), 0)) -# undef INTERNAL_SYSCALL_ERRNO # define INTERNAL_SYSCALL_ERRNO(val, err) (val) extern void __illegally_sized_syscall_arg1(void); @@ -250,49 +239,6 @@ extern void __illegally_sized_syscall_arg6(void); # define ASM_INPUT_5 ASM_INPUT_4, "5" (r7) # define ASM_INPUT_6 ASM_INPUT_5, "6" (r8) - -#undef _syscall0 -#define _syscall0(type,name) \ -type name(void) { \ - return (type) INLINE_SYSCALL(name, 0); \ -} - -#undef _syscall1 -#define _syscall1(type,name,type1,arg1) \ -type name(type1 arg1) { \ - return (type) INLINE_SYSCALL(name, 1, arg1); \ -} - -#undef _syscall2 -#define _syscall2(type,name,type1,arg1,type2,arg2) \ -type name(type1 arg1, type2 arg2) { \ - return (type) INLINE_SYSCALL(name, 2, arg1, arg2); \ -} - -#undef _syscall3 -#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ -type name(type1 arg1, type2 arg2, type3 arg3) { \ - return (type) INLINE_SYSCALL(name, 3, arg1, arg2, arg3); \ -} - -#undef _syscall4 -#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ -type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \ - return (type) INLINE_SYSCALL(name, 4, arg1, arg2, arg3, arg4); \ -} - -#undef _syscall5 -#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \ -type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) { \ - return (type) INLINE_SYSCALL(name, 5, arg1, arg2, arg3, arg4, arg5); \ -} - -#undef _syscall6 -#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5,type6,arg6) \ -type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) { \ - return (type) INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6); \ -} - #endif /* __ASSEMBLER__ */ diff --git a/libc/sysdeps/linux/sh/bits/syscalls.h b/libc/sysdeps/linux/sh/bits/syscalls.h index 8b0fb35..6e7ddbb 100644 --- a/libc/sysdeps/linux/sh/bits/syscalls.h +++ b/libc/sysdeps/linux/sh/bits/syscalls.h @@ -15,131 +15,6 @@ #include <errno.h> -#define SYS_ify(syscall_name) (__NR_##syscall_name) - -/* user-visible error numbers are in the range -1 - -125: see <asm-sh/errno.h> */ -#define __syscall_return(type, res) \ -do { \ - if ((unsigned long)(res) >= (unsigned long)(-125)) { \ - /* Avoid using "res" which is declared to be in register r0; \ - errno might expand to a function call and clobber it. */ \ - int __err = -(res); \ - __set_errno(__err); \ - res = -1; \ - } \ - return (type) (res); \ -} while (0) - -/* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */ -#define _syscall0(type,name) \ -type name(void) \ -{ \ -register long __sc0 __asm__ ("r3") = __NR_##name; \ -__asm__ __volatile__ ("trapa %1" \ - : "=z" (__sc0) \ - : "i" (__SH_SYSCALL_TRAP_BASE), "0" (__sc0) \ - : "memory" ); \ -__syscall_return(type,__sc0); \ -} - -#define _syscall1(type,name,type1,arg1) \ -type name(type1 arg1) \ -{ \ -register long __sc0 __asm__ ("r3") = __NR_##name; \ -register long __sc4 __asm__ ("r4") = (long) arg1; \ -__asm__ __volatile__ ("trapa %1" \ - : "=z" (__sc0) \ - : "i" (__SH_SYSCALL_TRAP_BASE + 1), "0" (__sc0), "r" (__sc4) \ - : "memory"); \ -__syscall_return(type,__sc0); \ -} - -#define _syscall2(type,name,type1,arg1,type2,arg2) \ -type name(type1 arg1,type2 arg2) \ -{ \ -register long __sc0 __asm__ ("r3") = __NR_##name; \ -register long __sc4 __asm__ ("r4") = (long) arg1; \ -register long __sc5 __asm__ ("r5") = (long) arg2; \ -__asm__ __volatile__ ("trapa %1" \ - : "=z" (__sc0) \ - : "i" (__SH_SYSCALL_TRAP_BASE + 2), "0" (__sc0), "r" (__sc4), \ - "r" (__sc5) \ - : "memory"); \ -__syscall_return(type,__sc0); \ -} - -#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ -type name(type1 arg1,type2 arg2,type3 arg3) \ -{ \ -register long __sc0 __asm__ ("r3") = __NR_##name; \ -register long __sc4 __asm__ ("r4") = (long) arg1; \ -register long __sc5 __asm__ ("r5") = (long) arg2; \ -register long __sc6 __asm__ ("r6") = (long) arg3; \ -__asm__ __volatile__ ("trapa %1" \ - : "=z" (__sc0) \ - : "i" (__SH_SYSCALL_TRAP_BASE + 3), "0" (__sc0), "r" (__sc4), \ - "r" (__sc5), "r" (__sc6) \ - : "memory"); \ -__syscall_return(type,__sc0); \ -} - -#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ -type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ -{ \ -register long __sc0 __asm__ ("r3") = __NR_##name; \ -register long __sc4 __asm__ ("r4") = (long) arg1; \ -register long __sc5 __asm__ ("r5") = (long) arg2; \ -register long __sc6 __asm__ ("r6") = (long) arg3; \ -register long __sc7 __asm__ ("r7") = (long) arg4; \ -__asm__ __volatile__ ("trapa %1" \ - : "=z" (__sc0) \ - : "i" (__SH_SYSCALL_TRAP_BASE + 4), "0" (__sc0), "r" (__sc4), \ - "r" (__sc5), "r" (__sc6), \ - "r" (__sc7) \ - : "memory" ); \ -__syscall_return(type,__sc0); \ -} - -#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \ -type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ -{ \ -register long __sc3 __asm__ ("r3") = __NR_##name; \ -register long __sc4 __asm__ ("r4") = (long) arg1; \ -register long __sc5 __asm__ ("r5") = (long) arg2; \ -register long __sc6 __asm__ ("r6") = (long) arg3; \ -register long __sc7 __asm__ ("r7") = (long) arg4; \ -register long __sc0 __asm__ ("r0") = (long) arg5; \ -__asm__ __volatile__ ("trapa %1" \ - : "=z" (__sc0) \ - : "i" (__SH_SYSCALL_TRAP_BASE + 5), "0" (__sc0), "r" (__sc4), \ - "r" (__sc5), "r" (__sc6), "r" (__sc7), "r" (__sc3) \ - : "memory" ); \ -__syscall_return(type,__sc0); \ -} - -#ifndef __SH_SYSCALL6_TRAPA -#define __SH_SYSCALL6_TRAPA __SH_SYSCALL_TRAP_BASE + 6 -#endif - -/* Add in _syscall6 which is not in the kernel header */ -#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5,type6,arg6) \ -type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) \ -{ \ -register long __sc3 __asm__ ("r3") = __NR_##name; \ -register long __sc4 __asm__ ("r4") = (long) arg1; \ -register long __sc5 __asm__ ("r5") = (long) arg2; \ -register long __sc6 __asm__ ("r6") = (long) arg3; \ -register long __sc7 __asm__ ("r7") = (long) arg4; \ -register long __sc0 __asm__ ("r0") = (long) arg5; \ -register long __sc1 __asm__ ("r1") = (long) arg6; \ -__asm__ __volatile__ ("trapa %1" \ - : "=z" (__sc0) \ - : "i" (__SH_SYSCALL6_TRAPA), "0" (__sc0), "r" (__sc4), \ - "r" (__sc5), "r" (__sc6), "r" (__sc7), "r" (__sc3), "r" (__sc1) \ - : "memory" ); \ -__syscall_return(type,__sc0); \ -} - #define SYSCALL_INST_STR(x) "trapa #"__stringify(__SH_SYSCALL_TRAP_BASE + x)"\n\t" #define SYSCALL_INST_STR0 SYSCALL_INST_STR(0) #define SYSCALL_INST_STR1 SYSCALL_INST_STR(1) @@ -237,7 +112,6 @@ __syscall_return(type,__sc0); \ register long int r1 __asm__ ("%r1") = (long int) (_arg6); \ register long int r2 __asm__ ("%r2") = (long int) (_arg7) -#undef INLINE_SYSCALL #define INLINE_SYSCALL(name, nr, args...) \ ({ \ unsigned int __resultvar = INTERNAL_SYSCALL (name, , nr, args); \ @@ -248,7 +122,6 @@ __syscall_return(type,__sc0); \ } \ (int) __resultvar; }) -#undef INTERNAL_SYSCALL #define INTERNAL_SYSCALL(name, err, nr, args...) \ ({ \ unsigned long int resultvar; \ @@ -276,16 +149,9 @@ __syscall_return(type,__sc0); \ \ (int) resultvar; }) -#undef INTERNAL_SYSCALL_DECL -#define INTERNAL_SYSCALL_DECL(err) do { } while (0) - -#undef INTERNAL_SYSCALL_ERROR_P #define INTERNAL_SYSCALL_ERROR_P(val, err) \ ((unsigned int) (val) >= 0xfffff001u) -#undef INTERNAL_SYSCALL_ERRNO -#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) - #endif /* __ASSEMBLER__ */ #endif /* _BITS_SYSCALLS_H */ diff --git a/libc/sysdeps/linux/x86_64/bits/syscalls.h b/libc/sysdeps/linux/x86_64/bits/syscalls.h index 80f4259..3aabe67 100644 --- a/libc/sysdeps/linux/x86_64/bits/syscalls.h +++ b/libc/sysdeps/linux/x86_64/bits/syscalls.h @@ -13,59 +13,6 @@ #include <errno.h> -#define SYS_ify(syscall_name) (__NR_##syscall_name) - -#undef _syscall0 -#define _syscall0(type,name) \ -type name(void) \ -{ \ -return (type) (INLINE_SYSCALL(name, 0)); \ -} - -#undef _syscall1 -#define _syscall1(type,name,type1,arg1) \ -type name(type1 arg1) \ -{ \ -return (type) (INLINE_SYSCALL(name, 1, arg1)); \ -} - -#undef _syscall2 -#define _syscall2(type,name,type1,arg1,type2,arg2) \ -type name(type1 arg1,type2 arg2) \ -{ \ -return (type) (INLINE_SYSCALL(name, 2, arg1, arg2)); \ -} - -#undef _syscall3 -#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ -type name(type1 arg1,type2 arg2,type3 arg3) \ -{ \ -return (type) (INLINE_SYSCALL(name, 3, arg1, arg2, arg3)); \ -} - -#undef _syscall4 -#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ -type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ -{ \ -return (type) (INLINE_SYSCALL(name, 4, arg1, arg2, arg3, arg4)); \ -} - -#undef _syscall5 -#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ - type5,arg5) \ -type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ -{ \ -return (type) (INLINE_SYSCALL(name, 5, arg1, arg2, arg3, arg4, arg5)); \ -} - -#undef _syscall6 -#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ - type5,arg5,type6,arg6) \ -type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5,type6 arg6) \ -{ \ -return (type) (INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6)); \ -} - /* The Linux/x86-64 kernel expects the system call parameters in registers according to the following table: @@ -103,9 +50,6 @@ return (type) (INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6)); \ Syscalls of more than 6 arguments are not supported. */ -#undef SYS_ify -#define SYS_ify(syscall_name) __NR_##syscall_name - #undef DO_CALL #define DO_CALL(syscall_name, args) \ DOARGS_##args \ @@ -122,20 +66,6 @@ return (type) (INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6)); \ /* Define a macro which expands inline into the wrapper code for a system call. */ -#undef INLINE_SYSCALL -#define INLINE_SYSCALL(name, nr, args...) \ - ({ \ - unsigned long _resultvar = INTERNAL_SYSCALL (name, , nr, args); \ - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_resultvar, ), 0)) \ - { \ - __set_errno (INTERNAL_SYSCALL_ERRNO (_resultvar, )); \ - _resultvar = (unsigned long) -1; \ - } \ - (long) _resultvar; }) - -#undef INTERNAL_SYSCALL_DECL -#define INTERNAL_SYSCALL_DECL(err) do { } while (0) - #define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \ ({ \ unsigned long resultvar; \ @@ -146,17 +76,9 @@ return (type) (INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6)); \ : "=a" (resultvar) \ : "0" (name) ASM_ARGS_##nr : "memory", "cc", "r11", "cx"); \ (long) resultvar; }) -#undef INTERNAL_SYSCALL #define INTERNAL_SYSCALL(name, err, nr, args...) \ INTERNAL_SYSCALL_NCS (__NR_##name, err, nr, ##args) -#undef INTERNAL_SYSCALL_ERROR_P -#define INTERNAL_SYSCALL_ERROR_P(val, err) \ - ((unsigned long) (val) >= -4095L) - -#undef INTERNAL_SYSCALL_ERRNO -#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) - #define LOAD_ARGS_0() #define LOAD_REGS_0 #define ASM_ARGS_0 diff --git a/libc/sysdeps/linux/xtensa/bits/syscalls.h b/libc/sysdeps/linux/xtensa/bits/syscalls.h index a59a805..6b87ace 100644 --- a/libc/sysdeps/linux/xtensa/bits/syscalls.h +++ b/libc/sysdeps/linux/xtensa/bits/syscalls.h @@ -9,8 +9,6 @@ glibc .../sysdeps/unix/sysv/linux/xtensa/sysdep.h */ -#define SYS_ify(syscall_name) __NR_##syscall_name - #ifdef __ASSEMBLER__ /* The register layout upon entering the function is: @@ -74,19 +72,6 @@ /* Define a macro which expands into the inline wrapper code for a system call. */ -#undef INLINE_SYSCALL -#define INLINE_SYSCALL(name, nr, args...) \ - ({ unsigned long resultvar = INTERNAL_SYSCALL (name, , nr, args); \ - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (resultvar, ), 0)) \ - { \ - __set_errno (INTERNAL_SYSCALL_ERRNO (resultvar, )); \ - resultvar = (unsigned long) -1; \ - } \ - (long) resultvar; }) - -#undef INTERNAL_SYSCALL_DECL -#define INTERNAL_SYSCALL_DECL(err) do { } while (0) - #define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \ ({ LD_ARG(2, name); \ LD_ARGS_##nr(args); \ @@ -96,45 +81,8 @@ : "memory"); \ (long) _a2; }) -#undef INTERNAL_SYSCALL #define INTERNAL_SYSCALL(name, err, nr, args...) \ INTERNAL_SYSCALL_NCS (__NR_##name, err, nr, ##args) -#undef INTERNAL_SYSCALL_ERROR_P -#define INTERNAL_SYSCALL_ERROR_P(val, err) \ - ((unsigned long) (val) >= -4095L) - -#undef INTERNAL_SYSCALL_ERRNO -#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val)) - -#define _syscall0(args...) SYSCALL_FUNC (0, args) -#define _syscall1(args...) SYSCALL_FUNC (1, args) -#define _syscall2(args...) SYSCALL_FUNC (2, args) -#define _syscall3(args...) SYSCALL_FUNC (3, args) -#define _syscall4(args...) SYSCALL_FUNC (4, args) -#define _syscall5(args...) SYSCALL_FUNC (5, args) -#define _syscall6(args...) SYSCALL_FUNC (6, args) - -#define C_DECL_ARGS_0() void -#define C_DECL_ARGS_1(t, v) t v -#define C_DECL_ARGS_2(t, v, args...) t v, C_DECL_ARGS_1(args) -#define C_DECL_ARGS_3(t, v, args...) t v, C_DECL_ARGS_2(args) -#define C_DECL_ARGS_4(t, v, args...) t v, C_DECL_ARGS_3(args) -#define C_DECL_ARGS_5(t, v, args...) t v, C_DECL_ARGS_4(args) -#define C_DECL_ARGS_6(t, v, args...) t v, C_DECL_ARGS_5(args) - -#define C_ARGS_0() -#define C_ARGS_1(t, v) v -#define C_ARGS_2(t, v, args...) v, C_ARGS_1 (args) -#define C_ARGS_3(t, v, args...) v, C_ARGS_2 (args) -#define C_ARGS_4(t, v, args...) v, C_ARGS_3 (args) -#define C_ARGS_5(t, v, args...) v, C_ARGS_4 (args) -#define C_ARGS_6(t, v, args...) v, C_ARGS_5 (args) - -#define SYSCALL_FUNC(nargs, type, name, args...) \ -type name (C_DECL_ARGS_##nargs (args)) { \ - return (type) INLINE_SYSCALL (name, nargs, C_ARGS_##nargs (args)); \ -} - #endif /* not __ASSEMBLER__ */ #endif /* _BITS_SYSCALLS_H */ -- 1.6.3.3 _______________________________________________ uClibc mailing list uClibc@uclibc.org http://lists.busybox.net/mailman/listinfo/uclibc