add arpa/ftp.h
[musl] / arch / microblaze / syscall_arch.h
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 #define __SYSCALL_SSLEN 8
7
8 #ifndef __clang__
9
10 static __inline long __syscall0(long n)
11 {
12         register unsigned long r12 __asm__("r12") = n;
13         register unsigned long r3 __asm__("r3");
14         __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3)
15                 : "r"(r12)
16                 : "memory");
17         return r3;
18 }
19
20 static inline long __syscall1(long n, long a)
21 {
22         register unsigned long r12 __asm__("r12") = n;
23         register unsigned long r3 __asm__("r3");
24         register unsigned long r5 __asm__("r5") = a;
25         __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3)
26                 : "r"(r12), "r"(r5)
27                 : "memory");
28         return r3;
29 }
30
31 static inline long __syscall2(long n, long a, long b)
32 {
33         register unsigned long r12 __asm__("r12") = n;
34         register unsigned long r3 __asm__("r3");
35         register unsigned long r5 __asm__("r5") = a;
36         register unsigned long r6 __asm__("r6") = b;
37         __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3)
38                 : "r"(r12), "r"(r5), "r"(r6)
39                 : "memory");
40         return r3;
41 }
42
43 static inline long __syscall3(long n, long a, long b, long c)
44 {
45         register unsigned long r12 __asm__("r12") = n;
46         register unsigned long r3 __asm__("r3");
47         register unsigned long r5 __asm__("r5") = a;
48         register unsigned long r6 __asm__("r6") = b;
49         register unsigned long r7 __asm__("r7") = c;
50         __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3)
51                 : "r"(r12), "r"(r5), "r"(r6), "r"(r7)
52                 : "memory");
53         return r3;
54 }
55
56 static inline long __syscall4(long n, long a, long b, long c, long d)
57 {
58         register unsigned long r12 __asm__("r12") = n;
59         register unsigned long r3 __asm__("r3");
60         register unsigned long r5 __asm__("r5") = a;
61         register unsigned long r6 __asm__("r6") = b;
62         register unsigned long r7 __asm__("r7") = c;
63         register unsigned long r8 __asm__("r8") = d;
64         __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3)
65                 : "r"(r12), "r"(r5), "r"(r6), "r"(r7), "r"(r8)
66                 : "memory");
67         return r3;
68 }
69
70 static inline long __syscall5(long n, long a, long b, long c, long d, long e)
71 {
72         register unsigned long r12 __asm__("r12") = n;
73         register unsigned long r3 __asm__("r3");
74         register unsigned long r5 __asm__("r5") = a;
75         register unsigned long r6 __asm__("r6") = b;
76         register unsigned long r7 __asm__("r7") = c;
77         register unsigned long r8 __asm__("r8") = d;
78         register unsigned long r9 __asm__("r9") = e;
79         __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3)
80                 : "r"(r12), "r"(r5), "r"(r6), "r"(r7), "r"(r8), "r"(r9)
81                 : "memory");
82         return r3;
83 }
84
85 static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
86 {
87         register unsigned long r12 __asm__("r12") = n;
88         register unsigned long r3 __asm__("r3");
89         register unsigned long r5 __asm__("r5") = a;
90         register unsigned long r6 __asm__("r6") = b;
91         register unsigned long r7 __asm__("r7") = c;
92         register unsigned long r8 __asm__("r8") = d;
93         register unsigned long r9 __asm__("r9") = e;
94         register unsigned long r10 __asm__("r10") = f;
95         __asm__ __volatile__ ("brki r14, 0x8" : "=r"(r3)
96                 : "r"(r12), "r"(r5), "r"(r6), "r"(r7), "r"(r8), "r"(r9), "r"(r10)
97                 : "memory");
98         return r3;
99 }
100
101 #else
102
103 static inline long __syscall0(long n)
104 {
105         return (__syscall)(n);
106 }
107
108 static inline long __syscall1(long n, long a)
109 {
110         return (__syscall)(n, a);
111 }
112
113 static inline long __syscall2(long n, long a, long b)
114 {
115         return (__syscall)(n, a, b);
116 }
117
118 static inline long __syscall3(long n, long a, long b, long c)
119 {
120         return (__syscall)(n, a, b, c);
121 }
122
123 static inline long __syscall4(long n, long a, long b, long c, long d)
124 {
125         return (__syscall)(n, a, b, c, d);
126 }
127
128 static inline long __syscall5(long n, long a, long b, long c, long d, long e)
129 {
130         return (__syscall)(n, a, b, c, d, e);
131 }
132
133 static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
134 {
135         return (__syscall)(n, a, b, c, d, e, f);
136 }
137
138 #endif