mirror of
https://github.com/torvalds/linux.git
synced 2025-04-09 14:45:27 +00:00
um: Add generic stub_syscall6 function
This function will be used by the new syscall handling code. Signed-off-by: Benjamin Berg <benjamin@sipsolutions.net> Link: https://patch.msgid.link/20240703134536.1161108-4-benjamin@sipsolutions.net Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
dc26184a9d
commit
542dc79f6e
@ -80,6 +80,28 @@ static __always_inline long stub_syscall5(long syscall, long arg1, long arg2,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static __always_inline long stub_syscall6(long syscall, long arg1, long arg2,
|
||||
long arg3, long arg4, long arg5,
|
||||
long arg6)
|
||||
{
|
||||
struct syscall_args {
|
||||
int ebx, ebp;
|
||||
} args = { arg1, arg6 };
|
||||
long ret;
|
||||
|
||||
__asm__ volatile ("pushl %%ebp;"
|
||||
"movl 0x4(%%ebx),%%ebp;"
|
||||
"movl (%%ebx),%%ebx;"
|
||||
"int $0x80;"
|
||||
"popl %%ebp"
|
||||
: "=a" (ret)
|
||||
: "0" (syscall), "b" (&args),
|
||||
"c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5)
|
||||
: "memory");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static __always_inline void trap_myself(void)
|
||||
{
|
||||
__asm("int3");
|
||||
|
@ -80,6 +80,22 @@ static __always_inline long stub_syscall5(long syscall, long arg1, long arg2,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static __always_inline long stub_syscall6(long syscall, long arg1, long arg2,
|
||||
long arg3, long arg4, long arg5,
|
||||
long arg6)
|
||||
{
|
||||
long ret;
|
||||
|
||||
__asm__ volatile ("movq %5,%%r10 ; movq %6,%%r8 ; movq %7,%%r9 ; "
|
||||
__syscall
|
||||
: "=a" (ret)
|
||||
: "0" (syscall), "D" (arg1), "S" (arg2), "d" (arg3),
|
||||
"g" (arg4), "g" (arg5), "g" (arg6)
|
||||
: __syscall_clobber, "r10", "r8", "r9");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static __always_inline void trap_myself(void)
|
||||
{
|
||||
__asm("int3");
|
||||
|
Loading…
x
Reference in New Issue
Block a user