1#define __SYSCALL_LL_E(x) \ 2((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ 3((union { long long ll; long l[2]; }){ .ll = x }).l[1] 4#define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x)) 5 6#ifndef __clang__ 7 8static __inline long __syscall0(long n) 9{ 10 register unsigned long r12 __asm__("r12") = n; 11 register unsigned long r3 __asm__("r3"); 12 __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3) 13 : "r"(r12) 14 : "memory", "r4"); 15 return r3; 16} 17 18static inline long __syscall1(long n, long a) 19{ 20 register unsigned long r12 __asm__("r12") = n; 21 register unsigned long r3 __asm__("r3"); 22 register unsigned long r5 __asm__("r5") = a; 23 __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3) 24 : "r"(r12), "r"(r5) 25 : "memory", "r4"); 26 return r3; 27} 28 29static inline long __syscall2(long n, long a, long b) 30{ 31 register unsigned long r12 __asm__("r12") = n; 32 register unsigned long r3 __asm__("r3"); 33 register unsigned long r5 __asm__("r5") = a; 34 register unsigned long r6 __asm__("r6") = b; 35 __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3) 36 : "r"(r12), "r"(r5), "r"(r6) 37 : "memory", "r4"); 38 return r3; 39} 40 41static inline long __syscall3(long n, long a, long b, long c) 42{ 43 register unsigned long r12 __asm__("r12") = n; 44 register unsigned long r3 __asm__("r3"); 45 register unsigned long r5 __asm__("r5") = a; 46 register unsigned long r6 __asm__("r6") = b; 47 register unsigned long r7 __asm__("r7") = c; 48 __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3) 49 : "r"(r12), "r"(r5), "r"(r6), "r"(r7) 50 : "memory", "r4"); 51 return r3; 52} 53 54static inline long __syscall4(long n, long a, long b, long c, long d) 55{ 56 register unsigned long r12 __asm__("r12") = n; 57 register unsigned long r3 __asm__("r3"); 58 register unsigned long r5 __asm__("r5") = a; 59 register unsigned long r6 __asm__("r6") = b; 60 register unsigned long r7 __asm__("r7") = c; 61 register unsigned long r8 __asm__("r8") = d; 62 __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3) 63 : "r"(r12), "r"(r5), "r"(r6), "r"(r7), "r"(r8) 64 : "memory", "r4"); 65 return r3; 66} 67 68static inline long __syscall5(long n, long a, long b, long c, long d, long e) 69{ 70 register unsigned long r12 __asm__("r12") = n; 71 register unsigned long r3 __asm__("r3"); 72 register unsigned long r5 __asm__("r5") = a; 73 register unsigned long r6 __asm__("r6") = b; 74 register unsigned long r7 __asm__("r7") = c; 75 register unsigned long r8 __asm__("r8") = d; 76 register unsigned long r9 __asm__("r9") = e; 77 __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3) 78 : "r"(r12), "r"(r5), "r"(r6), "r"(r7), "r"(r8), "r"(r9) 79 : "memory", "r4"); 80 return r3; 81} 82 83static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) 84{ 85 register unsigned long r12 __asm__("r12") = n; 86 register unsigned long r3 __asm__("r3"); 87 register unsigned long r5 __asm__("r5") = a; 88 register unsigned long r6 __asm__("r6") = b; 89 register unsigned long r7 __asm__("r7") = c; 90 register unsigned long r8 __asm__("r8") = d; 91 register unsigned long r9 __asm__("r9") = e; 92 register unsigned long r10 __asm__("r10") = f; 93 __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3) 94 : "r"(r12), "r"(r5), "r"(r6), "r"(r7), "r"(r8), "r"(r9), "r"(r10) 95 : "memory", "r4"); 96 return r3; 97} 98 99#else 100 101#undef SYSCALL_NO_INLINE 102#define SYSCALL_NO_INLINE 103 104#endif 105