From 7c2efe01552c2b9b2ae8774a2fa2c145d2c8da25 Mon Sep 17 00:00:00 2001 From: Stefanos Kornilios Mitsis Poiitidis Date: Fri, 19 Jun 2020 13:07:07 +0300 Subject: [PATCH] Syscalls: Cleanup headers, add names, add NotImplemented --- External/FEXCore/Source/CMakeLists.txt | 1 + .../Interface/HLE/Syscalls/NotImplemented.cpp | 38 ++ .../Source/Interface/HLE/x64/Syscalls.cpp | 252 +++++++------ .../Source/Interface/HLE/x64/Syscalls.h | 354 +----------------- .../Source/Interface/HLE/x64/SyscallsEnum.h | 353 +++++++++++++++++ .../Interface/HLE/x64/SyscallsNames.inl | 349 +++++++++++++++++ 6 files changed, 877 insertions(+), 470 deletions(-) create mode 100644 External/FEXCore/Source/Interface/HLE/Syscalls/NotImplemented.cpp create mode 100644 External/FEXCore/Source/Interface/HLE/x64/SyscallsEnum.h create mode 100644 External/FEXCore/Source/Interface/HLE/x64/SyscallsNames.inl diff --git a/External/FEXCore/Source/CMakeLists.txt b/External/FEXCore/Source/CMakeLists.txt index a82bd9e66..a0c14e719 100644 --- a/External/FEXCore/Source/CMakeLists.txt +++ b/External/FEXCore/Source/CMakeLists.txt @@ -161,6 +161,7 @@ set (SRCS Interface/HLE/Syscalls/Thread.cpp Interface/HLE/Syscalls/Time.cpp Interface/HLE/Syscalls/Timer.cpp + Interface/HLE/Syscalls/NotImplemented.cpp Interface/Memory/MemMapper.cpp Interface/Memory/SharedMem.cpp Interface/IR/IR.cpp diff --git a/External/FEXCore/Source/Interface/HLE/Syscalls/NotImplemented.cpp b/External/FEXCore/Source/Interface/HLE/Syscalls/NotImplemented.cpp new file mode 100644 index 000000000..d1d6658b8 --- /dev/null +++ b/External/FEXCore/Source/Interface/HLE/Syscalls/NotImplemented.cpp @@ -0,0 +1,38 @@ +#include "Interface/HLE/Syscalls.h" +#include "Interface/HLE/x64/Syscalls.h" +#include "LogManager.h" + +#include +#include + +namespace FEXCore::Core { +struct InternalThreadState; +} + +#define REGISTER_SYSCALL_NOT_IMPL(name) REGISTER_SYSCALL_IMPL(name, [](FEXCore::Core::InternalThreadState *Thread) -> uint64_t { \ + LogMan::Msg::D("Using deprecated/removed syscall: " #name); \ + return -ENOSYS; \ +}); + +namespace FEXCore::HLE { + + // these are removed/not implemented in the linux kernel we present + + void RegisterNotImplemented() { + REGISTER_SYSCALL_NOT_IMPL(uselib); + REGISTER_SYSCALL_NOT_IMPL(create_module); + REGISTER_SYSCALL_NOT_IMPL(get_kernel_syms); + REGISTER_SYSCALL_NOT_IMPL(query_module); + REGISTER_SYSCALL_NOT_IMPL(nfsservctl); + REGISTER_SYSCALL_NOT_IMPL(getpmsg); + REGISTER_SYSCALL_NOT_IMPL(putpmsg); + REGISTER_SYSCALL_NOT_IMPL(afs_syscall); + REGISTER_SYSCALL_NOT_IMPL(tuxcall); + REGISTER_SYSCALL_NOT_IMPL(security); + REGISTER_SYSCALL_NOT_IMPL(set_thread_area); + REGISTER_SYSCALL_NOT_IMPL(get_thread_area); + REGISTER_SYSCALL_NOT_IMPL(epoll_ctl_old); + REGISTER_SYSCALL_NOT_IMPL(epoll_wait_old); + REGISTER_SYSCALL_NOT_IMPL(vserver); + } +} \ No newline at end of file diff --git a/External/FEXCore/Source/Interface/HLE/x64/Syscalls.cpp b/External/FEXCore/Source/Interface/HLE/x64/Syscalls.cpp index c53cc78d6..f4dcba26e 100644 --- a/External/FEXCore/Source/Interface/HLE/x64/Syscalls.cpp +++ b/External/FEXCore/Source/Interface/HLE/x64/Syscalls.cpp @@ -1,3 +1,5 @@ +#include + #include "Interface/HLE/Syscalls.h" #include "Interface/HLE/x64/Syscalls.h" @@ -19,133 +21,149 @@ namespace FEXCore::HLE { void RegisterThread(); void RegisterTime(); void RegisterTimer(); -} - -namespace { - uint64_t Unimplemented(FEXCore::Core::InternalThreadState *Thread, uint64_t SyscallNumber) { - ERROR_AND_DIE("Unhandled system call: %d", SyscallNumber); - return -1; - } - - uint64_t NopSuccess(FEXCore::Core::InternalThreadState *Thread) { - return 0; - } - uint64_t NopFail(FEXCore::Core::InternalThreadState *Thread) { - return -1ULL; - } - uint64_t NopPerm(FEXCore::Core::InternalThreadState *Thread) { - return -EPERM; - } + void RegisterNotImplemented(); } namespace FEXCore::HLE::x64 { - - -std::vector> syscalls_x64; - -void RegisterSyscallInternal(int SyscallNumber, const std::string& TraceFormatString, void* SyscallHandler, int ArgumentCount) { - syscalls_x64.push_back({SyscallNumber, SyscallHandler, ArgumentCount, TraceFormatString}); -} - -class x64SyscallHandler final : public FEXCore::SyscallHandler { -public: - x64SyscallHandler(FEXCore::Context::Context *ctx); - - // In the case that the syscall doesn't hit the optimized path then we still need to go here - uint64_t HandleSyscall(FEXCore::Core::InternalThreadState *Thread, FEXCore::HLE::SyscallArguments *Args) override; - -#ifdef DEBUG_STRACE - void Strace(FEXCore::HLE::SyscallArguments *Args, uint64_t Ret) override; -#endif - -private: - void RegisterSyscallHandlers(); -}; - -#ifdef DEBUG_STRACE -void x64SyscallHandler::Strace(FEXCore::HLE::SyscallArguments *Args, uint64_t Ret) { - auto &Def = Definitions[Args->Argument[0]]; - switch (Def.NumArgs) { - case 0: LogMan::Msg::D(Def.StraceFmt.c_str(), Ret); break; - case 1: LogMan::Msg::D(Def.StraceFmt.c_str(), Args->Argument[1], Ret); break; - case 2: LogMan::Msg::D(Def.StraceFmt.c_str(), Args->Argument[1], Args->Argument[2], Ret); break; - case 3: LogMan::Msg::D(Def.StraceFmt.c_str(), Args->Argument[1], Args->Argument[2], Args->Argument[3], Ret); break; - case 4: LogMan::Msg::D(Def.StraceFmt.c_str(), Args->Argument[1], Args->Argument[2], Args->Argument[3], Args->Argument[4], Ret); break; - case 5: LogMan::Msg::D(Def.StraceFmt.c_str(), Args->Argument[1], Args->Argument[2], Args->Argument[3], Args->Argument[4], Args->Argument[5], Ret); break; - case 6: LogMan::Msg::D(Def.StraceFmt.c_str(), Args->Argument[1], Args->Argument[2], Args->Argument[3], Args->Argument[4], Args->Argument[5], Args->Argument[6], Ret); break; - default: break; - } -} -#endif - -x64SyscallHandler::x64SyscallHandler(FEXCore::Context::Context *ctx) - : SyscallHandler {ctx} { - RegisterSyscallHandlers(); -} - -void x64SyscallHandler::RegisterSyscallHandlers() { - Definitions.resize(FEXCore::HLE::x64::SYSCALL_MAX); - auto cvt = [](auto in) { - union { - decltype(in) val; - void *raw; - } raw; - raw.val = in; - return raw.raw; + + std::map SyscallNames = { + #include "SyscallsNames.inl" }; - // Clear all definitions - for (auto &Def : Definitions) { - Def.NumArgs = 255; - Def.Ptr = cvt(&Unimplemented); + const char* GetSyscallName(int SyscallNumber) { + const char* name = "[unknown syscall]"; + + if (SyscallNames.count(SyscallNumber)) + name = SyscallNames[SyscallNumber]; + + return name; } - RegisterEpoll(); - RegisterFD(); - RegisterFS(); - RegisterInfo(); - RegisterIoctl(); - RegisterMemory(); - RegisterSched(); - RegisterSemaphore(); - RegisterSHM(); - RegisterSignals(); - RegisterSocket(); - RegisterThread(); - RegisterTime(); - RegisterTimer(); + std::vector> syscalls_x64; - // Set all the new definitions - for (auto &Syscall : syscalls_x64) { - auto &Def = Definitions.at(std::get<0>(Syscall)); - LogMan::Throw::A(Def.Ptr == cvt(&Unimplemented), "Oops overwriting sysall problem"); - Def.Ptr = std::get<1>(Syscall); - Def.NumArgs = std::get<2>(Syscall); - Def.StraceFmt = std::get<3>(Syscall); - } -} - -uint64_t x64SyscallHandler::HandleSyscall(FEXCore::Core::InternalThreadState *Thread, FEXCore::HLE::SyscallArguments *Args) { - auto &Def = Definitions[Args->Argument[0]]; - switch (Def.NumArgs) { - case 0: return std::invoke(Def.Ptr0, Thread); - case 1: return std::invoke(Def.Ptr1, Thread, Args->Argument[1]); - case 2: return std::invoke(Def.Ptr2, Thread, Args->Argument[1], Args->Argument[2]); - case 3: return std::invoke(Def.Ptr3, Thread, Args->Argument[1], Args->Argument[2], Args->Argument[3]); - case 4: return std::invoke(Def.Ptr4, Thread, Args->Argument[1], Args->Argument[2], Args->Argument[3], Args->Argument[4]); - case 5: return std::invoke(Def.Ptr5, Thread, Args->Argument[1], Args->Argument[2], Args->Argument[3], Args->Argument[4], Args->Argument[5]); - case 6: return std::invoke(Def.Ptr6, Thread, Args->Argument[1], Args->Argument[2], Args->Argument[3], Args->Argument[4], Args->Argument[5], Args->Argument[6]); - // for missing syscalls - case 255: return std::invoke(Def.Ptr1, Thread, Args->Argument[0]); - default: break; + void RegisterSyscallInternal(int SyscallNumber, const std::string& TraceFormatString, void* SyscallHandler, int ArgumentCount) { + syscalls_x64.push_back({SyscallNumber, SyscallHandler, ArgumentCount, TraceFormatString}); } - LogMan::Msg::A("Unhandled syscall"); - return -1; -} + class x64SyscallHandler final : public FEXCore::SyscallHandler { + public: + x64SyscallHandler(FEXCore::Context::Context *ctx); -FEXCore::SyscallHandler *CreateHandler(FEXCore::Context::Context *ctx) { - return new x64SyscallHandler(ctx); -} + // In the case that the syscall doesn't hit the optimized path then we still need to go here + uint64_t HandleSyscall(FEXCore::Core::InternalThreadState *Thread, FEXCore::HLE::SyscallArguments *Args) override; + + #ifdef DEBUG_STRACE + void Strace(FEXCore::HLE::SyscallArguments *Args, uint64_t Ret) override; + #endif + + private: + void RegisterSyscallHandlers(); + }; + + #ifdef DEBUG_STRACE + void x64SyscallHandler::Strace(FEXCore::HLE::SyscallArguments *Args, uint64_t Ret) { + auto &Def = Definitions[Args->Argument[0]]; + switch (Def.NumArgs) { + case 0: LogMan::Msg::D(Def.StraceFmt.c_str(), Ret); break; + case 1: LogMan::Msg::D(Def.StraceFmt.c_str(), Args->Argument[1], Ret); break; + case 2: LogMan::Msg::D(Def.StraceFmt.c_str(), Args->Argument[1], Args->Argument[2], Ret); break; + case 3: LogMan::Msg::D(Def.StraceFmt.c_str(), Args->Argument[1], Args->Argument[2], Args->Argument[3], Ret); break; + case 4: LogMan::Msg::D(Def.StraceFmt.c_str(), Args->Argument[1], Args->Argument[2], Args->Argument[3], Args->Argument[4], Ret); break; + case 5: LogMan::Msg::D(Def.StraceFmt.c_str(), Args->Argument[1], Args->Argument[2], Args->Argument[3], Args->Argument[4], Args->Argument[5], Ret); break; + case 6: LogMan::Msg::D(Def.StraceFmt.c_str(), Args->Argument[1], Args->Argument[2], Args->Argument[3], Args->Argument[4], Args->Argument[5], Args->Argument[6], Ret); break; + default: break; + } + } + #endif + + uint64_t Unimplemented(FEXCore::Core::InternalThreadState *Thread, uint64_t SyscallNumber) { + + auto name = GetSyscallName(SyscallNumber); + + ERROR_AND_DIE("Unhandled system call: %d, %s", SyscallNumber, name); + + return -1; + } + + x64SyscallHandler::x64SyscallHandler(FEXCore::Context::Context *ctx) + : SyscallHandler {ctx} { + RegisterSyscallHandlers(); + } + + void x64SyscallHandler::RegisterSyscallHandlers() { + Definitions.resize(FEXCore::HLE::x64::SYSCALL_MAX); + auto cvt = [](auto in) { + union { + decltype(in) val; + void *raw; + } raw; + raw.val = in; + return raw.raw; + }; + + // Clear all definitions + for (auto &Def : Definitions) { + Def.NumArgs = 255; + Def.Ptr = cvt(&Unimplemented); + } + + RegisterEpoll(); + RegisterFD(); + RegisterFS(); + RegisterInfo(); + RegisterIoctl(); + RegisterMemory(); + RegisterSched(); + RegisterSemaphore(); + RegisterSHM(); + RegisterSignals(); + RegisterSocket(); + RegisterThread(); + RegisterTime(); + RegisterTimer(); + RegisterNotImplemented(); + + // Set all the new definitions + for (auto &Syscall : syscalls_x64) { + auto SyscallNumber = std::get<0>(Syscall); + auto Name = GetSyscallName(SyscallNumber); + auto &Def = Definitions.at(SyscallNumber); + LogMan::Throw::A(Def.Ptr == cvt(&Unimplemented), "Oops overwriting sysall problem, %d, %s", SyscallNumber, Name); + Def.Ptr = std::get<1>(Syscall); + Def.NumArgs = std::get<2>(Syscall); + Def.StraceFmt = std::get<3>(Syscall); + } + +#if 0 + for (auto &Syscall: SyscallNames) { + if (Definitions[Syscall.first].Ptr == cvt(&Unimplemented)) { + LogMan::Msg::D("Unimplemented syscall: %s", Syscall.second); + } + } +#endif + } + + uint64_t x64SyscallHandler::HandleSyscall(FEXCore::Core::InternalThreadState *Thread, FEXCore::HLE::SyscallArguments *Args) { + auto &Def = Definitions[Args->Argument[0]]; + switch (Def.NumArgs) { + case 0: return std::invoke(Def.Ptr0, Thread); + case 1: return std::invoke(Def.Ptr1, Thread, Args->Argument[1]); + case 2: return std::invoke(Def.Ptr2, Thread, Args->Argument[1], Args->Argument[2]); + case 3: return std::invoke(Def.Ptr3, Thread, Args->Argument[1], Args->Argument[2], Args->Argument[3]); + case 4: return std::invoke(Def.Ptr4, Thread, Args->Argument[1], Args->Argument[2], Args->Argument[3], Args->Argument[4]); + case 5: return std::invoke(Def.Ptr5, Thread, Args->Argument[1], Args->Argument[2], Args->Argument[3], Args->Argument[4], Args->Argument[5]); + case 6: return std::invoke(Def.Ptr6, Thread, Args->Argument[1], Args->Argument[2], Args->Argument[3], Args->Argument[4], Args->Argument[5], Args->Argument[6]); + // for missing syscalls + case 255: return std::invoke(Def.Ptr1, Thread, Args->Argument[0]); + default: break; + } + + LogMan::Msg::A("Unhandled syscall"); + return -1; + } + + FEXCore::SyscallHandler *CreateHandler(FEXCore::Context::Context *ctx) { + return new x64SyscallHandler(ctx); + } } diff --git a/External/FEXCore/Source/Interface/HLE/x64/Syscalls.h b/External/FEXCore/Source/Interface/HLE/x64/Syscalls.h index 5d6c736bb..10eb7a94c 100644 --- a/External/FEXCore/Source/Interface/HLE/x64/Syscalls.h +++ b/External/FEXCore/Source/Interface/HLE/x64/Syscalls.h @@ -18,359 +18,7 @@ class SyscallHandler; namespace FEXCore::HLE::x64 { -///< Enum containing all support x86-64 linux syscalls that we support -enum Syscalls { - SYSCALL_x64_read = 0, - SYSCALL_x64_write = 1, - SYSCALL_x64_open = 2, - SYSCALL_x64_close = 3, - SYSCALL_x64_stat = 4, - SYSCALL_x64_fstat = 5, - SYSCALL_x64_lstat = 6, - SYSCALL_x64_poll = 7, - SYSCALL_x64_lseek = 8, - SYSCALL_x64_mmap = 9, - SYSCALL_x64_mprotect = 10, - SYSCALL_x64_munmap = 11, - SYSCALL_x64_brk = 12, - SYSCALL_x64_rt_sigaction = 13, - SYSCALL_x64_rt_sigprocmask = 14, - SYSCALL_x64_rt_sigreturn = 15, - SYSCALL_x64_ioctl = 16, - SYSCALL_x64_pread64 = 17, - SYSCALL_x64_pwrite64 = 18, - SYSCALL_x64_readv = 19, - SYSCALL_x64_writev = 20, - SYSCALL_x64_access = 21, - SYSCALL_x64_pipe = 22, - SYSCALL_x64_select = 23, - SYSCALL_x64_sched_yield = 24, - SYSCALL_x64_mremap = 25, - SYSCALL_x64_msync = 26, - SYSCALL_x64_mincore = 27, - SYSCALL_x64_madvise = 28, - SYSCALL_x64_shmget = 29, - SYSCALL_x64_shmat = 30, - SYSCALL_x64_shmctl = 31, - SYSCALL_x64_dup = 32, - SYSCALL_x64_dup2 = 33, - SYSCALL_x64_pause = 34, - SYSCALL_x64_nanosleep = 35, - SYSCALL_x64_getitimer = 36, - SYSCALL_x64_alarm = 37, - SYSCALL_x64_setitimer = 38, - SYSCALL_x64_getpid = 39, - SYSCALL_x64_sendfile = 40, - SYSCALL_x64_socket = 41, - SYSCALL_x64_connect = 42, - SYSCALL_x64_accept = 43, - SYSCALL_x64_sendto = 44, - SYSCALL_x64_recvfrom = 45, - SYSCALL_x64_sendmsg = 46, - SYSCALL_x64_recvmsg = 47, - SYSCALL_x64_shutdown = 48, - SYSCALL_x64_bind = 49, - SYSCALL_x64_listen = 50, - SYSCALL_x64_getsockname = 51, - SYSCALL_x64_getpeername = 52, - SYSCALL_x64_socketpair = 53, - SYSCALL_x64_setsockopt = 54, - SYSCALL_x64_getsockopt = 55, - SYSCALL_x64_clone = 56, - SYSCALL_x64_fork = 57, - SYSCALL_x64_vfork = 58, - SYSCALL_x64_execve = 59, - SYSCALL_x64_exit = 60, - SYSCALL_x64_wait4 = 61, - SYSCALL_x64_kill = 62, - SYSCALL_x64_uname = 63, - SYSCALL_x64_semget = 64, - SYSCALL_x64_semop = 65, - SYSCALL_x64_semctl = 66, - SYSCALL_x64_shmdt = 67, - SYSCALL_x64_msgget = 68, - SYSCALL_x64_msgsnd = 69, - SYSCALL_x64_msgrcv = 70, - SYSCALL_x64_msgctl = 71, - SYSCALL_x64_fcntl = 72, - SYSCALL_x64_flock = 73, - SYSCALL_x64_fsync = 74, - SYSCALL_x64_fdatasync = 75, - SYSCALL_x64_truncate = 76, - SYSCALL_x64_ftruncate = 77, - SYSCALL_x64_getdents = 78, - SYSCALL_x64_getcwd = 79, - SYSCALL_x64_chdir = 80, - SYSCALL_x64_fchdir = 81, - SYSCALL_x64_rename = 82, - SYSCALL_x64_mkdir = 83, - SYSCALL_x64_rmdir = 84, - SYSCALL_x64_creat = 85, - SYSCALL_x64_link = 86, - SYSCALL_x64_unlink = 87, - SYSCALL_x64_symlink = 88, - SYSCALL_x64_readlink = 89, - SYSCALL_x64_chmod = 90, - SYSCALL_x64_fchmod = 91, - SYSCALL_x64_chown = 92, - SYSCALL_x64_fchown = 93, - SYSCALL_x64_lchown = 94, - SYSCALL_x64_umask = 95, - SYSCALL_x64_gettimeofday = 96, - SYSCALL_x64_getrlimit = 97, - SYSCALL_x64_getrusage = 98, - SYSCALL_x64_sysinfo = 99, - SYSCALL_x64_times = 100, - SYSCALL_x64_ptrace = 101, - SYSCALL_x64_getuid = 102, - SYSCALL_x64_syslog = 103, - SYSCALL_x64_getgid = 104, - SYSCALL_x64_setuid = 105, - SYSCALL_x64_setgid = 106, - SYSCALL_x64_geteuid = 107, - SYSCALL_x64_getegid = 108, - SYSCALL_x64_setpgid = 109, - SYSCALL_x64_getppid = 110, - SYSCALL_x64_getpgrp = 111, - SYSCALL_x64_setsid = 112, - SYSCALL_x64_setreuid = 113, - SYSCALL_x64_setregid = 114, - SYSCALL_x64_getgroups = 115, - SYSCALL_x64_setgroups = 116, - SYSCALL_x64_setresuid = 117, - SYSCALL_x64_getresuid = 118, - SYSCALL_x64_setresgid = 119, - SYSCALL_x64_getresgid = 120, - SYSCALL_x64_getpgid = 121, - SYSCALL_x64_setfsuid = 122, - SYSCALL_x64_setfsgid = 123, - SYSCALL_x64_getsid = 124, - SYSCALL_x64_capget = 125, - SYSCALL_x64_capset = 126, - SYSCALL_x64_rt_sigpending = 127, - SYSCALL_x64_rt_sigtimedwait = 128, - SYSCALL_x64_rt_sigqueueinfo = 129, - SYSCALL_x64_rt_sigsuspend = 130, - SYSCALL_x64_sigaltstack = 131, - SYSCALL_x64_utime = 132, - SYSCALL_x64_mknod = 133, - SYSCALL_x64_uselib = 134, - SYSCALL_x64_personality = 135, - SYSCALL_x64_ustat = 136, - SYSCALL_x64_statfs = 137, - SYSCALL_x64_fstatfs = 138, - SYSCALL_x64_sysfs = 139, - SYSCALL_x64_getpriority = 140, - SYSCALL_x64_setpriority = 141, - SYSCALL_x64_sched_setparam = 142, - SYSCALL_x64_sched_getparam = 143, - SYSCALL_x64_sched_setscheduler = 144, - SYSCALL_x64_sched_getscheduler = 145, - SYSCALL_x64_sched_get_priority_max = 146, - SYSCALL_x64_sched_get_priority_min = 147, - SYSCALL_x64_sched_rr_get_interval = 148, - SYSCALL_x64_mlock = 149, - SYSCALL_x64_munlock = 150, - SYSCALL_x64_mlockall = 151, - SYSCALL_x64_munlockall = 152, - SYSCALL_x64_vhangup = 153, - SYSCALL_x64_modify_ldt = 154, - SYSCALL_x64_pivot_root = 155, - SYSCALL_x64__sysctl = 156, - SYSCALL_x64_prctl = 157, - SYSCALL_x64_arch_prctl = 158, - SYSCALL_x64_adjtimex = 159, - SYSCALL_x64_setrlimit = 160, - SYSCALL_x64_chroot = 161, - SYSCALL_x64_sync = 162, - SYSCALL_x64_acct = 163, - SYSCALL_x64_settimeofday = 164, - SYSCALL_x64_mount = 165, - SYSCALL_x64_umount2 = 166, - SYSCALL_x64_swapon = 167, - SYSCALL_x64_swapoff = 168, - SYSCALL_x64_reboot = 169, - SYSCALL_x64_sethostname = 170, - SYSCALL_x64_setdomainname = 171, - SYSCALL_x64_iopl = 172, - SYSCALL_x64_ioperm = 173, - SYSCALL_x64_create_module = 174, - SYSCALL_x64_init_module = 175, - SYSCALL_x64_delete_module = 176, - SYSCALL_x64_get_kernel_syms = 177, - SYSCALL_x64_query_module = 178, - SYSCALL_x64_quotactl = 179, - SYSCALL_x64_nfsservctl = 180, - SYSCALL_x64_getpmsg = 181, - SYSCALL_x64_putpmsg = 182, - SYSCALL_x64_afs_syscall = 183, - SYSCALL_x64_tuxcall = 184, - SYSCALL_x64_security = 185, - SYSCALL_x64_gettid = 186, - SYSCALL_x64_readahead = 187, - SYSCALL_x64_setxattr = 188, - SYSCALL_x64_lsetxattr = 189, - SYSCALL_x64_fsetxattr = 190, - SYSCALL_x64_getxattr = 191, - SYSCALL_x64_lgetxattr = 192, - SYSCALL_x64_fgetxattr = 193, - SYSCALL_x64_listxattr = 194, - SYSCALL_x64_llistxattr = 195, - SYSCALL_x64_flistxattr = 196, - SYSCALL_x64_removexattr = 197, - SYSCALL_x64_lremovexattr = 198, - SYSCALL_x64_fremovexattr = 199, - SYSCALL_x64_tkill = 200, - SYSCALL_x64_time = 201, - SYSCALL_x64_futex = 202, - SYSCALL_x64_sched_setaffinity = 203, - SYSCALL_x64_sched_getaffinity = 204, - SYSCALL_x64_set_thread_area = 205, - SYSCALL_x64_io_setup = 206, - SYSCALL_x64_io_destroy = 207, - SYSCALL_x64_io_getevents = 208, - SYSCALL_x64_io_submit = 209, - SYSCALL_x64_io_cancel = 210, - SYSCALL_x64_get_thread_area = 211, - SYSCALL_x64_lookup_dcookie = 212, - SYSCALL_x64_epoll_create = 213, - SYSCALL_x64_epoll_ctl_old = 214, - SYSCALL_x64_epoll_wait_old = 215, - SYSCALL_x64_remap_file_pages = 216, - SYSCALL_x64_getdents64 = 217, - SYSCALL_x64_set_tid_address = 218, - SYSCALL_x64_restart_syscall = 219, - SYSCALL_x64_semtimedop = 220, - SYSCALL_x64_fadvise64 = 221, - SYSCALL_x64_timer_create = 222, - SYSCALL_x64_timer_settime = 223, - SYSCALL_x64_timer_gettime = 224, - SYSCALL_x64_timer_getoverrun = 225, - SYSCALL_x64_timer_delete = 226, - SYSCALL_x64_clock_settime = 227, - SYSCALL_x64_clock_gettime = 228, - SYSCALL_x64_clock_getres = 229, - SYSCALL_x64_clock_nanosleep = 230, - SYSCALL_x64_exit_group = 231, - SYSCALL_x64_epoll_wait = 232, - SYSCALL_x64_epoll_ctl = 233, - SYSCALL_x64_tgkill = 234, - SYSCALL_x64_utimes = 235, - SYSCALL_x64_vserver = 236, - SYSCALL_x64_mbind = 237, - SYSCALL_x64_set_mempolicy = 238, - SYSCALL_x64_get_mempolicy = 239, - SYSCALL_x64_mq_open = 240, - SYSCALL_x64_mq_unlink = 241, - SYSCALL_x64_mq_timedsend = 242, - SYSCALL_x64_mq_timedreceive = 243, - SYSCALL_x64_mq_notify = 244, - SYSCALL_x64_mq_getsetattr = 245, - SYSCALL_x64_kexec_load = 246, - SYSCALL_x64_waitid = 247, - SYSCALL_x64_add_key = 248, - SYSCALL_x64_request_key = 249, - SYSCALL_x64_keyctl = 250, - SYSCALL_x64_ioprio_set = 251, - SYSCALL_x64_ioprio_get = 252, - SYSCALL_x64_inotify_init = 253, - SYSCALL_x64_inotify_add_watch = 254, - SYSCALL_x64_inotify_rm_watch = 255, - SYSCALL_x64_migrate_pages = 256, - SYSCALL_x64_openat = 257, - SYSCALL_x64_mkdirat = 258, - SYSCALL_x64_mknodat = 259, - SYSCALL_x64_fchownat = 260, - SYSCALL_x64_futimesat = 261, - SYSCALL_x64_newfstatat = 262, - SYSCALL_x64_unlinkat = 263, - SYSCALL_x64_renameat = 264, - SYSCALL_x64_linkat = 265, - SYSCALL_x64_symlinkat = 266, - SYSCALL_x64_readlinkat = 267, - SYSCALL_x64_fchmodat = 268, - SYSCALL_x64_faccessat = 269, - SYSCALL_x64_pselect6 = 270, - SYSCALL_x64_ppoll = 271, - SYSCALL_x64_unshare = 272, - SYSCALL_x64_set_robust_list = 273, - SYSCALL_x64_get_robust_list = 274, - SYSCALL_x64_splice = 275, - SYSCALL_x64_tee = 276, - SYSCALL_x64_sync_file_range = 277, - SYSCALL_x64_vmsplice = 278, - SYSCALL_x64_move_pages = 279, - SYSCALL_x64_utimensat = 280, - SYSCALL_x64_epoll_pwait = 281, - SYSCALL_x64_signalfd = 282, - SYSCALL_x64_timerfd_create = 283, - SYSCALL_x64_eventfd = 284, - SYSCALL_x64_fallocate = 285, - SYSCALL_x64_timerfd_settime = 286, - SYSCALL_x64_timerfd_gettime = 287, - SYSCALL_x64_accept4 = 288, - SYSCALL_x64_signalfd4 = 289, - SYSCALL_x64_eventfd2 = 290, - SYSCALL_x64_epoll_create1 = 291, - SYSCALL_x64_dup3 = 292, - SYSCALL_x64_pipe2 = 293, - SYSCALL_x64_inotify_init1 = 294, - SYSCALL_x64_preadv = 295, - SYSCALL_x64_pwritev = 296, - SYSCALL_x64_rt_tgsigqueueinfo = 297, - SYSCALL_x64_perf_event_open = 298, - SYSCALL_x64_recvmmsg = 299, - SYSCALL_x64_fanotify_init = 300, - SYSCALL_x64_fanotify_mark = 301, - SYSCALL_x64_prlimit64 = 302, - SYSCALL_x64_name_to_handle_at = 303, - SYSCALL_x64_open_by_handle_at = 304, - SYSCALL_x64_clock_adjtime = 305, - SYSCALL_x64_syncfs = 306, - SYSCALL_x64_sendmmsg = 307, - SYSCALL_x64_setns = 308, - SYSCALL_x64_getcpu = 309, - SYSCALL_x64_process_vm_readv = 310, - SYSCALL_x64_process_vm_writev = 311, - SYSCALL_x64_kcmp = 312, - SYSCALL_x64_finit_module = 313, - SYSCALL_x64_sched_setattr = 314, - SYSCALL_x64_sched_getattr = 315, - SYSCALL_x64_renameat2 = 316, - SYSCALL_x64_seccomp = 317, - SYSCALL_x64_getrandom = 318, - SYSCALL_x64_memfd_create = 319, - SYSCALL_x64_kexec_file_load = 320, - SYSCALL_x64_bpf = 321, - SYSCALL_x64_execveat = 322, - SYSCALL_x64_userfaultfd = 323, - SYSCALL_x64_membarrier = 324, - SYSCALL_x64_mlock2 = 325, - SYSCALL_x64_copy_file_range = 326, - SYSCALL_x64_preadv2 = 327, - SYSCALL_x64_pwritev2 = 328, - SYSCALL_x64_pkey_mprotect = 329, - SYSCALL_x64_pkey_alloc = 330, - SYSCALL_x64_pkey_free = 331, - SYSCALL_x64_statx = 332, - SYSCALL_x64_io_pgetevents = 333, - SYSCALL_x64_rseq = 334, - SYSCALL_x64_pidfd_send_signal = 424, - SYSCALL_x64_io_uring_setup = 425, - SYSCALL_x64_io_uring_enter = 426, - SYSCALL_x64_io_uring_register = 427, - SYSCALL_x64_open_tree = 428, - SYSCALL_x64_move_mount = 429, - SYSCALL_x64_fsopen = 430, - SYSCALL_x64_fsconfig = 431, - SYSCALL_x64_fsmount = 432, - SYSCALL_x64_fspick = 433, - SYSCALL_x64_pidfd_open = 434, - SYSCALL_x64_clone3 = 435, - SYSCALL_x64_openat2 = 437, - SYSCALL_x64_pidfd_getfd = 438, - SYSCALL_MAX = 512, -}; +#include "SyscallsEnum.h" FEXCore::SyscallHandler *CreateHandler(FEXCore::Context::Context *ctx); void RegisterSyscallInternal(int SyscallNumber, const std::string& TraceFormatString, void* SyscallHandler, int ArgumentCount); diff --git a/External/FEXCore/Source/Interface/HLE/x64/SyscallsEnum.h b/External/FEXCore/Source/Interface/HLE/x64/SyscallsEnum.h new file mode 100644 index 000000000..540316f35 --- /dev/null +++ b/External/FEXCore/Source/Interface/HLE/x64/SyscallsEnum.h @@ -0,0 +1,353 @@ +///< Enum containing all x86-64 linux syscalls for the guest kernel version +enum Syscalls { + SYSCALL_x64_read = 0, + SYSCALL_x64_write = 1, + SYSCALL_x64_open = 2, + SYSCALL_x64_close = 3, + SYSCALL_x64_stat = 4, + SYSCALL_x64_fstat = 5, + SYSCALL_x64_lstat = 6, + SYSCALL_x64_poll = 7, + SYSCALL_x64_lseek = 8, + SYSCALL_x64_mmap = 9, + SYSCALL_x64_mprotect = 10, + SYSCALL_x64_munmap = 11, + SYSCALL_x64_brk = 12, + SYSCALL_x64_rt_sigaction = 13, + SYSCALL_x64_rt_sigprocmask = 14, + SYSCALL_x64_rt_sigreturn = 15, + SYSCALL_x64_ioctl = 16, + SYSCALL_x64_pread64 = 17, + SYSCALL_x64_pwrite64 = 18, + SYSCALL_x64_readv = 19, + SYSCALL_x64_writev = 20, + SYSCALL_x64_access = 21, + SYSCALL_x64_pipe = 22, + SYSCALL_x64_select = 23, + SYSCALL_x64_sched_yield = 24, + SYSCALL_x64_mremap = 25, + SYSCALL_x64_msync = 26, + SYSCALL_x64_mincore = 27, + SYSCALL_x64_madvise = 28, + SYSCALL_x64_shmget = 29, + SYSCALL_x64_shmat = 30, + SYSCALL_x64_shmctl = 31, + SYSCALL_x64_dup = 32, + SYSCALL_x64_dup2 = 33, + SYSCALL_x64_pause = 34, + SYSCALL_x64_nanosleep = 35, + SYSCALL_x64_getitimer = 36, + SYSCALL_x64_alarm = 37, + SYSCALL_x64_setitimer = 38, + SYSCALL_x64_getpid = 39, + SYSCALL_x64_sendfile = 40, + SYSCALL_x64_socket = 41, + SYSCALL_x64_connect = 42, + SYSCALL_x64_accept = 43, + SYSCALL_x64_sendto = 44, + SYSCALL_x64_recvfrom = 45, + SYSCALL_x64_sendmsg = 46, + SYSCALL_x64_recvmsg = 47, + SYSCALL_x64_shutdown = 48, + SYSCALL_x64_bind = 49, + SYSCALL_x64_listen = 50, + SYSCALL_x64_getsockname = 51, + SYSCALL_x64_getpeername = 52, + SYSCALL_x64_socketpair = 53, + SYSCALL_x64_setsockopt = 54, + SYSCALL_x64_getsockopt = 55, + SYSCALL_x64_clone = 56, + SYSCALL_x64_fork = 57, + SYSCALL_x64_vfork = 58, + SYSCALL_x64_execve = 59, + SYSCALL_x64_exit = 60, + SYSCALL_x64_wait4 = 61, + SYSCALL_x64_kill = 62, + SYSCALL_x64_uname = 63, + SYSCALL_x64_semget = 64, + SYSCALL_x64_semop = 65, + SYSCALL_x64_semctl = 66, + SYSCALL_x64_shmdt = 67, + SYSCALL_x64_msgget = 68, + SYSCALL_x64_msgsnd = 69, + SYSCALL_x64_msgrcv = 70, + SYSCALL_x64_msgctl = 71, + SYSCALL_x64_fcntl = 72, + SYSCALL_x64_flock = 73, + SYSCALL_x64_fsync = 74, + SYSCALL_x64_fdatasync = 75, + SYSCALL_x64_truncate = 76, + SYSCALL_x64_ftruncate = 77, + SYSCALL_x64_getdents = 78, + SYSCALL_x64_getcwd = 79, + SYSCALL_x64_chdir = 80, + SYSCALL_x64_fchdir = 81, + SYSCALL_x64_rename = 82, + SYSCALL_x64_mkdir = 83, + SYSCALL_x64_rmdir = 84, + SYSCALL_x64_creat = 85, + SYSCALL_x64_link = 86, + SYSCALL_x64_unlink = 87, + SYSCALL_x64_symlink = 88, + SYSCALL_x64_readlink = 89, + SYSCALL_x64_chmod = 90, + SYSCALL_x64_fchmod = 91, + SYSCALL_x64_chown = 92, + SYSCALL_x64_fchown = 93, + SYSCALL_x64_lchown = 94, + SYSCALL_x64_umask = 95, + SYSCALL_x64_gettimeofday = 96, + SYSCALL_x64_getrlimit = 97, + SYSCALL_x64_getrusage = 98, + SYSCALL_x64_sysinfo = 99, + SYSCALL_x64_times = 100, + SYSCALL_x64_ptrace = 101, + SYSCALL_x64_getuid = 102, + SYSCALL_x64_syslog = 103, + SYSCALL_x64_getgid = 104, + SYSCALL_x64_setuid = 105, + SYSCALL_x64_setgid = 106, + SYSCALL_x64_geteuid = 107, + SYSCALL_x64_getegid = 108, + SYSCALL_x64_setpgid = 109, + SYSCALL_x64_getppid = 110, + SYSCALL_x64_getpgrp = 111, + SYSCALL_x64_setsid = 112, + SYSCALL_x64_setreuid = 113, + SYSCALL_x64_setregid = 114, + SYSCALL_x64_getgroups = 115, + SYSCALL_x64_setgroups = 116, + SYSCALL_x64_setresuid = 117, + SYSCALL_x64_getresuid = 118, + SYSCALL_x64_setresgid = 119, + SYSCALL_x64_getresgid = 120, + SYSCALL_x64_getpgid = 121, + SYSCALL_x64_setfsuid = 122, + SYSCALL_x64_setfsgid = 123, + SYSCALL_x64_getsid = 124, + SYSCALL_x64_capget = 125, + SYSCALL_x64_capset = 126, + SYSCALL_x64_rt_sigpending = 127, + SYSCALL_x64_rt_sigtimedwait = 128, + SYSCALL_x64_rt_sigqueueinfo = 129, + SYSCALL_x64_rt_sigsuspend = 130, + SYSCALL_x64_sigaltstack = 131, + SYSCALL_x64_utime = 132, + SYSCALL_x64_mknod = 133, + SYSCALL_x64_uselib = 134, + SYSCALL_x64_personality = 135, + SYSCALL_x64_ustat = 136, + SYSCALL_x64_statfs = 137, + SYSCALL_x64_fstatfs = 138, + SYSCALL_x64_sysfs = 139, + SYSCALL_x64_getpriority = 140, + SYSCALL_x64_setpriority = 141, + SYSCALL_x64_sched_setparam = 142, + SYSCALL_x64_sched_getparam = 143, + SYSCALL_x64_sched_setscheduler = 144, + SYSCALL_x64_sched_getscheduler = 145, + SYSCALL_x64_sched_get_priority_max = 146, + SYSCALL_x64_sched_get_priority_min = 147, + SYSCALL_x64_sched_rr_get_interval = 148, + SYSCALL_x64_mlock = 149, + SYSCALL_x64_munlock = 150, + SYSCALL_x64_mlockall = 151, + SYSCALL_x64_munlockall = 152, + SYSCALL_x64_vhangup = 153, + SYSCALL_x64_modify_ldt = 154, + SYSCALL_x64_pivot_root = 155, + SYSCALL_x64__sysctl = 156, + SYSCALL_x64_prctl = 157, + SYSCALL_x64_arch_prctl = 158, + SYSCALL_x64_adjtimex = 159, + SYSCALL_x64_setrlimit = 160, + SYSCALL_x64_chroot = 161, + SYSCALL_x64_sync = 162, + SYSCALL_x64_acct = 163, + SYSCALL_x64_settimeofday = 164, + SYSCALL_x64_mount = 165, + SYSCALL_x64_umount2 = 166, + SYSCALL_x64_swapon = 167, + SYSCALL_x64_swapoff = 168, + SYSCALL_x64_reboot = 169, + SYSCALL_x64_sethostname = 170, + SYSCALL_x64_setdomainname = 171, + SYSCALL_x64_iopl = 172, + SYSCALL_x64_ioperm = 173, + SYSCALL_x64_create_module = 174, + SYSCALL_x64_init_module = 175, + SYSCALL_x64_delete_module = 176, + SYSCALL_x64_get_kernel_syms = 177, + SYSCALL_x64_query_module = 178, + SYSCALL_x64_quotactl = 179, + SYSCALL_x64_nfsservctl = 180, + SYSCALL_x64_getpmsg = 181, + SYSCALL_x64_putpmsg = 182, + SYSCALL_x64_afs_syscall = 183, + SYSCALL_x64_tuxcall = 184, + SYSCALL_x64_security = 185, + SYSCALL_x64_gettid = 186, + SYSCALL_x64_readahead = 187, + SYSCALL_x64_setxattr = 188, + SYSCALL_x64_lsetxattr = 189, + SYSCALL_x64_fsetxattr = 190, + SYSCALL_x64_getxattr = 191, + SYSCALL_x64_lgetxattr = 192, + SYSCALL_x64_fgetxattr = 193, + SYSCALL_x64_listxattr = 194, + SYSCALL_x64_llistxattr = 195, + SYSCALL_x64_flistxattr = 196, + SYSCALL_x64_removexattr = 197, + SYSCALL_x64_lremovexattr = 198, + SYSCALL_x64_fremovexattr = 199, + SYSCALL_x64_tkill = 200, + SYSCALL_x64_time = 201, + SYSCALL_x64_futex = 202, + SYSCALL_x64_sched_setaffinity = 203, + SYSCALL_x64_sched_getaffinity = 204, + SYSCALL_x64_set_thread_area = 205, + SYSCALL_x64_io_setup = 206, + SYSCALL_x64_io_destroy = 207, + SYSCALL_x64_io_getevents = 208, + SYSCALL_x64_io_submit = 209, + SYSCALL_x64_io_cancel = 210, + SYSCALL_x64_get_thread_area = 211, + SYSCALL_x64_lookup_dcookie = 212, + SYSCALL_x64_epoll_create = 213, + SYSCALL_x64_epoll_ctl_old = 214, + SYSCALL_x64_epoll_wait_old = 215, + SYSCALL_x64_remap_file_pages = 216, + SYSCALL_x64_getdents64 = 217, + SYSCALL_x64_set_tid_address = 218, + SYSCALL_x64_restart_syscall = 219, + SYSCALL_x64_semtimedop = 220, + SYSCALL_x64_fadvise64 = 221, + SYSCALL_x64_timer_create = 222, + SYSCALL_x64_timer_settime = 223, + SYSCALL_x64_timer_gettime = 224, + SYSCALL_x64_timer_getoverrun = 225, + SYSCALL_x64_timer_delete = 226, + SYSCALL_x64_clock_settime = 227, + SYSCALL_x64_clock_gettime = 228, + SYSCALL_x64_clock_getres = 229, + SYSCALL_x64_clock_nanosleep = 230, + SYSCALL_x64_exit_group = 231, + SYSCALL_x64_epoll_wait = 232, + SYSCALL_x64_epoll_ctl = 233, + SYSCALL_x64_tgkill = 234, + SYSCALL_x64_utimes = 235, + SYSCALL_x64_vserver = 236, + SYSCALL_x64_mbind = 237, + SYSCALL_x64_set_mempolicy = 238, + SYSCALL_x64_get_mempolicy = 239, + SYSCALL_x64_mq_open = 240, + SYSCALL_x64_mq_unlink = 241, + SYSCALL_x64_mq_timedsend = 242, + SYSCALL_x64_mq_timedreceive = 243, + SYSCALL_x64_mq_notify = 244, + SYSCALL_x64_mq_getsetattr = 245, + SYSCALL_x64_kexec_load = 246, + SYSCALL_x64_waitid = 247, + SYSCALL_x64_add_key = 248, + SYSCALL_x64_request_key = 249, + SYSCALL_x64_keyctl = 250, + SYSCALL_x64_ioprio_set = 251, + SYSCALL_x64_ioprio_get = 252, + SYSCALL_x64_inotify_init = 253, + SYSCALL_x64_inotify_add_watch = 254, + SYSCALL_x64_inotify_rm_watch = 255, + SYSCALL_x64_migrate_pages = 256, + SYSCALL_x64_openat = 257, + SYSCALL_x64_mkdirat = 258, + SYSCALL_x64_mknodat = 259, + SYSCALL_x64_fchownat = 260, + SYSCALL_x64_futimesat = 261, + SYSCALL_x64_newfstatat = 262, + SYSCALL_x64_unlinkat = 263, + SYSCALL_x64_renameat = 264, + SYSCALL_x64_linkat = 265, + SYSCALL_x64_symlinkat = 266, + SYSCALL_x64_readlinkat = 267, + SYSCALL_x64_fchmodat = 268, + SYSCALL_x64_faccessat = 269, + SYSCALL_x64_pselect6 = 270, + SYSCALL_x64_ppoll = 271, + SYSCALL_x64_unshare = 272, + SYSCALL_x64_set_robust_list = 273, + SYSCALL_x64_get_robust_list = 274, + SYSCALL_x64_splice = 275, + SYSCALL_x64_tee = 276, + SYSCALL_x64_sync_file_range = 277, + SYSCALL_x64_vmsplice = 278, + SYSCALL_x64_move_pages = 279, + SYSCALL_x64_utimensat = 280, + SYSCALL_x64_epoll_pwait = 281, + SYSCALL_x64_signalfd = 282, + SYSCALL_x64_timerfd_create = 283, + SYSCALL_x64_eventfd = 284, + SYSCALL_x64_fallocate = 285, + SYSCALL_x64_timerfd_settime = 286, + SYSCALL_x64_timerfd_gettime = 287, + SYSCALL_x64_accept4 = 288, + SYSCALL_x64_signalfd4 = 289, + SYSCALL_x64_eventfd2 = 290, + SYSCALL_x64_epoll_create1 = 291, + SYSCALL_x64_dup3 = 292, + SYSCALL_x64_pipe2 = 293, + SYSCALL_x64_inotify_init1 = 294, + SYSCALL_x64_preadv = 295, + SYSCALL_x64_pwritev = 296, + SYSCALL_x64_rt_tgsigqueueinfo = 297, + SYSCALL_x64_perf_event_open = 298, + SYSCALL_x64_recvmmsg = 299, + SYSCALL_x64_fanotify_init = 300, + SYSCALL_x64_fanotify_mark = 301, + SYSCALL_x64_prlimit64 = 302, + SYSCALL_x64_name_to_handle_at = 303, + SYSCALL_x64_open_by_handle_at = 304, + SYSCALL_x64_clock_adjtime = 305, + SYSCALL_x64_syncfs = 306, + SYSCALL_x64_sendmmsg = 307, + SYSCALL_x64_setns = 308, + SYSCALL_x64_getcpu = 309, + SYSCALL_x64_process_vm_readv = 310, + SYSCALL_x64_process_vm_writev = 311, + SYSCALL_x64_kcmp = 312, + SYSCALL_x64_finit_module = 313, + SYSCALL_x64_sched_setattr = 314, + SYSCALL_x64_sched_getattr = 315, + SYSCALL_x64_renameat2 = 316, + SYSCALL_x64_seccomp = 317, + SYSCALL_x64_getrandom = 318, + SYSCALL_x64_memfd_create = 319, + SYSCALL_x64_kexec_file_load = 320, + SYSCALL_x64_bpf = 321, + SYSCALL_x64_execveat = 322, + SYSCALL_x64_userfaultfd = 323, + SYSCALL_x64_membarrier = 324, + SYSCALL_x64_mlock2 = 325, + SYSCALL_x64_copy_file_range = 326, + SYSCALL_x64_preadv2 = 327, + SYSCALL_x64_pwritev2 = 328, + SYSCALL_x64_pkey_mprotect = 329, + SYSCALL_x64_pkey_alloc = 330, + SYSCALL_x64_pkey_free = 331, + SYSCALL_x64_statx = 332, + SYSCALL_x64_io_pgetevents = 333, + SYSCALL_x64_rseq = 334, + SYSCALL_x64_pidfd_send_signal = 424, + SYSCALL_x64_io_uring_setup = 425, + SYSCALL_x64_io_uring_enter = 426, + SYSCALL_x64_io_uring_register = 427, + SYSCALL_x64_open_tree = 428, + SYSCALL_x64_move_mount = 429, + SYSCALL_x64_fsopen = 430, + SYSCALL_x64_fsconfig = 431, + SYSCALL_x64_fsmount = 432, + SYSCALL_x64_fspick = 433, + SYSCALL_x64_pidfd_open = 434, + SYSCALL_x64_clone3 = 435, + SYSCALL_x64_openat2 = 437, + SYSCALL_x64_pidfd_getfd = 438, + SYSCALL_MAX = 512, +}; diff --git a/External/FEXCore/Source/Interface/HLE/x64/SyscallsNames.inl b/External/FEXCore/Source/Interface/HLE/x64/SyscallsNames.inl new file mode 100644 index 000000000..450026ecc --- /dev/null +++ b/External/FEXCore/Source/Interface/HLE/x64/SyscallsNames.inl @@ -0,0 +1,349 @@ +{ 0, "read"}, +{ 1, "write"}, +{ 2, "open"}, +{ 3, "close"}, +{ 4, "stat"}, +{ 5, "fstat"}, +{ 6, "lstat"}, +{ 7, "poll"}, +{ 8, "lseek"}, +{ 9, "mmap"}, +{ 10, "mprotect"}, +{ 11, "munmap"}, +{ 12, "brk"}, +{ 13, "rt_sigaction"}, +{ 14, "rt_sigprocmask"}, +{ 15, "rt_sigreturn"}, +{ 16, "ioctl"}, +{ 17, "pread64"}, +{ 18, "pwrite64"}, +{ 19, "readv"}, +{ 20, "writev"}, +{ 21, "access"}, +{ 22, "pipe"}, +{ 23, "select"}, +{ 24, "sched_yield"}, +{ 25, "mremap"}, +{ 26, "msync"}, +{ 27, "mincore"}, +{ 28, "madvise"}, +{ 29, "shmget"}, +{ 30, "shmat"}, +{ 31, "shmctl"}, +{ 32, "dup"}, +{ 33, "dup2"}, +{ 34, "pause"}, +{ 35, "nanosleep"}, +{ 36, "getitimer"}, +{ 37, "alarm"}, +{ 38, "setitimer"}, +{ 39, "getpid"}, +{ 40, "sendfile"}, +{ 41, "socket"}, +{ 42, "connect"}, +{ 43, "accept"}, +{ 44, "sendto"}, +{ 45, "recvfrom"}, +{ 46, "sendmsg"}, +{ 47, "recvmsg"}, +{ 48, "shutdown"}, +{ 49, "bind"}, +{ 50, "listen"}, +{ 51, "getsockname"}, +{ 52, "getpeername"}, +{ 53, "socketpair"}, +{ 54, "setsockopt"}, +{ 55, "getsockopt"}, +{ 56, "clone"}, +{ 57, "fork"}, +{ 58, "vfork"}, +{ 59, "execve"}, +{ 60, "exit"}, +{ 61, "wait4"}, +{ 62, "kill"}, +{ 63, "uname"}, +{ 64, "semget"}, +{ 65, "semop"}, +{ 66, "semctl"}, +{ 67, "shmdt"}, +{ 68, "msgget"}, +{ 69, "msgsnd"}, +{ 70, "msgrcv"}, +{ 71, "msgctl"}, +{ 72, "fcntl"}, +{ 73, "flock"}, +{ 74, "fsync"}, +{ 75, "fdatasync"}, +{ 76, "truncate"}, +{ 77, "ftruncate"}, +{ 78, "getdents"}, +{ 79, "getcwd"}, +{ 80, "chdir"}, +{ 81, "fchdir"}, +{ 82, "rename"}, +{ 83, "mkdir"}, +{ 84, "rmdir"}, +{ 85, "creat"}, +{ 86, "link"}, +{ 87, "unlink"}, +{ 88, "symlink"}, +{ 89, "readlink"}, +{ 90, "chmod"}, +{ 91, "fchmod"}, +{ 92, "chown"}, +{ 93, "fchown"}, +{ 94, "lchown"}, +{ 95, "umask"}, +{ 96, "gettimeofday"}, +{ 97, "getrlimit"}, +{ 98, "getrusage"}, +{ 99, "sysinfo"}, +{ 100, "times"}, +{ 101, "ptrace"}, +{ 102, "getuid"}, +{ 103, "syslog"}, +{ 104, "getgid"}, +{ 105, "setuid"}, +{ 106, "setgid"}, +{ 107, "geteuid"}, +{ 108, "getegid"}, +{ 109, "setpgid"}, +{ 110, "getppid"}, +{ 111, "getpgrp"}, +{ 112, "setsid"}, +{ 113, "setreuid"}, +{ 114, "setregid"}, +{ 115, "getgroups"}, +{ 116, "setgroups"}, +{ 117, "setresuid"}, +{ 118, "getresuid"}, +{ 119, "setresgid"}, +{ 120, "getresgid"}, +{ 121, "getpgid"}, +{ 122, "setfsuid"}, +{ 123, "setfsgid"}, +{ 124, "getsid"}, +{ 125, "capget"}, +{ 126, "capset"}, +{ 127, "rt_sigpending"}, +{ 128, "rt_sigtimedwait"}, +{ 129, "rt_sigqueueinfo"}, +{ 130, "rt_sigsuspend"}, +{ 131, "sigaltstack"}, +{ 132, "utime"}, +{ 133, "mknod"}, +{ 134, "uselib"}, +{ 135, "personality"}, +{ 136, "ustat"}, +{ 137, "statfs"}, +{ 138, "fstatfs"}, +{ 139, "sysfs"}, +{ 140, "getpriority"}, +{ 141, "setpriority"}, +{ 142, "sched_setparam"}, +{ 143, "sched_getparam"}, +{ 144, "sched_setscheduler"}, +{ 145, "sched_getscheduler"}, +{ 146, "sched_get_priority_max"}, +{ 147, "sched_get_priority_min"}, +{ 148, "sched_rr_get_interval"}, +{ 149, "mlock"}, +{ 150, "munlock"}, +{ 151, "mlockall"}, +{ 152, "munlockall"}, +{ 153, "vhangup"}, +{ 154, "modify_ldt"}, +{ 155, "pivot_root"}, +{ 156, "_sysctl"}, +{ 157, "prctl"}, +{ 158, "arch_prctl"}, +{ 159, "adjtimex"}, +{ 160, "setrlimit"}, +{ 161, "chroot"}, +{ 162, "sync"}, +{ 163, "acct"}, +{ 164, "settimeofday"}, +{ 165, "mount"}, +{ 166, "umount2"}, +{ 167, "swapon"}, +{ 168, "swapoff"}, +{ 169, "reboot"}, +{ 170, "sethostname"}, +{ 171, "setdomainname"}, +{ 172, "iopl"}, +{ 173, "ioperm"}, +{ 174, "create_module"}, +{ 175, "init_module"}, +{ 176, "delete_module"}, +{ 177, "get_kernel_syms"}, +{ 178, "query_module"}, +{ 179, "quotactl"}, +{ 180, "nfsservctl"}, +{ 181, "getpmsg"}, +{ 182, "putpmsg"}, +{ 183, "afs_syscall"}, +{ 184, "tuxcall"}, +{ 185, "security"}, +{ 186, "gettid"}, +{ 187, "readahead"}, +{ 188, "setxattr"}, +{ 189, "lsetxattr"}, +{ 190, "fsetxattr"}, +{ 191, "getxattr"}, +{ 192, "lgetxattr"}, +{ 193, "fgetxattr"}, +{ 194, "listxattr"}, +{ 195, "llistxattr"}, +{ 196, "flistxattr"}, +{ 197, "removexattr"}, +{ 198, "lremovexattr"}, +{ 199, "fremovexattr"}, +{ 200, "tkill"}, +{ 201, "time"}, +{ 202, "futex"}, +{ 203, "sched_setaffinity"}, +{ 204, "sched_getaffinity"}, +{ 205, "set_thread_area"}, +{ 206, "io_setup"}, +{ 207, "io_destroy"}, +{ 208, "io_getevents"}, +{ 209, "io_submit"}, +{ 210, "io_cancel"}, +{ 211, "get_thread_area"}, +{ 212, "lookup_dcookie"}, +{ 213, "epoll_create"}, +{ 214, "epoll_ctl_old"}, +{ 215, "epoll_wait_old"}, +{ 216, "remap_file_pages"}, +{ 217, "getdents64"}, +{ 218, "set_tid_address"}, +{ 219, "restart_syscall"}, +{ 220, "semtimedop"}, +{ 221, "fadvise64"}, +{ 222, "timer_create"}, +{ 223, "timer_settime"}, +{ 224, "timer_gettime"}, +{ 225, "timer_getoverrun"}, +{ 226, "timer_delete"}, +{ 227, "clock_settime"}, +{ 228, "clock_gettime"}, +{ 229, "clock_getres"}, +{ 230, "clock_nanosleep"}, +{ 231, "exit_group"}, +{ 232, "epoll_wait"}, +{ 233, "epoll_ctl"}, +{ 234, "tgkill"}, +{ 235, "utimes"}, +{ 236, "vserver"}, +{ 237, "mbind"}, +{ 238, "set_mempolicy"}, +{ 239, "get_mempolicy"}, +{ 240, "mq_open"}, +{ 241, "mq_unlink"}, +{ 242, "mq_timedsend"}, +{ 243, "mq_timedreceive"}, +{ 244, "mq_notify"}, +{ 245, "mq_getsetattr"}, +{ 246, "kexec_load"}, +{ 247, "waitid"}, +{ 248, "add_key"}, +{ 249, "request_key"}, +{ 250, "keyctl"}, +{ 251, "ioprio_set"}, +{ 252, "ioprio_get"}, +{ 253, "inotify_init"}, +{ 254, "inotify_add_watch"}, +{ 255, "inotify_rm_watch"}, +{ 256, "migrate_pages"}, +{ 257, "openat"}, +{ 258, "mkdirat"}, +{ 259, "mknodat"}, +{ 260, "fchownat"}, +{ 261, "futimesat"}, +{ 262, "newfstatat"}, +{ 263, "unlinkat"}, +{ 264, "renameat"}, +{ 265, "linkat"}, +{ 266, "symlinkat"}, +{ 267, "readlinkat"}, +{ 268, "fchmodat"}, +{ 269, "faccessat"}, +{ 270, "pselect6"}, +{ 271, "ppoll"}, +{ 272, "unshare"}, +{ 273, "set_robust_list"}, +{ 274, "get_robust_list"}, +{ 275, "splice"}, +{ 276, "tee"}, +{ 277, "sync_file_range"}, +{ 278, "vmsplice"}, +{ 279, "move_pages"}, +{ 280, "utimensat"}, +{ 281, "epoll_pwait"}, +{ 282, "signalfd"}, +{ 283, "timerfd_create"}, +{ 284, "eventfd"}, +{ 285, "fallocate"}, +{ 286, "timerfd_settime"}, +{ 287, "timerfd_gettime"}, +{ 288, "accept4"}, +{ 289, "signalfd4"}, +{ 290, "eventfd2"}, +{ 291, "epoll_create1"}, +{ 292, "dup3"}, +{ 293, "pipe2"}, +{ 294, "inotify_init1"}, +{ 295, "preadv"}, +{ 296, "pwritev"}, +{ 297, "rt_tgsigqueueinfo"}, +{ 298, "perf_event_open"}, +{ 299, "recvmmsg"}, +{ 300, "fanotify_init"}, +{ 301, "fanotify_mark"}, +{ 302, "prlimit64"}, +{ 303, "name_to_handle_at"}, +{ 304, "open_by_handle_at"}, +{ 305, "clock_adjtime"}, +{ 306, "syncfs"}, +{ 307, "sendmmsg"}, +{ 308, "setns"}, +{ 309, "getcpu"}, +{ 310, "process_vm_readv"}, +{ 311, "process_vm_writev"}, +{ 312, "kcmp"}, +{ 313, "finit_module"}, +{ 314, "sched_setattr"}, +{ 315, "sched_getattr"}, +{ 316, "renameat2"}, +{ 317, "seccomp"}, +{ 318, "getrandom"}, +{ 319, "memfd_create"}, +{ 320, "kexec_file_load"}, +{ 321, "bpf"}, +{ 322, "execveat"}, +{ 323, "userfaultfd"}, +{ 324, "membarrier"}, +{ 325, "mlock2"}, +{ 326, "copy_file_range"}, +{ 327, "preadv2"}, +{ 328, "pwritev2"}, +{ 329, "pkey_mprotect"}, +{ 330, "pkey_alloc"}, +{ 331, "pkey_free"}, +{ 332, "statx"}, +{ 333, "io_pgetevents"}, +{ 334, "rseq"}, +{ 424, "pidfd_send_signal"}, +{ 425, "io_uring_setup"}, +{ 426, "io_uring_enter"}, +{ 427, "io_uring_register"}, +{ 428, "open_tree"}, +{ 429, "move_mount"}, +{ 430, "fsopen"}, +{ 431, "fsconfig"}, +{ 432, "fsmount"}, +{ 433, "fspick"}, +{ 434, "pidfd_open"}, +{ 435, "clone3"}, +{ 437, "openat2"}, +{ 438, "pidfd_getfd"} \ No newline at end of file