master
 1#define __SYSCALL_LL_E(x) (x)
 2#define __SYSCALL_LL_O(x) (x)
 3
 4#define __asm_syscall(ret, ...) do { \
 5	__asm__ __volatile__ ("svc 0\n" \
 6	: ret : __VA_ARGS__ : "memory"); \
 7	return r2; \
 8	} while (0)
 9
10static inline long __syscall0(long n)
11{
12	register long r1 __asm__("r1") = n;
13	register long r2 __asm__("r2");
14	__asm_syscall("=r"(r2), "r"(r1));
15}
16
17static inline long __syscall1(long n, long a)
18{
19	register long r1 __asm__("r1") = n;
20	register long r2 __asm__("r2") = a;
21	__asm_syscall("+r"(r2), "r"(r1));
22}
23
24static inline long __syscall2(long n, long a, long b)
25{
26	register long r1 __asm__("r1") = n;
27	register long r2 __asm__("r2") = a;
28	register long r3 __asm__("r3") = b;
29	__asm_syscall("+r"(r2), "r"(r1), "r"(r3));
30}
31
32static inline long __syscall3(long n, long a, long b, long c)
33{
34	register long r1 __asm__("r1") = n;
35	register long r2 __asm__("r2") = a;
36	register long r3 __asm__("r3") = b;
37	register long r4 __asm__("r4") = c;
38	__asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4));
39}
40
41static inline long __syscall4(long n, long a, long b, long c, long d)
42{
43	register long r1 __asm__("r1") = n;
44	register long r2 __asm__("r2") = a;
45	register long r3 __asm__("r3") = b;
46	register long r4 __asm__("r4") = c;
47	register long r5 __asm__("r5") = d;
48	__asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4), "r"(r5));
49}
50
51static inline long __syscall5(long n, long a, long b, long c, long d, long e)
52{
53	register long r1 __asm__("r1") = n;
54	register long r2 __asm__("r2") = a;
55	register long r3 __asm__("r3") = b;
56	register long r4 __asm__("r4") = c;
57	register long r5 __asm__("r5") = d;
58	register long r6 __asm__("r6") = e;
59	__asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4), "r"(r5), "r"(r6));
60}
61
62static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
63{
64	if (n == SYS_mmap) return __syscall1(n, (long)(long[]){a,b,c,d,e,f});
65
66	register long r1 __asm__("r1") = n;
67	register long r2 __asm__("r2") = a;
68	register long r3 __asm__("r3") = b;
69	register long r4 __asm__("r4") = c;
70	register long r5 __asm__("r5") = d;
71	register long r6 __asm__("r6") = e;
72	register long r7 __asm__("r7") = f;
73	__asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7));
74}