use core::arch::asm;
#[inline]
pub unsafe fn syscall0(n: usize) -> usize {
let mut err: usize;
let mut ret: usize;
asm!(
"syscall",
inlateout("$2") n => ret,
lateout("$7") err,
lateout("$8") _,
lateout("$9") _,
lateout("$10") _,
lateout("$11") _,
lateout("$12") _,
lateout("$13") _,
lateout("$14") _,
lateout("$15") _,
lateout("$24") _,
lateout("$25") _,
options(nostack, preserves_flags)
);
if err == 0 {
ret
} else {
ret.wrapping_neg()
}
}
#[inline]
pub unsafe fn syscall1(n: usize, arg1: usize) -> usize {
let mut err: usize;
let mut ret: usize;
asm!(
"syscall",
inlateout("$2") n => ret,
lateout("$7") err,
in("$4") arg1,
lateout("$8") _,
lateout("$9") _,
lateout("$10") _,
lateout("$11") _,
lateout("$12") _,
lateout("$13") _,
lateout("$14") _,
lateout("$15") _,
lateout("$24") _,
lateout("$25") _,
options(nostack, preserves_flags)
);
if err == 0 {
ret
} else {
ret.wrapping_neg()
}
}
#[inline]
pub unsafe fn syscall2(n: usize, arg1: usize, arg2: usize) -> usize {
let mut err: usize;
let mut ret: usize;
asm!(
"syscall",
inlateout("$2") n => ret,
lateout("$7") err,
in("$4") arg1,
in("$5") arg2,
lateout("$8") _,
lateout("$9") _,
lateout("$10") _,
lateout("$11") _,
lateout("$12") _,
lateout("$13") _,
lateout("$14") _,
lateout("$15") _,
lateout("$24") _,
lateout("$25") _,
options(nostack, preserves_flags)
);
if err == 0 {
ret
} else {
ret.wrapping_neg()
}
}
#[inline]
pub unsafe fn syscall3(
n: usize,
arg1: usize,
arg2: usize,
arg3: usize,
) -> usize {
let mut err: usize;
let mut ret: usize;
asm!(
"syscall",
inlateout("$2") n => ret,
lateout("$7") err,
in("$4") arg1,
in("$5") arg2,
in("$6") arg3,
lateout("$8") _,
lateout("$9") _,
lateout("$10") _,
lateout("$11") _,
lateout("$12") _,
lateout("$13") _,
lateout("$14") _,
lateout("$15") _,
lateout("$24") _,
lateout("$25") _,
options(nostack, preserves_flags)
);
if err == 0 {
ret
} else {
ret.wrapping_neg()
}
}
#[inline]
pub unsafe fn syscall4(
n: usize,
arg1: usize,
arg2: usize,
arg3: usize,
arg4: usize,
) -> usize {
let mut err: usize;
let mut ret: usize;
asm!(
"syscall",
inlateout("$2") n => ret,
in("$4") arg1,
in("$5") arg2,
in("$6") arg3,
inlateout("$7") arg4 => err,
lateout("$8") _,
lateout("$9") _,
lateout("$10") _,
lateout("$11") _,
lateout("$12") _,
lateout("$13") _,
lateout("$14") _,
lateout("$15") _,
lateout("$24") _,
lateout("$25") _,
options(nostack, preserves_flags)
);
if err == 0 {
ret
} else {
ret.wrapping_neg()
}
}
#[inline]
pub unsafe fn syscall5(
n: usize,
arg1: usize,
arg2: usize,
arg3: usize,
arg4: usize,
arg5: usize,
) -> usize {
let mut err: usize;
let mut ret: usize;
asm!(
"syscall",
inlateout("$2") n => ret,
in("$4") arg1,
in("$5") arg2,
in("$6") arg3,
inlateout("$7") arg4 => err,
inlateout("$8") arg5 => _,
lateout("$9") _,
lateout("$10") _,
lateout("$11") _,
lateout("$12") _,
lateout("$13") _,
lateout("$14") _,
lateout("$15") _,
lateout("$24") _,
lateout("$25") _,
options(nostack, preserves_flags)
);
if err == 0 {
ret
} else {
ret.wrapping_neg()
}
}
#[inline]
pub unsafe fn syscall6(
n: usize,
arg1: usize,
arg2: usize,
arg3: usize,
arg4: usize,
arg5: usize,
arg6: usize,
) -> usize {
let mut err: usize;
let mut ret: usize;
asm!(
"syscall",
inlateout("$2") n => ret,
in("$4") arg1,
in("$5") arg2,
in("$6") arg3,
inlateout("$7") arg4 => err,
inlateout("$8") arg5 => _,
inlateout("$9") arg6 => _,
lateout("$10") _,
lateout("$11") _,
lateout("$12") _,
lateout("$13") _,
lateout("$14") _,
lateout("$15") _,
lateout("$24") _,
lateout("$25") _,
options(nostack, preserves_flags)
);
if err == 0 {
ret
} else {
ret.wrapping_neg()
}
}