use core::arch::asm;
#[inline(always)]
pub unsafe fn syscall0(n: usize) -> usize {
let mut ret: usize;
asm!(
"svc 0",
out("r2") ret,
in("r1") n,
);
ret
}
#[inline(always)]
pub unsafe fn syscall1(n: usize, arg1: usize) -> usize {
let mut ret: usize;
asm!(
"svc 0",
lateout("r2") ret,
in("r1") n,
in("r2") arg1,
);
ret
}
#[inline(always)]
pub unsafe fn syscall2(n: usize, arg1: usize, arg2: usize) -> usize {
let mut ret: usize;
asm!(
"svc 0",
lateout("r2") ret,
in("r1") n,
in("r2") arg1,
in("r3") arg2,
);
ret
}
#[inline(always)]
pub unsafe fn syscall3(
n: usize,
arg1: usize,
arg2: usize,
arg3: usize,
) -> usize {
let mut ret: usize;
asm!(
"svc 0",
lateout("r2") ret,
in("r1") n,
in("r2") arg1,
in("r3") arg2,
in("r4") arg3,
);
ret
}
#[inline(always)]
pub unsafe fn syscall4(
n: usize,
arg1: usize,
arg2: usize,
arg3: usize,
arg4: usize,
) -> usize {
let mut ret: usize;
asm!(
"svc 0",
lateout("r2") ret,
in("r1") n,
in("r2") arg1,
in("r3") arg2,
in("r4") arg3,
in("r5") arg4,
);
ret
}
#[inline(always)]
pub unsafe fn syscall5(
n: usize,
arg1: usize,
arg2: usize,
arg3: usize,
arg4: usize,
arg5: usize,
) -> usize {
let mut ret: usize;
asm!(
"svc 0",
lateout("r2") ret,
in("r1") n,
in("r2") arg1,
in("r3") arg2,
in("r4") arg3,
in("r5") arg4,
in("r6") arg5,
);
ret
}
#[inline(always)]
pub unsafe fn syscall6(
n: usize,
arg1: usize,
arg2: usize,
arg3: usize,
arg4: usize,
arg5: usize,
arg6: usize,
) -> usize {
let mut ret: usize;
asm!(
"svc 0",
lateout("r2") ret,
in("r1") n,
in("r2") arg1,
in("r3") arg2,
in("r4") arg3,
in("r5") arg4,
in("r6") arg5,
in("r7") arg6,
);
ret
}