]> git.proxmox.com Git - rustc.git/blob - vendor/rustix/src/imp/linux_raw/arch/outline/x86.s
New upstream version 1.64.0+dfsg1
[rustc.git] / vendor / rustix / src / imp / linux_raw / arch / outline / x86.s
1 // Assembly code for making x86 syscalls.
2 //
3 // On x86 we use the "fastcall" convention which passes the first two
4 // arguments in ecx and edx. Outline.rs reorders the arguments to put
5 // a1 and a2 in those registers so they we don't have to move them to
6 // set up the kernel convention.
7 //
8 // "fastcall" expects callee to pop argument stack space, so we use
9 // `ret imm` instructions to clean up the stack. We don't need callee
10 // cleanup per se, it just comes along with using "fastcall".
11
12 .file "x86.s"
13 .intel_syntax noprefix
14
15 .section .text.rustix_indirect_syscall0_nr_last_fastcall,"ax",@progbits
16 .p2align 4
17 .weak rustix_indirect_syscall0_nr_last_fastcall
18 .hidden rustix_indirect_syscall0_nr_last_fastcall
19 .type rustix_indirect_syscall0_nr_last_fastcall, @function
20 rustix_indirect_syscall0_nr_last_fastcall:
21 .cfi_startproc
22 mov eax,ecx
23 call edx
24 ret
25 .cfi_endproc
26 .size rustix_indirect_syscall0_nr_last_fastcall, .-rustix_indirect_syscall0_nr_last_fastcall
27
28 .section .text.rustix_indirect_syscall1_nr_last_fastcall,"ax",@progbits
29 .p2align 4
30 .weak rustix_indirect_syscall1_nr_last_fastcall
31 .hidden rustix_indirect_syscall1_nr_last_fastcall
32 .type rustix_indirect_syscall1_nr_last_fastcall, @function
33 rustix_indirect_syscall1_nr_last_fastcall:
34 .cfi_startproc
35 push ebx
36 .cfi_def_cfa_offset 8
37 .cfi_offset ebx, -8
38 mov ebx,ecx
39 mov eax,edx
40 call DWORD PTR [esp+0x8]
41 pop ebx
42 .cfi_def_cfa_offset 4
43 ret 0x4
44 .cfi_endproc
45 .size rustix_indirect_syscall1_nr_last_fastcall, .-rustix_indirect_syscall1_nr_last_fastcall
46
47 .section .text.rustix_indirect_syscall1_noreturn_nr_last_fastcall,"ax",@progbits
48 .p2align 4
49 .weak rustix_indirect_syscall1_noreturn_nr_last_fastcall
50 .hidden rustix_indirect_syscall1_noreturn_nr_last_fastcall
51 .type rustix_indirect_syscall1_noreturn_nr_last_fastcall, @function
52 rustix_indirect_syscall1_noreturn_nr_last_fastcall:
53 .cfi_startproc
54 mov ebx,ecx
55 mov eax,edx
56 call DWORD PTR [esp+0x4]
57 ud2
58 .cfi_endproc
59 .size rustix_indirect_syscall1_noreturn_nr_last_fastcall, .-rustix_indirect_syscall1_noreturn_nr_last_fastcall
60
61 .section .text.rustix_indirect_syscall2_nr_last_fastcall,"ax",@progbits
62 .p2align 4
63 .weak rustix_indirect_syscall2_nr_last_fastcall
64 .hidden rustix_indirect_syscall2_nr_last_fastcall
65 .type rustix_indirect_syscall2_nr_last_fastcall, @function
66 rustix_indirect_syscall2_nr_last_fastcall:
67 .cfi_startproc
68 push ebx
69 .cfi_def_cfa_offset 8
70 .cfi_offset ebx, -8
71 mov ebx,edx
72 mov eax,DWORD PTR [esp+0x8]
73 call DWORD PTR [esp+0xc]
74 pop ebx
75 .cfi_def_cfa_offset 4
76 ret 0x8
77 .cfi_endproc
78 .size rustix_indirect_syscall2_nr_last_fastcall, .-rustix_indirect_syscall2_nr_last_fastcall
79
80 .section .text.rustix_indirect_syscall3_nr_last_fastcall,"ax",@progbits
81 .p2align 4
82 .weak rustix_indirect_syscall3_nr_last_fastcall
83 .hidden rustix_indirect_syscall3_nr_last_fastcall
84 .type rustix_indirect_syscall3_nr_last_fastcall, @function
85 rustix_indirect_syscall3_nr_last_fastcall:
86 .cfi_startproc
87 push ebx
88 .cfi_def_cfa_offset 8
89 .cfi_offset ebx, -8
90 mov ebx,DWORD PTR [esp+0x8]
91 mov eax,DWORD PTR [esp+0xc]
92 call DWORD PTR [esp+0x10]
93 pop ebx
94 .cfi_def_cfa_offset 4
95 ret 0xc
96 .cfi_endproc
97 .size rustix_indirect_syscall3_nr_last_fastcall, .-rustix_indirect_syscall3_nr_last_fastcall
98
99 .section .text.rustix_indirect_syscall4_nr_last_fastcall,"ax",@progbits
100 .p2align 4
101 .weak rustix_indirect_syscall4_nr_last_fastcall
102 .hidden rustix_indirect_syscall4_nr_last_fastcall
103 .type rustix_indirect_syscall4_nr_last_fastcall, @function
104 rustix_indirect_syscall4_nr_last_fastcall:
105 .cfi_startproc
106 push ebx
107 .cfi_def_cfa_offset 8
108 push esi
109 .cfi_def_cfa_offset 12
110 .cfi_offset esi, -12
111 .cfi_offset ebx, -8
112 mov ebx,DWORD PTR [esp+0xc]
113 mov esi,DWORD PTR [esp+0x10]
114 mov eax,DWORD PTR [esp+0x14]
115 call DWORD PTR [esp+0x18]
116 pop esi
117 .cfi_def_cfa_offset 8
118 pop ebx
119 .cfi_def_cfa_offset 4
120 ret 0x10
121 .cfi_endproc
122 .size rustix_indirect_syscall4_nr_last_fastcall, .-rustix_indirect_syscall4_nr_last_fastcall
123
124 .section .text.rustix_indirect_syscall5_nr_last_fastcall,"ax",@progbits
125 .p2align 4
126 .weak rustix_indirect_syscall5_nr_last_fastcall
127 .hidden rustix_indirect_syscall5_nr_last_fastcall
128 .type rustix_indirect_syscall5_nr_last_fastcall, @function
129 rustix_indirect_syscall5_nr_last_fastcall:
130 .cfi_startproc
131 push ebx
132 .cfi_def_cfa_offset 8
133 push esi
134 .cfi_def_cfa_offset 12
135 push edi
136 .cfi_def_cfa_offset 16
137 .cfi_offset edi, -16
138 .cfi_offset esi, -12
139 .cfi_offset ebx, -8
140 mov ebx,DWORD PTR [esp+0x10]
141 mov esi,DWORD PTR [esp+0x14]
142 mov edi,DWORD PTR [esp+0x18]
143 mov eax,DWORD PTR [esp+0x1c]
144 call DWORD PTR [esp+0x20]
145 pop edi
146 .cfi_def_cfa_offset 12
147 pop esi
148 .cfi_def_cfa_offset 8
149 pop ebx
150 .cfi_def_cfa_offset 4
151 ret 0x14
152 .cfi_endproc
153 .size rustix_indirect_syscall5_nr_last_fastcall, .-rustix_indirect_syscall5_nr_last_fastcall
154
155 .section .text.rustix_indirect_syscall6_nr_last_fastcall,"ax",@progbits
156 .p2align 4
157 .weak rustix_indirect_syscall6_nr_last_fastcall
158 .hidden rustix_indirect_syscall6_nr_last_fastcall
159 .type rustix_indirect_syscall6_nr_last_fastcall, @function
160 rustix_indirect_syscall6_nr_last_fastcall:
161 .cfi_startproc
162 push ebx
163 .cfi_def_cfa_offset 8
164 push esi
165 .cfi_def_cfa_offset 12
166 push edi
167 .cfi_def_cfa_offset 16
168 push ebp
169 .cfi_def_cfa_offset 20
170 .cfi_offset ebp, -20
171 .cfi_offset edi, -16
172 .cfi_offset esi, -12
173 .cfi_offset ebx, -8
174 mov ebx,DWORD PTR [esp+0x14]
175 mov esi,DWORD PTR [esp+0x18]
176 mov edi,DWORD PTR [esp+0x1c]
177 mov ebp,DWORD PTR [esp+0x20]
178 mov eax,DWORD PTR [esp+0x24]
179 call DWORD PTR [esp+0x28]
180 pop ebp
181 .cfi_def_cfa_offset 16
182 pop edi
183 .cfi_def_cfa_offset 12
184 pop esi
185 .cfi_def_cfa_offset 8
186 pop ebx
187 .cfi_def_cfa_offset 4
188 ret 0x18
189 .cfi_endproc
190 .size rustix_indirect_syscall6_nr_last_fastcall, .-rustix_indirect_syscall6_nr_last_fastcall
191
192 .section .text.rustix_syscall0_nr_last_fastcall,"ax",@progbits
193 .p2align 4
194 .weak rustix_syscall0_nr_last_fastcall
195 .hidden rustix_syscall0_nr_last_fastcall
196 .type rustix_syscall0_nr_last_fastcall, @function
197 rustix_syscall0_nr_last_fastcall:
198 .cfi_startproc
199 mov eax,ecx
200 int 0x80
201 ret
202 .cfi_endproc
203 .size rustix_syscall0_nr_last_fastcall, .-rustix_syscall0_nr_last_fastcall
204
205 .section .text.rustix_syscall1_nr_last_fastcall,"ax",@progbits
206 .p2align 4
207 .weak rustix_syscall1_nr_last_fastcall
208 .hidden rustix_syscall1_nr_last_fastcall
209 .type rustix_syscall1_nr_last_fastcall, @function
210 rustix_syscall1_nr_last_fastcall:
211 .cfi_startproc
212 push ebx
213 .cfi_def_cfa_offset 8
214 .cfi_offset ebx, -8
215 mov eax,edx
216 mov ebx,ecx
217 int 0x80
218 pop ebx
219 .cfi_def_cfa_offset 4
220 ret
221 .cfi_endproc
222 .size rustix_syscall1_nr_last_fastcall, .-rustix_syscall1_nr_last_fastcall
223
224 .section .text.rustix_syscall1_noreturn_nr_last_fastcall,"ax",@progbits
225 .p2align 4
226 .weak rustix_syscall1_noreturn_nr_last_fastcall
227 .hidden rustix_syscall1_noreturn_nr_last_fastcall
228 .type rustix_syscall1_noreturn_nr_last_fastcall, @function
229 rustix_syscall1_noreturn_nr_last_fastcall:
230 .cfi_startproc
231 mov eax,edx
232 mov ebx,ecx
233 int 0x80
234 ud2
235 .cfi_endproc
236 .size rustix_syscall1_noreturn_nr_last_fastcall, .-rustix_syscall1_noreturn_nr_last_fastcall
237
238 .section .text.rustix_syscall2_nr_last_fastcall,"ax",@progbits
239 .p2align 4
240 .weak rustix_syscall2_nr_last_fastcall
241 .hidden rustix_syscall2_nr_last_fastcall
242 .type rustix_syscall2_nr_last_fastcall, @function
243 rustix_syscall2_nr_last_fastcall:
244 .cfi_startproc
245 push ebx
246 .cfi_def_cfa_offset 8
247 .cfi_offset ebx, -8
248 mov ebx,edx
249 mov eax,DWORD PTR [esp+0x8]
250 int 0x80
251 pop ebx
252 .cfi_def_cfa_offset 4
253 ret 0x4
254 .cfi_endproc
255 .size rustix_syscall2_nr_last_fastcall, .-rustix_syscall2_nr_last_fastcall
256
257 .section .text.rustix_syscall3_nr_last_fastcall,"ax",@progbits
258 .p2align 4
259 .weak rustix_syscall3_nr_last_fastcall
260 .hidden rustix_syscall3_nr_last_fastcall
261 .type rustix_syscall3_nr_last_fastcall, @function
262 rustix_syscall3_nr_last_fastcall:
263 .cfi_startproc
264 push ebx
265 .cfi_def_cfa_offset 8
266 .cfi_offset ebx, -8
267 mov ebx,DWORD PTR [esp+0x8]
268 mov eax,DWORD PTR [esp+0xc]
269 int 0x80
270 pop ebx
271 .cfi_def_cfa_offset 4
272 ret 0x8
273 .cfi_endproc
274 .size rustix_syscall3_nr_last_fastcall, .-rustix_syscall3_nr_last_fastcall
275
276 .section .text.rustix_syscall4_nr_last_fastcall,"ax",@progbits
277 .p2align 4
278 .weak rustix_syscall4_nr_last_fastcall
279 .hidden rustix_syscall4_nr_last_fastcall
280 .type rustix_syscall4_nr_last_fastcall, @function
281 rustix_syscall4_nr_last_fastcall:
282 .cfi_startproc
283 push ebx
284 .cfi_def_cfa_offset 8
285 push esi
286 .cfi_def_cfa_offset 12
287 .cfi_offset esi, -12
288 .cfi_offset ebx, -8
289 mov ebx,DWORD PTR [esp+0xc]
290 mov esi,DWORD PTR [esp+0x10]
291 mov eax,DWORD PTR [esp+0x14]
292 int 0x80
293 pop esi
294 .cfi_def_cfa_offset 8
295 pop ebx
296 .cfi_def_cfa_offset 4
297 ret 0xc
298 .cfi_endproc
299 .size rustix_syscall4_nr_last_fastcall, .-rustix_syscall4_nr_last_fastcall
300
301 .section .text.rustix_syscall5_nr_last_fastcall,"ax",@progbits
302 .p2align 4
303 .weak rustix_syscall5_nr_last_fastcall
304 .hidden rustix_syscall5_nr_last_fastcall
305 .type rustix_syscall5_nr_last_fastcall, @function
306 rustix_syscall5_nr_last_fastcall:
307 .cfi_startproc
308 push ebx
309 .cfi_def_cfa_offset 8
310 push edi
311 .cfi_def_cfa_offset 12
312 push esi
313 .cfi_def_cfa_offset 16
314 .cfi_offset esi, -16
315 .cfi_offset edi, -12
316 .cfi_offset ebx, -8
317 mov ebx,DWORD PTR [esp+0x10]
318 mov esi,DWORD PTR [esp+0x14]
319 mov edi,DWORD PTR [esp+0x18]
320 mov eax,DWORD PTR [esp+0x1c]
321 int 0x80
322 pop esi
323 .cfi_def_cfa_offset 12
324 pop edi
325 .cfi_def_cfa_offset 8
326 pop ebx
327 .cfi_def_cfa_offset 4
328 ret 0x10
329 .cfi_endproc
330 .size rustix_syscall5_nr_last_fastcall, .-rustix_syscall5_nr_last_fastcall
331
332 .section .text.rustix_syscall6_nr_last_fastcall,"ax",@progbits
333 .p2align 4
334 .weak rustix_syscall6_nr_last_fastcall
335 .hidden rustix_syscall6_nr_last_fastcall
336 .type rustix_syscall6_nr_last_fastcall, @function
337 rustix_syscall6_nr_last_fastcall:
338 .cfi_startproc
339 push ebp
340 .cfi_def_cfa_offset 8
341 push ebx
342 .cfi_def_cfa_offset 12
343 push edi
344 .cfi_def_cfa_offset 16
345 push esi
346 .cfi_def_cfa_offset 20
347 .cfi_offset esi, -20
348 .cfi_offset edi, -16
349 .cfi_offset ebx, -12
350 .cfi_offset ebp, -8
351 mov ebx,DWORD PTR [esp+0x14]
352 mov esi,DWORD PTR [esp+0x18]
353 mov edi,DWORD PTR [esp+0x1c]
354 mov ebp,DWORD PTR [esp+0x20]
355 mov eax,DWORD PTR [esp+0x24]
356 int 0x80
357 pop esi
358 .cfi_def_cfa_offset 16
359 pop edi
360 .cfi_def_cfa_offset 12
361 pop ebx
362 .cfi_def_cfa_offset 8
363 pop ebp
364 .cfi_def_cfa_offset 4
365 ret 0x14
366 .cfi_endproc
367 .size rustix_syscall6_nr_last_fastcall, .-rustix_syscall6_nr_last_fastcall
368
369 .section .text.rustix_int_0x80,"ax",@progbits
370 .p2align 4
371 .weak rustix_int_0x80
372 .hidden rustix_int_0x80
373 .type rustix_int_0x80, @function
374 rustix_int_0x80:
375 .cfi_startproc
376 int 0x80
377 ret
378 .cfi_endproc
379 .size rustix_int_0x80, .-rustix_int_0x80
380
381 .section .note.GNU-stack,"",@progbits