]> granicus.if.org Git - musl/commitdiff
internal/syscall.h: add syscall_arg_t macro
authorrofl0r <retnyg@gmx.net>
Tue, 7 Jan 2014 15:49:23 +0000 (16:49 +0100)
committerrofl0r <retnyg@gmx.net>
Sat, 22 Feb 2014 11:24:35 +0000 (12:24 +0100)
some 32-on-64 archs require that the actual syscall args be long long.
in that case syscall_arch.h can define syscall_arg_t to whatever it needs
and syscall.h picks it up.
all other archs just use long as usual.

src/internal/syscall.h

index f8d425af453fd2205c1958d21ca7b4fa72032f59..b203d6bbc8b62ea052b07254449d5eb29531129d 100644 (file)
@@ -1,12 +1,6 @@
 #ifndef _INTERNAL_SYSCALL_H
 #define _INTERNAL_SYSCALL_H
 
-#if defined(__PIC__) && (100*__GNUC__+__GNUC_MINOR__ >= 303)
-__attribute__((visibility("protected")))
-#endif
-long __syscall_ret(unsigned long), __syscall(long, ...),
-       __syscall_cp(long, long, long, long, long, long, long);
-
 #include <sys/syscall.h>
 #include "syscall_arch.h"
 
@@ -14,6 +8,17 @@ long __syscall_ret(unsigned long), __syscall(long, ...),
 #define __scc(X) (long) (X)
 #endif
 
+#ifndef syscall_arg_t
+#define syscall_arg_t long
+#endif
+
+#if defined(__PIC__) && (100*__GNUC__+__GNUC_MINOR__ >= 303)
+__attribute__((visibility("protected")))
+#endif
+long __syscall_ret(unsigned long), __syscall(syscall_arg_t, ...),
+       __syscall_cp(syscall_arg_t, syscall_arg_t, syscall_arg_t, syscall_arg_t,
+                    syscall_arg_t, syscall_arg_t, syscall_arg_t);
+
 #define __syscall1(n,a) __syscall1(n,__scc(a))
 #define __syscall2(n,a,b) __syscall2(n,__scc(a),__scc(b))
 #define __syscall3(n,a,b,c) __syscall3(n,__scc(a),__scc(b),__scc(c))