summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibSystem
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-07-24 02:15:07 +0200
committerAndreas Kling <kling@serenityos.org>2021-07-25 14:08:50 +0200
commitdeff554096652c461e62767b5e065e9d4c3ec9cc (patch)
tree088a05402c14a1dcd2149bfc467d2721926f371c /Userland/Libraries/LibSystem
parent9b78ae5149f80d38c3ee18eb3dbf78c05c487f7c (diff)
downloadserenity-deff554096652c461e62767b5e065e9d4c3ec9cc.zip
Kernel+LibSystem: Add a 4th syscall argument
Let's allow passing 4 function arguments to a syscall. The 4th argument goes into ESI or RSI.
Diffstat (limited to 'Userland/Libraries/LibSystem')
-rw-r--r--Userland/Libraries/LibSystem/syscall.cpp5
-rw-r--r--Userland/Libraries/LibSystem/syscall.h6
2 files changed, 11 insertions, 0 deletions
diff --git a/Userland/Libraries/LibSystem/syscall.cpp b/Userland/Libraries/LibSystem/syscall.cpp
index 4801b1bf12..e04121d790 100644
--- a/Userland/Libraries/LibSystem/syscall.cpp
+++ b/Userland/Libraries/LibSystem/syscall.cpp
@@ -28,4 +28,9 @@ uintptr_t syscall3(uintptr_t function, uintptr_t arg0, uintptr_t arg1, uintptr_t
{
return Syscall::invoke((Syscall::Function)function, arg0, arg1, arg2);
}
+
+uintptr_t syscall4(uintptr_t function, uintptr_t arg0, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3)
+{
+ return Syscall::invoke((Syscall::Function)function, arg0, arg1, arg2, arg3);
+}
}
diff --git a/Userland/Libraries/LibSystem/syscall.h b/Userland/Libraries/LibSystem/syscall.h
index ac9f38cb55..a6cdabb227 100644
--- a/Userland/Libraries/LibSystem/syscall.h
+++ b/Userland/Libraries/LibSystem/syscall.h
@@ -15,6 +15,7 @@ uintptr_t syscall0(uintptr_t function);
uintptr_t syscall1(uintptr_t function, uintptr_t arg0);
uintptr_t syscall2(uintptr_t function, uintptr_t arg0, uintptr_t arg1);
uintptr_t syscall3(uintptr_t function, uintptr_t arg0, uintptr_t arg1, uintptr_t arg2);
+uintptr_t syscall4(uintptr_t function, uintptr_t arg0, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3);
}
#ifdef __cplusplus
@@ -39,4 +40,9 @@ inline uintptr_t syscall(auto function, auto arg0, auto arg1, auto arg2)
return syscall3((uintptr_t)function, (uintptr_t)arg0, (uintptr_t)arg1, (uintptr_t)arg2);
}
+inline uintptr_t syscall(auto function, auto arg0, auto arg1, auto arg2, auto arg3)
+{
+ return syscall4((uintptr_t)function, (uintptr_t)arg0, (uintptr_t)arg1, (uintptr_t)arg2, (uintptr_t)arg3);
+}
+
#endif