summaryrefslogtreecommitdiffstats
path: root/vendor/rustix/src/imp/linux_raw/arch/outline/x86.s
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/rustix/src/imp/linux_raw/arch/outline/x86.s')
-rw-r--r--vendor/rustix/src/imp/linux_raw/arch/outline/x86.s381
1 files changed, 381 insertions, 0 deletions
diff --git a/vendor/rustix/src/imp/linux_raw/arch/outline/x86.s b/vendor/rustix/src/imp/linux_raw/arch/outline/x86.s
new file mode 100644
index 000000000..bda234e1a
--- /dev/null
+++ b/vendor/rustix/src/imp/linux_raw/arch/outline/x86.s
@@ -0,0 +1,381 @@
+// 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