aboutsummaryrefslogtreecommitdiff
path: root/src/bits64/syscall.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bits64/syscall.rs')
-rw-r--r--src/bits64/syscall.rs96
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),