1570af302Sopenharmony_ci#define __SYSCALL_LL_E(x) (x)
2570af302Sopenharmony_ci#define __SYSCALL_LL_O(x) (x)
3570af302Sopenharmony_ci
4570af302Sopenharmony_ci#define __asm_syscall(ret, ...) do { \
5570af302Sopenharmony_ci	__asm__ __volatile__ ("svc 0\n" \
6570af302Sopenharmony_ci	: ret : __VA_ARGS__ : "memory"); \
7570af302Sopenharmony_ci	return r2; \
8570af302Sopenharmony_ci	} while (0)
9570af302Sopenharmony_ci
10570af302Sopenharmony_cistatic inline long __syscall0(long n)
11570af302Sopenharmony_ci{
12570af302Sopenharmony_ci	register long r1 __asm__("r1") = n;
13570af302Sopenharmony_ci	register long r2 __asm__("r2");
14570af302Sopenharmony_ci	__asm_syscall("=r"(r2), "r"(r1));
15570af302Sopenharmony_ci}
16570af302Sopenharmony_ci
17570af302Sopenharmony_cistatic inline long __syscall1(long n, long a)
18570af302Sopenharmony_ci{
19570af302Sopenharmony_ci	register long r1 __asm__("r1") = n;
20570af302Sopenharmony_ci	register long r2 __asm__("r2") = a;
21570af302Sopenharmony_ci	__asm_syscall("+r"(r2), "r"(r1));
22570af302Sopenharmony_ci}
23570af302Sopenharmony_ci
24570af302Sopenharmony_cistatic inline long __syscall2(long n, long a, long b)
25570af302Sopenharmony_ci{
26570af302Sopenharmony_ci	register long r1 __asm__("r1") = n;
27570af302Sopenharmony_ci	register long r2 __asm__("r2") = a;
28570af302Sopenharmony_ci	register long r3 __asm__("r3") = b;
29570af302Sopenharmony_ci	__asm_syscall("+r"(r2), "r"(r1), "r"(r3));
30570af302Sopenharmony_ci}
31570af302Sopenharmony_ci
32570af302Sopenharmony_cistatic inline long __syscall3(long n, long a, long b, long c)
33570af302Sopenharmony_ci{
34570af302Sopenharmony_ci	register long r1 __asm__("r1") = n;
35570af302Sopenharmony_ci	register long r2 __asm__("r2") = a;
36570af302Sopenharmony_ci	register long r3 __asm__("r3") = b;
37570af302Sopenharmony_ci	register long r4 __asm__("r4") = c;
38570af302Sopenharmony_ci	__asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4));
39570af302Sopenharmony_ci}
40570af302Sopenharmony_ci
41570af302Sopenharmony_cistatic inline long __syscall4(long n, long a, long b, long c, long d)
42570af302Sopenharmony_ci{
43570af302Sopenharmony_ci	register long r1 __asm__("r1") = n;
44570af302Sopenharmony_ci	register long r2 __asm__("r2") = a;
45570af302Sopenharmony_ci	register long r3 __asm__("r3") = b;
46570af302Sopenharmony_ci	register long r4 __asm__("r4") = c;
47570af302Sopenharmony_ci	register long r5 __asm__("r5") = d;
48570af302Sopenharmony_ci	__asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4), "r"(r5));
49570af302Sopenharmony_ci}
50570af302Sopenharmony_ci
51570af302Sopenharmony_cistatic inline long __syscall5(long n, long a, long b, long c, long d, long e)
52570af302Sopenharmony_ci{
53570af302Sopenharmony_ci	register long r1 __asm__("r1") = n;
54570af302Sopenharmony_ci	register long r2 __asm__("r2") = a;
55570af302Sopenharmony_ci	register long r3 __asm__("r3") = b;
56570af302Sopenharmony_ci	register long r4 __asm__("r4") = c;
57570af302Sopenharmony_ci	register long r5 __asm__("r5") = d;
58570af302Sopenharmony_ci	register long r6 __asm__("r6") = e;
59570af302Sopenharmony_ci	__asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4), "r"(r5), "r"(r6));
60570af302Sopenharmony_ci}
61570af302Sopenharmony_ci
62570af302Sopenharmony_cistatic inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
63570af302Sopenharmony_ci{
64570af302Sopenharmony_ci	if (n == SYS_mmap) return __syscall1(n, (long)(long[]){a,b,c,d,e,f});
65570af302Sopenharmony_ci
66570af302Sopenharmony_ci	register long r1 __asm__("r1") = n;
67570af302Sopenharmony_ci	register long r2 __asm__("r2") = a;
68570af302Sopenharmony_ci	register long r3 __asm__("r3") = b;
69570af302Sopenharmony_ci	register long r4 __asm__("r4") = c;
70570af302Sopenharmony_ci	register long r5 __asm__("r5") = d;
71570af302Sopenharmony_ci	register long r6 __asm__("r6") = e;
72570af302Sopenharmony_ci	register long r7 __asm__("r7") = f;
73570af302Sopenharmony_ci	__asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7));
74570af302Sopenharmony_ci}
75