X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=arch%2Farm%2Fsyscall_arch.h;h=c1c946661afafac0d25e16b26d87c2ad0f87c097;hb=962cbfbf864a50aaf88bc59e5c7cf0b664ff599a;hp=14ca852533d14fdaf17342aff04fd49b14436a64;hpb=5e3c243d8df6b1504db9c1e6442d47ed38937e02;p=musl diff --git a/arch/arm/syscall_arch.h b/arch/arm/syscall_arch.h index 14ca8525..c1c94666 100644 --- a/arch/arm/syscall_arch.h +++ b/arch/arm/syscall_arch.h @@ -3,9 +3,7 @@ ((union { long long ll; long l[2]; }){ .ll = x }).l[1] #define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x)) -#define __SYSCALL_SSLEN 8 - -#ifndef __clang__ +long (__syscall)(long, ...); #define __asm_syscall(...) do { \ __asm__ __volatile__ ( "svc 0" \ @@ -24,7 +22,7 @@ static inline long __syscall1(long n, long a) { register long r7 __asm__("r7") = n; register long r0 __asm__("r0") = a; - __asm_syscall("r"(r7), "r"(r0)); + __asm_syscall("r"(r7), "0"(r0)); } static inline long __syscall2(long n, long a, long b) @@ -32,7 +30,7 @@ static inline long __syscall2(long n, long a, long b) register long r7 __asm__("r7") = n; register long r0 __asm__("r0") = a; register long r1 __asm__("r1") = b; - __asm_syscall("r"(r7), "r"(r0), "r"(r1)); + __asm_syscall("r"(r7), "0"(r0), "r"(r1)); } static inline long __syscall3(long n, long a, long b, long c) @@ -41,7 +39,7 @@ static inline long __syscall3(long n, long a, long b, long c) register long r0 __asm__("r0") = a; register long r1 __asm__("r1") = b; register long r2 __asm__("r2") = c; - __asm_syscall("r"(r7), "r"(r0), "r"(r1), "r"(r2)); + __asm_syscall("r"(r7), "0"(r0), "r"(r1), "r"(r2)); } static inline long __syscall4(long n, long a, long b, long c, long d) @@ -51,44 +49,28 @@ static inline long __syscall4(long n, long a, long b, long c, long d) register long r1 __asm__("r1") = b; register long r2 __asm__("r2") = c; register long r3 __asm__("r3") = d; - __asm_syscall("r"(r7), "r"(r0), "r"(r1), "r"(r2), "r"(r3)); + __asm_syscall("r"(r7), "0"(r0), "r"(r1), "r"(r2), "r"(r3)); } -#else - -static inline long __syscall0(long n) -{ - return (__syscall)(n); -} - -static inline long __syscall1(long n, long a) -{ - return (__syscall)(n, a); -} - -static inline long __syscall2(long n, long a, long b) -{ - return (__syscall)(n, a, b); -} - -static inline long __syscall3(long n, long a, long b, long c) -{ - return (__syscall)(n, a, b, c); -} - -static inline long __syscall4(long n, long a, long b, long c, long d) -{ - return (__syscall)(n, a, b, c, d); -} - -#endif - static inline long __syscall5(long n, long a, long b, long c, long d, long e) { - return (__syscall)(n, a, b, c, d, e); + register long r7 __asm__("r7") = n; + register long r0 __asm__("r0") = a; + register long r1 __asm__("r1") = b; + register long r2 __asm__("r2") = c; + register long r3 __asm__("r3") = d; + register long r4 __asm__("r4") = e; + __asm_syscall("r"(r7), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4)); } static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) { - return (__syscall)(n, a, b, c, d, e, f); + register long r7 __asm__("r7") = n; + register long r0 __asm__("r0") = a; + register long r1 __asm__("r1") = b; + register long r2 __asm__("r2") = c; + register long r3 __asm__("r3") = d; + register long r4 __asm__("r4") = e; + register long r5 __asm__("r5") = f; + __asm_syscall("r"(r7), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4), "r"(r5)); }