diff options
Diffstat (limited to 'src/bits64/syscall.rs')
-rw-r--r-- | src/bits64/syscall.rs | 96 |
1 files changed, 72 insertions, 24 deletions
diff --git a/src/bits64/syscall.rs b/src/bits64/syscall.rs index c554177..40ef87c 100644 --- a/src/bits64/syscall.rs +++ b/src/bits64/syscall.rs @@ -14,29 +14,76 @@ /// This code is inspired by the syscall.rs (https://github.com/kmcallister/syscall.rs/) project. #[macro_export] macro_rules! syscall { - ($arg0:expr) - => ( $crate::syscall::syscall0($arg0 as u64) ); + ($arg0:expr) => { + $crate::syscall::syscall0($arg0 as u64) + }; - ($arg0:expr, $arg1:expr) - => ( $crate::syscall::syscall1($arg0 as u64, $arg1 as u64) ); + ($arg0:expr, $arg1:expr) => { + $crate::syscall::syscall1($arg0 as u64, $arg1 as u64) + }; - ($arg0:expr, $arg1:expr, $arg2:expr) - => ( $crate::syscall::syscall2($arg0 as u64, $arg1 as u64, $arg2 as u64) ); + ($arg0:expr, $arg1:expr, $arg2:expr) => { + $crate::syscall::syscall2($arg0 as u64, $arg1 as u64, $arg2 as u64) + }; - ($arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr) - => ( $crate::syscall::syscall3($arg0 as u64, $arg1 as u64, $arg2 as u64, $arg3 as u64) ); + ($arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr) => { + $crate::syscall::syscall3($arg0 as u64, $arg1 as u64, $arg2 as u64, $arg3 as u64) + }; - ($arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr) - => ( $crate::syscall::syscall4($arg0 as u64, $arg1 as u64, $arg2 as u64, $arg3 as u64, $arg4 as u64) ); + ($arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr) => { + $crate::syscall::syscall4( + $arg0 as u64, + $arg1 as u64, + $arg2 as u64, + $arg3 as u64, + $arg4 as u64, + ) + }; - ($arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr) - => ( $crate::syscall::syscall5($arg0 as u64, $arg1 as u64, $arg2 as u64, $arg3 as u64, $arg4 as u64, $arg5 as u64) ); + ($arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr) => { + $crate::syscall::syscall5( + $arg0 as u64, + $arg1 as u64, + $arg2 as u64, + $arg3 as u64, + $arg4 as u64, + $arg5 as u64, + ) + }; - ($arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr) - => ( $crate::syscall::syscall6($arg0 as u64, $arg1 as u64, $arg2 as u64, $arg3 as u64, $arg4 as u64, $arg5 as u64, $arg6 as u64) ); + ($arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr) => { + $crate::syscall::syscall6( + $arg0 as u64, + $arg1 as u64, + $arg2 as u64, + $arg3 as u64, + $arg4 as u64, + $arg5 as u64, + $arg6 as u64, + ) + }; - ($arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr, $arg6:expr, $arg7:expr) - => ( $crate::syscall::syscall7($arg0 as u64, $arg1 as u64, $arg2 as u64, $arg3 as u64, $arg4 as u64, $arg5 as u64, $arg6 as u64, $arg7 as u64) ); + ( + $arg0:expr, + $arg1:expr, + $arg2:expr, + $arg3:expr, + $arg4:expr, + $arg5:expr, + $arg6:expr, + $arg7:expr + ) => { + $crate::syscall::syscall7( + $arg0 as u64, + $arg1 as u64, + $arg2 as u64, + $arg3 as u64, + $arg4 as u64, + $arg5 as u64, + $arg6 as u64, + $arg7 as u64, + ) + }; } #[inline(always)] @@ -97,14 +144,15 @@ pub unsafe fn syscall5(arg0: u64, arg1: u64, arg2: u64, arg3: u64, arg4: u64, ar #[inline(always)] #[allow(unused_mut)] -pub unsafe fn syscall6(arg0: u64, - arg1: u64, - arg2: u64, - arg3: u64, - arg4: u64, - arg5: u64, - arg6: u64) - -> u64 { +pub unsafe fn syscall6( + arg0: u64, + arg1: u64, + arg2: u64, + arg3: u64, + arg4: u64, + arg5: u64, + arg6: u64, +) -> u64 { let mut ret: u64; asm!("syscall" : "={rax}" (ret) : "{rax}" (arg0), "{rdi}" (arg1), "{rsi}" (arg2), "{rdx}" (arg3), |