avoid "inline" in public headers for strict c89 compatibility
[musl] / arch / i386 / bits / syscall.h
index b38f09e..77c7f11 100644 (file)
@@ -1,3 +1,142 @@
+#define __SYSCALL_LL_E(x) \
+((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
+((union { long long ll; long l[2]; }){ .ll = x }).l[1]
+#define __SYSCALL_LL_O(x) __SYSCALL_LL_E((x))
+
+#define __SYSCALL_SSLEN 8
+
+static __inline long __syscall0(long __n)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("int $128" : "=a"(__ret) : "a"(__n) : "memory");
+       return __ret;
+}
+
+#ifndef __PIC__
+
+static __inline long __syscall1(long __n, long __a1)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("int $128" : "=a"(__ret) : "a"(__n), "b"(__a1) : "memory");
+       return __ret;
+}
+
+static __inline long __syscall2(long __n, long __a1, long __a2)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("int $128" : "=a"(__ret) : "a"(__n), "b"(__a1), "c"(__a2) : "memory");
+       return __ret;
+}
+
+static __inline long __syscall3(long __n, long __a1, long __a2, long __a3)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("int $128" : "=a"(__ret) : "a"(__n), "b"(__a1), "c"(__a2), "d"(__a3) : "memory");
+       return __ret;
+}
+
+static __inline long __syscall4(long __n, long __a1, long __a2, long __a3, long __a4)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("int $128" : "=a"(__ret) : "a"(__n), "b"(__a1), "c"(__a2), "d"(__a3), "S"(__a4) : "memory");
+       return __ret;
+}
+
+static __inline long __syscall5(long __n, long __a1, long __a2, long __a3, long __a4, long __a5)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("int $128" : "=a"(__ret) : "a"(__n), "b"(__a1), "c"(__a2), "d"(__a3), "S"(__a4), "D"(__a5) : "memory");
+       return __ret;
+}
+
+static __inline long __syscall6(long __n, long __a1, long __a2, long __a3, long __a4, long __a5, long __a6)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("pushl %7 ; pushl %%ebp ; mov 4(%%esp),%%ebp ; int $128 ; popl %%ebp ; popl %%ecx"
+               : "=a"(__ret) : "a"(__n), "b"(__a1), "c"(__a2), "d"(__a3), "S"(__a4), "D"(__a5), "g"(__a6) : "memory");
+       return __ret;
+}
+
+#else
+
+static __inline long __syscall1(long __n, long __a1)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("xchg %2,%%ebx ; int $128 ; xchg %2,%%ebx"
+               : "=a"(__ret) : "a"(__n), "d"(__a1) : "memory");
+       return __ret;
+}
+
+static __inline long __syscall2(long __n, long __a1, long __a2)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("xchg %2,%%ebx ; int $128 ; xchg %2,%%ebx"
+               : "=a"(__ret) : "a"(__n), "d"(__a1), "c"(__a2) : "memory");
+       return __ret;
+}
+
+static __inline long __syscall3(long __n, long __a1, long __a2, long __a3)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("xchg %2,%%ebx ; int $128 ; xchg %2,%%ebx"
+               : "=a"(__ret) : "a"(__n), "S"(__a1), "c"(__a2), "d"(__a3) : "memory");
+       return __ret;
+}
+
+static __inline long __syscall4(long __n, long __a1, long __a2, long __a3, long __a4)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("xchg %2,%%ebx ; int $128 ; xchg %2,%%ebx"
+               : "=a"(__ret) : "a"(__n), "D"(__a1), "c"(__a2), "d"(__a3), "S"(__a4) : "memory");
+       return __ret;
+}
+
+#if 0
+static __inline long __syscall5(long __n, long __a1, long __a2, long __a3, long __a4, long __a5)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("pushl %2 ; pushl %%ebx ; mov 4(%%esp),%%ebx ; int $128 ; popl %%ebx ; popl %%ecx"
+               : "=a"(__ret) : "a"(__n), "g"(__a1), "c"(__a2), "d"(__a3), "S"(__a4), "D"(__a5) : "memory");
+       return __ret;
+}
+#else
+static __inline long __syscall5(long __n, long __a1, long __a2, long __a3, long __a4, long __a5)
+{
+       return (__syscall)(__n, __a1, __a2, __a3, __a4, __a5);
+}
+#endif
+
+static __inline long __syscall6(long __n, long __a1, long __a2, long __a3, long __a4, long __a5, long __a6)
+{
+       return (__syscall)(__n, __a1, __a2, __a3, __a4, __a5, __a6);
+}
+
+#endif
+
+
+#define __SC_socket      1
+#define __SC_bind        2
+#define __SC_connect     3
+#define __SC_listen      4
+#define __SC_accept      5
+#define __SC_getsockname 6
+#define __SC_getpeername 7
+#define __SC_socketpair  8
+#define __SC_send        9
+#define __SC_recv        10
+#define __SC_sendto      11
+#define __SC_recvfrom    12
+#define __SC_shutdown    13
+#define __SC_setsockopt  14
+#define __SC_getsockopt  15
+#define __SC_sendmsg     16
+#define __SC_recvmsg     17
+
+#define __socketcall(nm,a,b,c,d,e,f) syscall(SYS_socketcall, __SC_##nm, \
+    ((long [6]){ (long)a, (long)b, (long)c, (long)d, (long)e, (long)f }))
+#define __socketcall_cp(nm,a,b,c,d,e,f) syscall_cp(SYS_socketcall, __SC_##nm, \
+    ((long [6]){ (long)a, (long)b, (long)c, (long)d, (long)e, (long)f }))
+
 #define __NR_restart_syscall      0
 #define __NR_exit                1
 #define __NR_fork                2
 #define __NR_inotify_init1     332
 #define __NR_preadv            333
 #define __NR_pwritev           334
+#define __NR_prlimit64         340
+#define __NR_name_to_handle_at 341
+#define __NR_open_by_handle_at 342
+#define __NR_clock_adjtime     343
+#define __NR_syncfs            344
+#define __NR_sendmmsg          345
+#define __NR_setns             346
+#define __NR_process_vm_readv  347
+#define __NR_process_vm_writev 348
 
 /* fixup legacy 16-bit junk */
 #undef __NR_lchown
 
 
 /* fixup legacy 32-bit-vs-lfs64 junk */
+#undef __NR_fcntl
 #undef __NR_getdents
 #undef __NR_ftruncate
 #undef __NR_truncate
 #undef __NR_lstat
 #undef __NR_statfs
 #undef __NR_fstatfs
+#define __NR_fcntl __NR_fcntl64
 #define __NR_getdents __NR_getdents64
 #define __NR_ftruncate __NR_ftruncate64
 #define __NR_truncate __NR_truncate64
 #define __NR_pread __NR_pread64
 #define __NR_pwrite __NR_pwrite64
 
+#define __NR_fadvise __NR_fadvise64_64
+
 #undef __NR_getrlimit
 #define __NR_getrlimit __NR_ugetrlimit
 
 #define SYS_inotify_init1      332
 #define SYS_preadv             333
 #define SYS_pwritev            334
+#define SYS_prlimit64          340
+#define SYS_name_to_handle_at  341
+#define SYS_open_by_handle_at  342
+#define SYS_clock_adjtime      343
+#define SYS_syncfs             344
+#define SYS_sendmmsg           345
+#define SYS_setns              346
+#define SYS_process_vm_readv   347
+#define SYS_process_vm_writev  348
 
 /* fixup legacy 16-bit junk */
 #undef SYS_lchown
 
 
 /* fixup legacy 32-bit-vs-lfs64 junk */
+#undef SYS_fcntl
 #undef SYS_getdents
 #undef SYS_ftruncate
 #undef SYS_truncate
 #undef SYS_lstat
 #undef SYS_statfs
 #undef SYS_fstatfs
+#define SYS_fcntl SYS_fcntl64
 #define SYS_getdents SYS_getdents64
 #define SYS_ftruncate SYS_ftruncate64
 #define SYS_truncate SYS_truncate64
 #define SYS_pread SYS_pread64
 #define SYS_pwrite SYS_pwrite64
 
+#define SYS_fadvise SYS_fadvise64_64
+
 #undef SYS_getrlimit
 #define SYS_getrlimit SYS_ugetrlimit