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