#[macro_export]
macro_rules! syscall_raw {
($nr:ident) => {
$crate::syscall0($crate::nr::$nr)
};
($nr:ident, $a1:expr) => {
$crate::syscall1($crate::nr::$nr, $a1 as usize)
};
($nr:ident, $a1:expr, $a2:expr) => {
$crate::syscall2($crate::nr::$nr, $a1 as usize, $a2 as usize)
};
($nr:ident, $a1:expr, $a2:expr, $a3:expr) => {
$crate::syscall3($crate::nr::$nr, $a1 as usize, $a2 as usize, $a3 as usize)
};
($nr:ident, $a1:expr, $a2:expr, $a3:expr, $a4:expr) => {
$crate::syscall4(
$crate::nr::$nr,
$a1 as usize,
$a2 as usize,
$a3 as usize,
$a4 as usize,
)
};
($nr:ident, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr) => {
$crate::syscall5(
$crate::nr::$nr,
$a1 as usize,
$a2 as usize,
$a3 as usize,
$a4 as usize,
$a5 as usize,
)
};
($nr:ident, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr, $a6:expr) => {
$crate::syscall6(
$crate::nr::$nr,
$a1 as usize,
$a2 as usize,
$a3 as usize,
$a4 as usize,
$a5 as usize,
$a6 as usize,
)
};
($nr:ident, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr, $a6:expr, $a7:expr) => {
$crate::syscall7(
$crate::nr::$nr,
$a1 as usize,
$a2 as usize,
$a3 as usize,
$a4 as usize,
$a5 as usize,
$a6 as usize,
$a7 as usize,
)
};
($nr:ident, $($args:expr,)*) => {
$crate::syscall_raw!($nr$(, $args)*)
};
}
#[macro_export]
macro_rules! syscall_nofail {
($nr:ident) => {
$crate::syscall0_nofail($crate::nr::$nr)
};
($nr:ident, $a1:expr) => {
$crate::syscall1_nofail($crate::nr::$nr, $a1 as usize)
};
($nr:ident, $a1:expr, $a2:expr) => {
$crate::syscall2_nofail($crate::nr::$nr, $a1 as usize, $a2 as usize)
};
($nr:ident, $a1:expr, $a2:expr, $a3:expr) => {
$crate::syscall3_nofail($crate::nr::$nr, $a1 as usize, $a2 as usize, $a3 as usize)
};
($nr:ident, $a1:expr, $a2:expr, $a3:expr, $a4:expr) => {
$crate::syscall4_nofail(
$crate::nr::$nr,
$a1 as usize,
$a2 as usize,
$a3 as usize,
$a4 as usize,
)
};
($nr:ident, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr) => {
$crate::syscall5_nofail(
$crate::nr::$nr,
$a1 as usize,
$a2 as usize,
$a3 as usize,
$a4 as usize,
$a5 as usize,
)
};
($nr:ident, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr, $a6:expr) => {
$crate::syscall6_nofail(
$crate::nr::$nr,
$a1 as usize,
$a2 as usize,
$a3 as usize,
$a4 as usize,
$a5 as usize,
$a6 as usize,
)
};
($nr:ident, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr, $a6:expr, $a7:expr) => {
$crate::syscall7_nofail(
$crate::nr::$nr,
$a1 as usize,
$a2 as usize,
$a3 as usize,
$a4 as usize,
$a5 as usize,
$a6 as usize,
$a7 as usize,
)
};
($nr:ident, $($args:expr,)*) => {
$crate::syscall_nofail!($nr$(, $args)*)
};
}
#[macro_export]
macro_rules! syscall {
($nr:ident$(, $args:expr)* $(,)?) => {
$crate::decode_raw_result($crate::syscall_raw!($nr$(, $args)*))
};
}