xref: /third_party/musl/arch/or1k/syscall_arch.h (revision 570af302)
1570af302Sopenharmony_ci#define __SYSCALL_LL_E(x) \
2570af302Sopenharmony_ci((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
3570af302Sopenharmony_ci((union { long long ll; long l[2]; }){ .ll = x }).l[1]
4570af302Sopenharmony_ci#define __SYSCALL_LL_O(x) __SYSCALL_LL_E((x))
5570af302Sopenharmony_ci
6570af302Sopenharmony_ci#define SYSCALL_MMAP2_UNIT 8192ULL
7570af302Sopenharmony_ci
8570af302Sopenharmony_cistatic __inline long __syscall0(long n)
9570af302Sopenharmony_ci{
10570af302Sopenharmony_ci	register unsigned long r11 __asm__("r11") = n;
11570af302Sopenharmony_ci	__asm__ __volatile__ ("l.sys 1"
12570af302Sopenharmony_ci			      : "=r"(r11)
13570af302Sopenharmony_ci			      : "r"(r11)
14570af302Sopenharmony_ci			      : "memory", "r3", "r4", "r5", "r6", "r7", "r8",
15570af302Sopenharmony_ci				"r12", "r13", "r15", "r17", "r19", "r21",
16570af302Sopenharmony_ci				"r23", "r25", "r27", "r29", "r31");
17570af302Sopenharmony_ci	return r11;
18570af302Sopenharmony_ci}
19570af302Sopenharmony_ci
20570af302Sopenharmony_cistatic inline long __syscall1(long n, long a)
21570af302Sopenharmony_ci{
22570af302Sopenharmony_ci	register unsigned long r11 __asm__("r11") = n;
23570af302Sopenharmony_ci	register unsigned long r3 __asm__("r3") = a;
24570af302Sopenharmony_ci	__asm__ __volatile__ ("l.sys 1"
25570af302Sopenharmony_ci			      : "=r"(r11)
26570af302Sopenharmony_ci			      : "r"(r11), "r"(r3)
27570af302Sopenharmony_ci			      : "memory", "r4", "r5", "r6", "r7", "r8",
28570af302Sopenharmony_ci				"r12", "r13", "r15", "r17", "r19", "r21",
29570af302Sopenharmony_ci				"r23", "r25", "r27", "r29", "r31");
30570af302Sopenharmony_ci	return r11;
31570af302Sopenharmony_ci}
32570af302Sopenharmony_ci
33570af302Sopenharmony_cistatic inline long __syscall2(long n, long a, long b)
34570af302Sopenharmony_ci{
35570af302Sopenharmony_ci	register unsigned long r11 __asm__("r11") = n;
36570af302Sopenharmony_ci	register unsigned long r3 __asm__("r3") = a;
37570af302Sopenharmony_ci	register unsigned long r4 __asm__("r4") = b;
38570af302Sopenharmony_ci	__asm__ __volatile__ ("l.sys 1"
39570af302Sopenharmony_ci			      : "=r"(r11)
40570af302Sopenharmony_ci			      : "r"(r11), "r"(r3), "r"(r4)
41570af302Sopenharmony_ci			      : "memory", "r5", "r6", "r7", "r8",
42570af302Sopenharmony_ci				"r12", "r13", "r15", "r17", "r19", "r21",
43570af302Sopenharmony_ci				"r23", "r25", "r27", "r29", "r31");
44570af302Sopenharmony_ci	return r11;
45570af302Sopenharmony_ci}
46570af302Sopenharmony_ci
47570af302Sopenharmony_cistatic inline long __syscall3(long n, long a, long b, long c)
48570af302Sopenharmony_ci{
49570af302Sopenharmony_ci	register unsigned long r11 __asm__("r11") = n;
50570af302Sopenharmony_ci	register unsigned long r3 __asm__("r3") = a;
51570af302Sopenharmony_ci	register unsigned long r4 __asm__("r4") = b;
52570af302Sopenharmony_ci	register unsigned long r5 __asm__("r5") = c;
53570af302Sopenharmony_ci	__asm__ __volatile__ ("l.sys 1"
54570af302Sopenharmony_ci			      : "=r"(r11)
55570af302Sopenharmony_ci			      : "r"(r11), "r"(r3), "r"(r4), "r"(r5)
56570af302Sopenharmony_ci			      : "memory", "r6", "r7", "r8",
57570af302Sopenharmony_ci				"r12", "r13", "r15", "r17", "r19", "r21",
58570af302Sopenharmony_ci				"r23", "r25", "r27", "r29", "r31");
59570af302Sopenharmony_ci	return r11;
60570af302Sopenharmony_ci}
61570af302Sopenharmony_ci
62570af302Sopenharmony_cistatic inline long __syscall4(long n, long a, long b, long c, long d)
63570af302Sopenharmony_ci{
64570af302Sopenharmony_ci	register unsigned long r11 __asm__("r11") = n;
65570af302Sopenharmony_ci	register unsigned long r3 __asm__("r3") = a;
66570af302Sopenharmony_ci	register unsigned long r4 __asm__("r4") = b;
67570af302Sopenharmony_ci	register unsigned long r5 __asm__("r5") = c;
68570af302Sopenharmony_ci	register unsigned long r6 __asm__("r6") = d;
69570af302Sopenharmony_ci	__asm__ __volatile__ ("l.sys 1"
70570af302Sopenharmony_ci			      : "=r"(r11)
71570af302Sopenharmony_ci			      : "r"(r11), "r"(r3), "r"(r4), "r"(r5), "r"(r6)
72570af302Sopenharmony_ci			      : "memory", "r7", "r8",
73570af302Sopenharmony_ci				"r12", "r13", "r15", "r17", "r19", "r21",
74570af302Sopenharmony_ci				"r23", "r25", "r27", "r29", "r31");
75570af302Sopenharmony_ci	return r11;
76570af302Sopenharmony_ci}
77570af302Sopenharmony_ci
78570af302Sopenharmony_cistatic inline long __syscall5(long n, long a, long b, long c, long d, long e)
79570af302Sopenharmony_ci{
80570af302Sopenharmony_ci	register unsigned long r11 __asm__("r11") = n;
81570af302Sopenharmony_ci	register unsigned long r3 __asm__("r3") = a;
82570af302Sopenharmony_ci	register unsigned long r4 __asm__("r4") = b;
83570af302Sopenharmony_ci	register unsigned long r5 __asm__("r5") = c;
84570af302Sopenharmony_ci	register unsigned long r6 __asm__("r6") = d;
85570af302Sopenharmony_ci	register unsigned long r7 __asm__("r7") = e;
86570af302Sopenharmony_ci	__asm__ __volatile__ ("l.sys 1"
87570af302Sopenharmony_ci			      : "=r"(r11)
88570af302Sopenharmony_ci			      : "r"(r11), "r"(r3), "r"(r4), "r"(r5), "r"(r6),
89570af302Sopenharmony_ci				"r"(r7)
90570af302Sopenharmony_ci			      : "memory", "r8",
91570af302Sopenharmony_ci				"r12", "r13", "r15", "r17", "r19", "r21",
92570af302Sopenharmony_ci				"r23", "r25", "r27", "r29", "r31");
93570af302Sopenharmony_ci	return r11;
94570af302Sopenharmony_ci}
95570af302Sopenharmony_ci
96570af302Sopenharmony_cistatic inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
97570af302Sopenharmony_ci{
98570af302Sopenharmony_ci	register unsigned long r11 __asm__("r11") = n;
99570af302Sopenharmony_ci	register unsigned long r3 __asm__("r3") = a;
100570af302Sopenharmony_ci	register unsigned long r4 __asm__("r4") = b;
101570af302Sopenharmony_ci	register unsigned long r5 __asm__("r5") = c;
102570af302Sopenharmony_ci	register unsigned long r6 __asm__("r6") = d;
103570af302Sopenharmony_ci	register unsigned long r7 __asm__("r7") = e;
104570af302Sopenharmony_ci	register unsigned long r8 __asm__("r8") = f;
105570af302Sopenharmony_ci	__asm__ __volatile__ ("l.sys 1"
106570af302Sopenharmony_ci			      : "=r"(r11)
107570af302Sopenharmony_ci			      : "r"(r11), "r"(r3), "r"(r4), "r"(r5), "r"(r6),
108570af302Sopenharmony_ci				"r"(r7), "r"(r8)
109570af302Sopenharmony_ci			      : "memory",
110570af302Sopenharmony_ci				"r12", "r13", "r15", "r17", "r19", "r21",
111570af302Sopenharmony_ci				"r23", "r25", "r27", "r29", "r31");
112570af302Sopenharmony_ci	return r11;
113570af302Sopenharmony_ci}
114570af302Sopenharmony_ci
115570af302Sopenharmony_ci#define IPC_64 0
116