diff options
author | Andreas Kling <kling@serenityos.org> | 2021-07-24 02:15:07 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-07-25 14:08:50 +0200 |
commit | deff554096652c461e62767b5e065e9d4c3ec9cc (patch) | |
tree | 088a05402c14a1dcd2149bfc467d2721926f371c /Userland/Libraries/LibSystem | |
parent | 9b78ae5149f80d38c3ee18eb3dbf78c05c487f7c (diff) | |
download | serenity-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.cpp | 5 | ||||
-rw-r--r-- | Userland/Libraries/LibSystem/syscall.h | 6 |
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 |