27 lines
623 B
C++
27 lines
623 B
C++
|
#include <stdarg.h>
|
||
|
#include <stdint.h>
|
||
|
#include <unistd.h>
|
||
|
|
||
|
extern "C" long arch_invoke_syscall(long, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
|
||
|
|
||
|
extern "C"
|
||
|
{
|
||
|
long syscall(long num, ...)
|
||
|
{
|
||
|
va_list ap;
|
||
|
va_start(ap, num);
|
||
|
|
||
|
uintptr_t arg0 = va_arg(ap, uintptr_t);
|
||
|
uintptr_t arg1 = va_arg(ap, uintptr_t);
|
||
|
uintptr_t arg2 = va_arg(ap, uintptr_t);
|
||
|
uintptr_t arg3 = va_arg(ap, uintptr_t);
|
||
|
uintptr_t arg4 = va_arg(ap, uintptr_t);
|
||
|
|
||
|
long rc = arch_invoke_syscall(num, arg0, arg1, arg2, arg3, arg4);
|
||
|
|
||
|
va_end(ap);
|
||
|
|
||
|
return rc;
|
||
|
}
|
||
|
}
|