use core::arch::asm;
pub type V = u32;
#[inline(always)]
pub unsafe fn syscall0(n: V) -> V {
let ret: V;
asm!(
"svc 0",
in("r7") n,
out("r0") ret,
);
ret
}
#[inline(always)]
pub unsafe fn syscall1(n: V, a0: V) -> V {
let ret: V;
asm!(
"svc 0",
in("r7") n,
inout("r0") a0 => ret,
);
ret
}
#[inline(always)]
pub unsafe fn syscall2(n: V, a0: V, a1: V) -> V {
let ret: V;
asm!(
"svc 0",
in("r7") n,
inout("r0") a0 => ret,
in("r1") a1,
);
ret
}
#[inline(always)]
pub unsafe fn syscall3(n: V, a0: V, a1: V, a2: V) -> V {
let ret: V;
asm!(
"svc 0",
in("r7") n,
inout("r0") a0 => ret,
in("r1") a1,
in("r2") a2,
);
ret
}
#[inline(always)]
pub unsafe fn syscall4(n: V, a0: V, a1: V, a2: V, a3: V) -> V {
let ret: V;
asm!(
"svc 0",
in("r7") n,
inout("r0") a0 => ret,
in("r1") a1,
in("r2") a2,
in("r3") a3,
);
ret
}
#[inline(always)]
pub unsafe fn syscall5(n: V, a0: V, a1: V, a2: V, a3: V, a4: V) -> V {
let ret: V;
asm!(
"svc 0",
in("r7") n,
inout("r0") a0 => ret,
in("r1") a1,
in("r2") a2,
in("r3") a3,
in("r4") a4,
);
ret
}
#[inline(always)]
pub unsafe fn syscall6(n: V, a0: V, a1: V, a2: V, a3: V, a4: V, a5: V) -> V {
let ret: V;
asm!(
"svc 0",
in("r7") n,
inout("r0") a0 => ret,
in("r1") a1,
in("r2") a2,
in("r3") a3,
in("r4") a4,
in("r5") a5,
);
ret
}
#[inline]
pub fn unpack_standard_result(raw: V) -> Result<V, i32> {
if (raw as u64) >= ((-4095 as i64) as u64) {
let err = -(raw as i32);
Err(err)
} else {
Ok(raw)
}
}
include!(concat!(env!("OUT_DIR"), "/syscall_nrs_arm.rs"));
pub(crate) mod errno {
include!(concat!(env!("OUT_DIR"), "/errnos_arm.rs"));
}
pub(crate) mod types {}