|
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