use core::arch::asm;
pub type SyscallWord = u64;
#[inline]
pub unsafe fn syscall0(n: SyscallWord) -> SyscallWord {
let mut ret: SyscallWord;
unsafe {
asm!(
"syscall 0",
in("$a7") n,
lateout("$a0") ret,
lateout("$t0") _,
lateout("$t1") _,
lateout("$t2") _,
lateout("$t3") _,
lateout("$t4") _,
lateout("$t5") _,
lateout("$t6") _,
lateout("$t7") _,
lateout("$t8") _,
options(nostack, preserves_flags)
);
}
ret
}
#[inline]
pub unsafe fn syscall1(n: SyscallWord, arg1: SyscallWord) -> SyscallWord {
let mut ret: SyscallWord;
unsafe {
asm!(
"syscall 0",
in("$a7") n,
inlateout("$a0") arg1 => ret,
lateout("$t0") _,
lateout("$t1") _,
lateout("$t2") _,
lateout("$t3") _,
lateout("$t4") _,
lateout("$t5") _,
lateout("$t6") _,
lateout("$t7") _,
lateout("$t8") _,
options(nostack, preserves_flags)
);
}
ret
}
#[inline]
pub unsafe fn syscall2(
n: SyscallWord,
arg1: SyscallWord,
arg2: SyscallWord,
) -> SyscallWord {
let mut ret: SyscallWord;
unsafe {
asm!(
"syscall 0",
in("$a7") n,
inlateout("$a0") arg1 => ret,
in("$a1") arg2,
lateout("$t0") _,
lateout("$t1") _,
lateout("$t2") _,
lateout("$t3") _,
lateout("$t4") _,
lateout("$t5") _,
lateout("$t6") _,
lateout("$t7") _,
lateout("$t8") _,
options(nostack, preserves_flags)
);
}
ret
}
#[inline]
pub unsafe fn syscall3(
n: SyscallWord,
arg1: SyscallWord,
arg2: SyscallWord,
arg3: SyscallWord,
) -> SyscallWord {
let mut ret: SyscallWord;
unsafe {
asm!(
"syscall 0",
in("$a7") n,
inlateout("$a0") arg1 => ret,
in("$a1") arg2,
in("$a2") arg3,
lateout("$t0") _,
lateout("$t1") _,
lateout("$t2") _,
lateout("$t3") _,
lateout("$t4") _,
lateout("$t5") _,
lateout("$t6") _,
lateout("$t7") _,
lateout("$t8") _,
options(nostack, preserves_flags)
);
}
ret
}
#[inline]
pub unsafe fn syscall4(
n: SyscallWord,
arg1: SyscallWord,
arg2: SyscallWord,
arg3: SyscallWord,
arg4: SyscallWord,
) -> SyscallWord {
let mut ret: SyscallWord;
unsafe {
asm!(
"syscall 0",
in("$a7") n,
inlateout("$a0") arg1 => ret,
in("$a1") arg2,
in("$a2") arg3,
in("$a3") arg4,
lateout("$t0") _,
lateout("$t1") _,
lateout("$t2") _,
lateout("$t3") _,
lateout("$t4") _,
lateout("$t5") _,
lateout("$t6") _,
lateout("$t7") _,
lateout("$t8") _,
options(nostack, preserves_flags)
);
}
ret
}
#[inline]
pub unsafe fn syscall5(
n: SyscallWord,
arg1: SyscallWord,
arg2: SyscallWord,
arg3: SyscallWord,
arg4: SyscallWord,
arg5: SyscallWord,
) -> SyscallWord {
let mut ret: SyscallWord;
unsafe {
asm!(
"syscall 0",
in("$a7") n,
inlateout("$a0") arg1 => ret,
in("$a1") arg2,
in("$a2") arg3,
in("$a3") arg4,
in("$a4") arg5,
lateout("$t0") _,
lateout("$t1") _,
lateout("$t2") _,
lateout("$t3") _,
lateout("$t4") _,
lateout("$t5") _,
lateout("$t6") _,
lateout("$t7") _,
lateout("$t8") _,
options(nostack, preserves_flags)
);
}
ret
}
#[inline]
pub unsafe fn syscall6(
n: SyscallWord,
arg1: SyscallWord,
arg2: SyscallWord,
arg3: SyscallWord,
arg4: SyscallWord,
arg5: SyscallWord,
arg6: SyscallWord,
) -> SyscallWord {
let mut ret: SyscallWord;
unsafe {
asm!(
"syscall 0",
in("$a7") n,
inlateout("$a0") arg1 => ret,
in("$a1") arg2,
in("$a2") arg3,
in("$a3") arg4,
in("$a4") arg5,
in("$a5") arg6,
lateout("$t0") _,
lateout("$t1") _,
lateout("$t2") _,
lateout("$t3") _,
lateout("$t4") _,
lateout("$t5") _,
lateout("$t6") _,
lateout("$t7") _,
lateout("$t8") _,
options(nostack, preserves_flags)
);
}
ret
}