|
50 | 50 |
|
51 | 51 | #undef INTERNAL_SYSCALL_NCS
|
52 | 52 | #define INTERNAL_SYSCALL_NCS(name, nr, args...) \
|
53 |
| - internal_syscall##nr(__SYSCALL_STRING, name, args) |
| 53 | + _internal_syscall##nr(__SYSCALL_STRING, "p", name, args) |
54 | 54 |
|
55 |
| -#define internal_syscall0(string,name,dummy...) \ |
| 55 | +#define _internal_syscall0(string,nc,name,dummy...) \ |
56 | 56 | ({ \
|
57 |
| - register long int __g1 __asm__ ("g1") = (name); \ |
58 | 57 | register long __o0 __asm__ ("o0"); \
|
| 58 | + long int _name = (long int) (name); \ |
59 | 59 | __asm __volatile (string : "=r" (__o0) : \
|
60 |
| - "r" (__g1) : \ |
| 60 | + [scn] nc (_name) : \ |
61 | 61 | __SYSCALL_CLOBBERS); \
|
62 | 62 | __o0; \
|
63 | 63 | })
|
| 64 | +#define internal_syscall0(string,name,args...) \ |
| 65 | + _internal_syscall0(string, "i", name, args) |
64 | 66 |
|
65 |
| -#define internal_syscall1(string,name,arg1) \ |
| 67 | +#define _internal_syscall1(string,nc,name,arg1) \ |
66 | 68 | ({ \
|
67 | 69 | long int _arg1 = (long int) (arg1); \
|
68 |
| - register long int __g1 __asm__("g1") = (name); \ |
| 70 | + long int _name = (long int) (name); \ |
69 | 71 | register long int __o0 __asm__ ("o0") = _arg1; \
|
70 |
| - __asm __volatile (string : "=r" (__o0) : \ |
71 |
| - "r" (__g1), "0" (__o0) : \ |
| 72 | + __asm __volatile (string : "+r" (__o0) : \ |
| 73 | + [scn] nc (_name) : \ |
72 | 74 | __SYSCALL_CLOBBERS); \
|
73 | 75 | __o0; \
|
74 | 76 | })
|
| 77 | +#define internal_syscall1(string,name,args...) \ |
| 78 | + _internal_syscall1(string, "i", name, args) |
75 | 79 |
|
76 |
| -#define internal_syscall2(string,name,arg1,arg2) \ |
| 80 | +#define _internal_syscall2(string,nc,name,arg1,arg2) \ |
77 | 81 | ({ \
|
78 | 82 | long int _arg1 = (long int) (arg1); \
|
79 | 83 | long int _arg2 = (long int) (arg2); \
|
80 |
| - register long int __g1 __asm__("g1") = (name); \ |
| 84 | + long int _name = (long int) (name); \ |
81 | 85 | register long int __o0 __asm__ ("o0") = _arg1; \
|
82 | 86 | register long int __o1 __asm__ ("o1") = _arg2; \
|
83 |
| - __asm __volatile (string : "=r" (__o0) : \ |
84 |
| - "r" (__g1), "0" (__o0), "r" (__o1) : \ |
| 87 | + __asm __volatile (string : "+r" (__o0) : \ |
| 88 | + [scn] nc (_name), "r" (__o1) : \ |
85 | 89 | __SYSCALL_CLOBBERS); \
|
86 | 90 | __o0; \
|
87 | 91 | })
|
| 92 | +#define internal_syscall2(string,name,args...) \ |
| 93 | + _internal_syscall2(string, "i", name, args) |
88 | 94 |
|
89 |
| -#define internal_syscall3(string,name,arg1,arg2,arg3) \ |
| 95 | +#define _internal_syscall3(string,nc,name,arg1,arg2,arg3) \ |
90 | 96 | ({ \
|
91 | 97 | long int _arg1 = (long int) (arg1); \
|
92 | 98 | long int _arg2 = (long int) (arg2); \
|
93 | 99 | long int _arg3 = (long int) (arg3); \
|
94 |
| - register long int __g1 __asm__("g1") = (name); \ |
| 100 | + long int _name = (long int) (name); \ |
95 | 101 | register long int __o0 __asm__ ("o0") = _arg1; \
|
96 | 102 | register long int __o1 __asm__ ("o1") = _arg2; \
|
97 | 103 | register long int __o2 __asm__ ("o2") = _arg3; \
|
98 |
| - __asm __volatile (string : "=r" (__o0) : \ |
99 |
| - "r" (__g1), "0" (__o0), "r" (__o1), \ |
| 104 | + __asm __volatile (string : "+r" (__o0) : \ |
| 105 | + [scn] nc (_name), "r" (__o1), \ |
100 | 106 | "r" (__o2) : \
|
101 | 107 | __SYSCALL_CLOBBERS); \
|
102 | 108 | __o0; \
|
103 | 109 | })
|
| 110 | +#define internal_syscall3(string,name,args...) \ |
| 111 | + _internal_syscall3(string, "i", name, args) |
104 | 112 |
|
105 |
| -#define internal_syscall4(string,name,arg1,arg2,arg3,arg4) \ |
| 113 | +#define _internal_syscall4(string,nc,name,arg1,arg2,arg3,arg4) \ |
106 | 114 | ({ \
|
107 | 115 | long int _arg1 = (long int) (arg1); \
|
108 | 116 | long int _arg2 = (long int) (arg2); \
|
109 | 117 | long int _arg3 = (long int) (arg3); \
|
110 | 118 | long int _arg4 = (long int) (arg4); \
|
111 |
| - register long int __g1 __asm__("g1") = (name); \ |
| 119 | + long int _name = (long int) (name); \ |
112 | 120 | register long int __o0 __asm__ ("o0") = _arg1; \
|
113 | 121 | register long int __o1 __asm__ ("o1") = _arg2; \
|
114 | 122 | register long int __o2 __asm__ ("o2") = _arg3; \
|
115 | 123 | register long int __o3 __asm__ ("o3") = _arg4; \
|
116 |
| - __asm __volatile (string : "=r" (__o0) : \ |
117 |
| - "r" (__g1), "0" (__o0), "r" (__o1), \ |
| 124 | + __asm __volatile (string : "+r" (__o0) : \ |
| 125 | + [scn] nc (_name), "r" (__o1), \ |
118 | 126 | "r" (__o2), "r" (__o3) : \
|
119 | 127 | __SYSCALL_CLOBBERS); \
|
120 | 128 | __o0; \
|
121 | 129 | })
|
| 130 | +#define internal_syscall4(string,name,args...) \ |
| 131 | + _internal_syscall4(string, "i", name, args) |
122 | 132 |
|
123 |
| -#define internal_syscall5(string,name,arg1,arg2,arg3,arg4,arg5) \ |
| 133 | +#define _internal_syscall5(string,nc,name,arg1,arg2,arg3,arg4,arg5) \ |
124 | 134 | ({ \
|
125 | 135 | long int _arg1 = (long int) (arg1); \
|
126 | 136 | long int _arg2 = (long int) (arg2); \
|
127 | 137 | long int _arg3 = (long int) (arg3); \
|
128 | 138 | long int _arg4 = (long int) (arg4); \
|
129 | 139 | long int _arg5 = (long int) (arg5); \
|
130 |
| - register long int __g1 __asm__("g1") = (name); \ |
| 140 | + long int _name = (long int) (name); \ |
131 | 141 | register long int __o0 __asm__ ("o0") = _arg1; \
|
132 | 142 | register long int __o1 __asm__ ("o1") = _arg2; \
|
133 | 143 | register long int __o2 __asm__ ("o2") = _arg3; \
|
134 | 144 | register long int __o3 __asm__ ("o3") = _arg4; \
|
135 | 145 | register long int __o4 __asm__ ("o4") = _arg5; \
|
136 |
| - __asm __volatile (string : "=r" (__o0) : \ |
137 |
| - "r" (__g1), "0" (__o0), "r" (__o1), \ |
| 146 | + __asm __volatile (string : "+r" (__o0) : \ |
| 147 | + [scn] nc (_name), "r" (__o1), \ |
138 | 148 | "r" (__o2), "r" (__o3), "r" (__o4) : \
|
139 | 149 | __SYSCALL_CLOBBERS); \
|
140 | 150 | __o0; \
|
141 | 151 | })
|
| 152 | +#define internal_syscall5(string,name,args...) \ |
| 153 | + _internal_syscall5(string, "i", name, args) |
142 | 154 |
|
143 |
| -#define internal_syscall6(string,name,arg1,arg2,arg3,arg4,arg5,arg6) \ |
| 155 | +#define _internal_syscall6(string,nc,name,arg1,arg2,arg3,arg4,arg5,arg6)\ |
144 | 156 | ({ \
|
145 | 157 | long int _arg1 = (long int) (arg1); \
|
146 | 158 | long int _arg2 = (long int) (arg2); \
|
147 | 159 | long int _arg3 = (long int) (arg3); \
|
148 | 160 | long int _arg4 = (long int) (arg4); \
|
149 | 161 | long int _arg5 = (long int) (arg5); \
|
150 | 162 | long int _arg6 = (long int) (arg6); \
|
151 |
| - register long int __g1 __asm__("g1") = (name); \ |
| 163 | + long int _name = (long int) (name); \ |
152 | 164 | register long int __o0 __asm__ ("o0") = _arg1; \
|
153 | 165 | register long int __o1 __asm__ ("o1") = _arg2; \
|
154 | 166 | register long int __o2 __asm__ ("o2") = _arg3; \
|
155 | 167 | register long int __o3 __asm__ ("o3") = _arg4; \
|
156 | 168 | register long int __o4 __asm__ ("o4") = _arg5; \
|
157 | 169 | register long int __o5 __asm__ ("o5") = _arg6; \
|
158 |
| - __asm __volatile (string : "=r" (__o0) : \ |
159 |
| - "r" (__g1), "0" (__o0), "r" (__o1), \ |
| 170 | + __asm __volatile (string : "+r" (__o0) : \ |
| 171 | + [scn] nc (_name), "r" (__o1), \ |
160 | 172 | "r" (__o2), "r" (__o3), "r" (__o4), \
|
161 | 173 | "r" (__o5) : \
|
162 | 174 | __SYSCALL_CLOBBERS); \
|
163 | 175 | __o0; \
|
164 | 176 | })
|
| 177 | +#define internal_syscall6(string,name,args...) \ |
| 178 | + _internal_syscall6(string, "i", name, args) |
165 | 179 |
|
166 | 180 | #define INLINE_CLONE_SYSCALL(arg1,arg2,arg3,arg4,arg5) \
|
167 | 181 | ({ \
|
|
170 | 184 | long int _arg3 = (long int) (arg3); \
|
171 | 185 | long int _arg4 = (long int) (arg4); \
|
172 | 186 | long int _arg5 = (long int) (arg5); \
|
| 187 | + long int _name = __NR_clone; \ |
173 | 188 | register long int __o0 __asm__ ("o0") = _arg1; \
|
174 | 189 | register long int __o1 __asm__ ("o1") = _arg2; \
|
175 | 190 | register long int __o2 __asm__ ("o2") = _arg3; \
|
176 | 191 | register long int __o3 __asm__ ("o3") = _arg4; \
|
177 | 192 | register long int __o4 __asm__ ("o4") = _arg5; \
|
178 |
| - register long int __g1 __asm__ ("g1") = __NR_clone; \ |
179 | 193 | __asm __volatile (__SYSCALL_STRING : \
|
180 | 194 | "=r" (__o0), "=r" (__o1) : \
|
181 |
| - "r" (__g1), "0" (__o0), "1" (__o1), \ |
| 195 | + [scn] "i" (_name), "0" (__o0), "1" (__o1), \ |
182 | 196 | "r" (__o2), "r" (__o3), "r" (__o4) : \
|
183 | 197 | __SYSCALL_CLOBBERS); \
|
184 | 198 | if (__glibc_unlikely ((unsigned long int) (__o0) > -4096UL)) \
|
|
0 commit comments