// Assembly code for making x86 syscalls. // // On x86 we use the "fastcall" convention which passes the first two // arguments in ecx and edx. Outline.rs reorders the arguments to put // a1 and a2 in those registers so they we don't have to move them to // set up the kernel convention. // // "fastcall" expects callee to pop argument stack space, so we use // `ret imm` instructions to clean up the stack. We don't need callee // cleanup per se, it just comes along with using "fastcall". .file "x86.s" .intel_syntax noprefix .section .text.rustix_indirect_syscall0_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_indirect_syscall0_nr_last_fastcall .hidden rustix_indirect_syscall0_nr_last_fastcall .type rustix_indirect_syscall0_nr_last_fastcall, @function rustix_indirect_syscall0_nr_last_fastcall: .cfi_startproc mov eax,ecx call edx ret .cfi_endproc .size rustix_indirect_syscall0_nr_last_fastcall, .-rustix_indirect_syscall0_nr_last_fastcall .section .text.rustix_indirect_syscall1_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_indirect_syscall1_nr_last_fastcall .hidden rustix_indirect_syscall1_nr_last_fastcall .type rustix_indirect_syscall1_nr_last_fastcall, @function rustix_indirect_syscall1_nr_last_fastcall: .cfi_startproc push ebx .cfi_def_cfa_offset 8 .cfi_offset ebx, -8 mov ebx,ecx mov eax,edx call DWORD PTR [esp+0x8] pop ebx .cfi_def_cfa_offset 4 ret 0x4 .cfi_endproc .size rustix_indirect_syscall1_nr_last_fastcall, .-rustix_indirect_syscall1_nr_last_fastcall .section .text.rustix_indirect_syscall1_noreturn_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_indirect_syscall1_noreturn_nr_last_fastcall .hidden rustix_indirect_syscall1_noreturn_nr_last_fastcall .type rustix_indirect_syscall1_noreturn_nr_last_fastcall, @function rustix_indirect_syscall1_noreturn_nr_last_fastcall: .cfi_startproc mov ebx,ecx mov eax,edx call DWORD PTR [esp+0x4] ud2 .cfi_endproc .size rustix_indirect_syscall1_noreturn_nr_last_fastcall, .-rustix_indirect_syscall1_noreturn_nr_last_fastcall .section .text.rustix_indirect_syscall2_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_indirect_syscall2_nr_last_fastcall .hidden rustix_indirect_syscall2_nr_last_fastcall .type rustix_indirect_syscall2_nr_last_fastcall, @function rustix_indirect_syscall2_nr_last_fastcall: .cfi_startproc push ebx .cfi_def_cfa_offset 8 .cfi_offset ebx, -8 mov ebx,edx mov eax,DWORD PTR [esp+0x8] call DWORD PTR [esp+0xc] pop ebx .cfi_def_cfa_offset 4 ret 0x8 .cfi_endproc .size rustix_indirect_syscall2_nr_last_fastcall, .-rustix_indirect_syscall2_nr_last_fastcall .section .text.rustix_indirect_syscall3_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_indirect_syscall3_nr_last_fastcall .hidden rustix_indirect_syscall3_nr_last_fastcall .type rustix_indirect_syscall3_nr_last_fastcall, @function rustix_indirect_syscall3_nr_last_fastcall: .cfi_startproc push ebx .cfi_def_cfa_offset 8 .cfi_offset ebx, -8 mov ebx,DWORD PTR [esp+0x8] mov eax,DWORD PTR [esp+0xc] call DWORD PTR [esp+0x10] pop ebx .cfi_def_cfa_offset 4 ret 0xc .cfi_endproc .size rustix_indirect_syscall3_nr_last_fastcall, .-rustix_indirect_syscall3_nr_last_fastcall .section .text.rustix_indirect_syscall4_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_indirect_syscall4_nr_last_fastcall .hidden rustix_indirect_syscall4_nr_last_fastcall .type rustix_indirect_syscall4_nr_last_fastcall, @function rustix_indirect_syscall4_nr_last_fastcall: .cfi_startproc push ebx .cfi_def_cfa_offset 8 push esi .cfi_def_cfa_offset 12 .cfi_offset esi, -12 .cfi_offset ebx, -8 mov ebx,DWORD PTR [esp+0xc] mov esi,DWORD PTR [esp+0x10] mov eax,DWORD PTR [esp+0x14] call DWORD PTR [esp+0x18] pop esi .cfi_def_cfa_offset 8 pop ebx .cfi_def_cfa_offset 4 ret 0x10 .cfi_endproc .size rustix_indirect_syscall4_nr_last_fastcall, .-rustix_indirect_syscall4_nr_last_fastcall .section .text.rustix_indirect_syscall5_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_indirect_syscall5_nr_last_fastcall .hidden rustix_indirect_syscall5_nr_last_fastcall .type rustix_indirect_syscall5_nr_last_fastcall, @function rustix_indirect_syscall5_nr_last_fastcall: .cfi_startproc push ebx .cfi_def_cfa_offset 8 push esi .cfi_def_cfa_offset 12 push edi .cfi_def_cfa_offset 16 .cfi_offset edi, -16 .cfi_offset esi, -12 .cfi_offset ebx, -8 mov ebx,DWORD PTR [esp+0x10] mov esi,DWORD PTR [esp+0x14] mov edi,DWORD PTR [esp+0x18] mov eax,DWORD PTR [esp+0x1c] call DWORD PTR [esp+0x20] pop edi .cfi_def_cfa_offset 12 pop esi .cfi_def_cfa_offset 8 pop ebx .cfi_def_cfa_offset 4 ret 0x14 .cfi_endproc .size rustix_indirect_syscall5_nr_last_fastcall, .-rustix_indirect_syscall5_nr_last_fastcall .section .text.rustix_indirect_syscall6_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_indirect_syscall6_nr_last_fastcall .hidden rustix_indirect_syscall6_nr_last_fastcall .type rustix_indirect_syscall6_nr_last_fastcall, @function rustix_indirect_syscall6_nr_last_fastcall: .cfi_startproc push ebx .cfi_def_cfa_offset 8 push esi .cfi_def_cfa_offset 12 push edi .cfi_def_cfa_offset 16 push ebp .cfi_def_cfa_offset 20 .cfi_offset ebp, -20 .cfi_offset edi, -16 .cfi_offset esi, -12 .cfi_offset ebx, -8 mov ebx,DWORD PTR [esp+0x14] mov esi,DWORD PTR [esp+0x18] mov edi,DWORD PTR [esp+0x1c] mov ebp,DWORD PTR [esp+0x20] mov eax,DWORD PTR [esp+0x24] call DWORD PTR [esp+0x28] pop ebp .cfi_def_cfa_offset 16 pop edi .cfi_def_cfa_offset 12 pop esi .cfi_def_cfa_offset 8 pop ebx .cfi_def_cfa_offset 4 ret 0x18 .cfi_endproc .size rustix_indirect_syscall6_nr_last_fastcall, .-rustix_indirect_syscall6_nr_last_fastcall .section .text.rustix_syscall0_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_syscall0_nr_last_fastcall .hidden rustix_syscall0_nr_last_fastcall .type rustix_syscall0_nr_last_fastcall, @function rustix_syscall0_nr_last_fastcall: .cfi_startproc mov eax,ecx int 0x80 ret .cfi_endproc .size rustix_syscall0_nr_last_fastcall, .-rustix_syscall0_nr_last_fastcall .section .text.rustix_syscall1_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_syscall1_nr_last_fastcall .hidden rustix_syscall1_nr_last_fastcall .type rustix_syscall1_nr_last_fastcall, @function rustix_syscall1_nr_last_fastcall: .cfi_startproc push ebx .cfi_def_cfa_offset 8 .cfi_offset ebx, -8 mov eax,edx mov ebx,ecx int 0x80 pop ebx .cfi_def_cfa_offset 4 ret .cfi_endproc .size rustix_syscall1_nr_last_fastcall, .-rustix_syscall1_nr_last_fastcall .section .text.rustix_syscall1_noreturn_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_syscall1_noreturn_nr_last_fastcall .hidden rustix_syscall1_noreturn_nr_last_fastcall .type rustix_syscall1_noreturn_nr_last_fastcall, @function rustix_syscall1_noreturn_nr_last_fastcall: .cfi_startproc mov eax,edx mov ebx,ecx int 0x80 ud2 .cfi_endproc .size rustix_syscall1_noreturn_nr_last_fastcall, .-rustix_syscall1_noreturn_nr_last_fastcall .section .text.rustix_syscall2_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_syscall2_nr_last_fastcall .hidden rustix_syscall2_nr_last_fastcall .type rustix_syscall2_nr_last_fastcall, @function rustix_syscall2_nr_last_fastcall: .cfi_startproc push ebx .cfi_def_cfa_offset 8 .cfi_offset ebx, -8 mov ebx,edx mov eax,DWORD PTR [esp+0x8] int 0x80 pop ebx .cfi_def_cfa_offset 4 ret 0x4 .cfi_endproc .size rustix_syscall2_nr_last_fastcall, .-rustix_syscall2_nr_last_fastcall .section .text.rustix_syscall3_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_syscall3_nr_last_fastcall .hidden rustix_syscall3_nr_last_fastcall .type rustix_syscall3_nr_last_fastcall, @function rustix_syscall3_nr_last_fastcall: .cfi_startproc push ebx .cfi_def_cfa_offset 8 .cfi_offset ebx, -8 mov ebx,DWORD PTR [esp+0x8] mov eax,DWORD PTR [esp+0xc] int 0x80 pop ebx .cfi_def_cfa_offset 4 ret 0x8 .cfi_endproc .size rustix_syscall3_nr_last_fastcall, .-rustix_syscall3_nr_last_fastcall .section .text.rustix_syscall4_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_syscall4_nr_last_fastcall .hidden rustix_syscall4_nr_last_fastcall .type rustix_syscall4_nr_last_fastcall, @function rustix_syscall4_nr_last_fastcall: .cfi_startproc push ebx .cfi_def_cfa_offset 8 push esi .cfi_def_cfa_offset 12 .cfi_offset esi, -12 .cfi_offset ebx, -8 mov ebx,DWORD PTR [esp+0xc] mov esi,DWORD PTR [esp+0x10] mov eax,DWORD PTR [esp+0x14] int 0x80 pop esi .cfi_def_cfa_offset 8 pop ebx .cfi_def_cfa_offset 4 ret 0xc .cfi_endproc .size rustix_syscall4_nr_last_fastcall, .-rustix_syscall4_nr_last_fastcall .section .text.rustix_syscall5_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_syscall5_nr_last_fastcall .hidden rustix_syscall5_nr_last_fastcall .type rustix_syscall5_nr_last_fastcall, @function rustix_syscall5_nr_last_fastcall: .cfi_startproc push ebx .cfi_def_cfa_offset 8 push edi .cfi_def_cfa_offset 12 push esi .cfi_def_cfa_offset 16 .cfi_offset esi, -16 .cfi_offset edi, -12 .cfi_offset ebx, -8 mov ebx,DWORD PTR [esp+0x10] mov esi,DWORD PTR [esp+0x14] mov edi,DWORD PTR [esp+0x18] mov eax,DWORD PTR [esp+0x1c] int 0x80 pop esi .cfi_def_cfa_offset 12 pop edi .cfi_def_cfa_offset 8 pop ebx .cfi_def_cfa_offset 4 ret 0x10 .cfi_endproc .size rustix_syscall5_nr_last_fastcall, .-rustix_syscall5_nr_last_fastcall .section .text.rustix_syscall6_nr_last_fastcall,"ax",@progbits .p2align 4 .weak rustix_syscall6_nr_last_fastcall .hidden rustix_syscall6_nr_last_fastcall .type rustix_syscall6_nr_last_fastcall, @function rustix_syscall6_nr_last_fastcall: .cfi_startproc push ebp .cfi_def_cfa_offset 8 push ebx .cfi_def_cfa_offset 12 push edi .cfi_def_cfa_offset 16 push esi .cfi_def_cfa_offset 20 .cfi_offset esi, -20 .cfi_offset edi, -16 .cfi_offset ebx, -12 .cfi_offset ebp, -8 mov ebx,DWORD PTR [esp+0x14] mov esi,DWORD PTR [esp+0x18] mov edi,DWORD PTR [esp+0x1c] mov ebp,DWORD PTR [esp+0x20] mov eax,DWORD PTR [esp+0x24] int 0x80 pop esi .cfi_def_cfa_offset 16 pop edi .cfi_def_cfa_offset 12 pop ebx .cfi_def_cfa_offset 8 pop ebp .cfi_def_cfa_offset 4 ret 0x14 .cfi_endproc .size rustix_syscall6_nr_last_fastcall, .-rustix_syscall6_nr_last_fastcall .section .text.rustix_int_0x80,"ax",@progbits .p2align 4 .weak rustix_int_0x80 .hidden rustix_int_0x80 .type rustix_int_0x80, @function rustix_int_0x80: .cfi_startproc int 0x80 ret .cfi_endproc .size rustix_int_0x80, .-rustix_int_0x80 .section .note.GNU-stack,"",@progbits