#[cfg(target_arch = "x86")]
#[inline]
#[export_name = "r_linux_asm_syscall0"]
pub unsafe fn syscall0(
nr: usize,
) -> usize {
let mut r: usize;
core::arch::asm!(
"int $0x80",
inlateout("eax") nr => r,
options(nostack, preserves_flags)
);
r
}
#[cfg(target_arch = "x86")]
#[inline]
#[export_name = "r_linux_asm_syscall1"]
pub unsafe fn syscall1(
nr: usize,
arg0: usize,
) -> usize {
let mut r: usize;
core::arch::asm!(
"int $0x80",
inlateout("eax") nr => r,
in("ebx") arg0,
options(nostack, preserves_flags)
);
r
}
#[cfg(target_arch = "x86")]
#[inline]
#[export_name = "r_linux_asm_syscall2"]
pub unsafe fn syscall2(
nr: usize,
arg0: usize,
arg1: usize,
) -> usize {
let mut r: usize;
core::arch::asm!(
"int $0x80",
inlateout("eax") nr => r,
in("ebx") arg0,
in("ecx") arg1,
options(nostack, preserves_flags)
);
r
}
#[cfg(target_arch = "x86")]
#[inline]
#[export_name = "r_linux_asm_syscall3"]
pub unsafe fn syscall3(
nr: usize,
arg0: usize,
arg1: usize,
arg2: usize,
) -> usize {
let mut r: usize;
core::arch::asm!(
"int $0x80",
inlateout("eax") nr => r,
in("ebx") arg0,
in("ecx") arg1,
in("edx") arg2,
options(nostack, preserves_flags)
);
r
}
#[cfg(target_arch = "x86")]
#[inline]
#[export_name = "r_linux_asm_syscall4"]
pub unsafe fn syscall4(
nr: usize,
arg0: usize,
arg1: usize,
arg2: usize,
arg3: usize,
) -> usize {
let mut r: usize;
core::arch::asm!(
"xchg esi, {arg3}",
"int $0x80",
"xchg esi, {arg3}",
arg3 = in(reg) arg3,
inlateout("eax") nr => r,
in("ebx") arg0,
in("ecx") arg1,
in("edx") arg2,
options(nostack, preserves_flags)
);
r
}
#[cfg(target_arch = "x86")]
#[inline]
#[export_name = "r_linux_asm_syscall5"]
pub unsafe fn syscall5(
nr: usize,
arg0: usize,
arg1: usize,
arg2: usize,
arg3: usize,
arg4: usize,
) -> usize {
let mut r: usize;
core::arch::asm!(
"xchg esi, {arg3}",
"int $0x80",
"xchg esi, {arg3}",
arg3 = in(reg) arg3,
inlateout("eax") nr => r,
in("ebx") arg0,
in("ecx") arg1,
in("edx") arg2,
in("edi") arg4,
options(nostack, preserves_flags)
);
r
}
#[cfg(target_arch = "x86")]
#[inline]
#[export_name = "r_linux_asm_syscall6"]
pub unsafe fn syscall6(
nr: usize,
arg0: usize,
arg1: usize,
arg2: usize,
arg3: usize,
arg4: usize,
arg5: usize,
) -> usize {
let mut r: usize;
core::arch::asm!(
"push {arg3}",
"push {arg5}",
"push esi",
"push ebp",
"mov ebp, DWORD PTR [esp + 8]",
"mov esi, DWORD PTR [esp + 12]",
"int $0x80",
"pop ebp",
"pop esi",
"pop {arg5}",
"pop {arg3}",
arg3 = in(reg) arg3,
arg5 = in(reg) arg5,
inlateout("eax") nr => r,
in("ebx") arg0,
in("ecx") arg1,
in("edx") arg2,
in("edi") arg4,
options(preserves_flags)
);
r
}