use core::arch::asm;
pub type V = u64;
#[inline(always)]
pub unsafe fn syscall0(n: V) -> V {
let ret: V;
asm!(
"ecall",
in("a7") n,
out("a0") ret,
);
ret
}
#[inline(always)]
pub unsafe fn syscall1(n: V, a0: V) -> V {
let ret: V;
asm!(
"ecall",
in("a7") n,
inout("a0") a0 => ret,
);
ret
}
#[inline(always)]
pub unsafe fn syscall2(n: V, a0: V, a1: V) -> V {
let ret: V;
asm!(
"ecall",
in("a7") n,
inout("a0") a0 => ret,
in("a1") a1,
);
ret
}
#[inline(always)]
pub unsafe fn syscall3(n: V, a0: V, a1: V, a2: V) -> V {
let ret: V;
asm!(
"ecall",
in("a7") n,
inout("a0") a0 => ret,
in("a1") a1,
in("a2") a2,
);
ret
}
#[inline(always)]
pub unsafe fn syscall4(n: V, a0: V, a1: V, a2: V, a3: V) -> V {
let ret: V;
asm!(
"ecall",
in("a7") n,
inout("a0") a0 => ret,
in("a1") a1,
in("a2") a2,
in("a3") 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!(
"ecall",
in("a7") n,
inout("a0") a0 => ret,
in("a1") a1,
in("a2") a2,
in("a3") a3,
in("a4") 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!(
"ecall",
in("a7") n,
inout("a0") a0 => ret,
in("a1") a1,
in("a2") a2,
in("a3") a3,
in("a4") a4,
in("a5") 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_riscv64.rs"));
pub(crate) mod errno {
include!(concat!(env!("OUT_DIR"), "/errnos_riscv64.rs"));
}
pub(crate) mod types {}