about summary refs log tree commit diff stats
path: root/src/emu/x64syscall.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-03-26 13:20:34 +0100
committerptitSeb <sebastien.chev@gmail.com>2022-03-26 13:20:34 +0100
commit1eaa7159a6416640bccf3cc3541adedcde2649b0 (patch)
treea45af1710cc233e1deeef13374af8ed7b59d79c1 /src/emu/x64syscall.c
parent4015c26e68a5ce812673a3d434f8d98fa21755c1 (diff)
downloadbox64-1eaa7159a6416640bccf3cc3541adedcde2649b0.tar.gz
box64-1eaa7159a6416640bccf3cc3541adedcde2649b0.zip
More work around steam and proton/SteamPlay (working, but need also latest box86)
Diffstat (limited to 'src/emu/x64syscall.c')
-rwxr-xr-xsrc/emu/x64syscall.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/emu/x64syscall.c b/src/emu/x64syscall.c
index d83cbaba..c9fa59dc 100755
--- a/src/emu/x64syscall.c
+++ b/src/emu/x64syscall.c
@@ -177,6 +177,9 @@ scwrap_t syscallwrap[] = {
     #ifdef __NR_fchmodat4
     { 434, __NR_fchmodat4, 4},
     #endif
+    #ifdef __NR_futex_waitv
+    { 449, __NR_futex_waitv, 5},
+    #endif
 };
 
 struct mmap_arg_struct {
@@ -483,6 +486,7 @@ void EXPORT x64Syscall(x64emu_t *emu)
 
 uintptr_t EXPORT my_syscall(x64emu_t *emu)
 {
+    static uint32_t warned = 0;
     uint32_t s = R_EDI;
     printf_dump(LOG_DEBUG, "%p: Calling libc syscall 0x%02X (%d) %p %p %p %p %p\n", (void*)R_RIP, s, s, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); 
     // check wrapper first
@@ -643,7 +647,10 @@ uintptr_t EXPORT my_syscall(x64emu_t *emu)
             return (int)fchmodat((int)R_ESI, (void*)R_RDX, (mode_t)R_RCX, (int)R_R8d);
         #endif
         default:
-            printf_log(LOG_INFO, "Warning: Unsupported libc Syscall 0x%02X (%d)\n", s, s);
+            if(!(warned&(1<<s))) {
+                printf_log(LOG_INFO, "Warning: Unsupported libc Syscall 0x%02X (%d)\n", s, s);
+                warned|=(1<<s);
+            }
             errno = ENOSYS;
             return -1;
     }