about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-29 18:37:44 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-03-29 18:37:44 +0200
commit19915ad238735a1c982dbbc8811f8780d1318463 (patch)
tree35648fedf1645af414e48ecf9c974c84197f0eb3 /src
parent5e8fb559558dc0424f89c8eac599348630fe8e45 (diff)
downloadbox64-19915ad238735a1c982dbbc8811f8780d1318463.tar.gz
box64-19915ad238735a1c982dbbc8811f8780d1318463.zip
Added syscall 57
Diffstat (limited to 'src')
-rwxr-xr-xsrc/emu/x64syscall.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/emu/x64syscall.c b/src/emu/x64syscall.c
index 6f6291c5..e366d8dd 100755
--- a/src/emu/x64syscall.c
+++ b/src/emu/x64syscall.c
@@ -75,6 +75,9 @@ scwrap_t syscallwrap[] = {
     #ifdef __NR_pipe
     { 22, __NR_pipe, 1},
     #endif
+    #ifdef __NR_fork
+    { 57, __NR_fork, 0 },    // should wrap this one, because of the struct pt_regs (the only arg)?
+    #endif
     //{ 131, __NR_sigaltstack, 2},  // wrapped to use my_sigaltstack
     { 157, __NR_prctl, 5 },     // needs wrapping?
     { 186, __NR_gettid, 0 },
@@ -181,6 +184,11 @@ void EXPORT x64Syscall(x64emu_t *emu)
             R_EAX = (uint32_t)pipe((void*)R_RDI);
             break;
         #endif
+        #ifndef __NR_fork
+        case 57: 
+            R_RAX = fork();
+            break;
+        #endif
         case 131: // sys_sigaltstack
             R_EAX = (uint32_t)my_sigaltstack(emu, (void*)R_RDI, (void*)R_RSI);
             break;
@@ -245,6 +253,10 @@ uintptr_t EXPORT my_syscall(x64emu_t *emu)
         case 22:
             return (uint32_t)pipe((void*)R_RSI);
         #endif
+        #ifndef __NR_fork
+        case 57: 
+            return fork();
+        #endif
         case 131: // sys_sigaltstack
             return (uint32_t)my_sigaltstack(emu, (void*)R_RSI, (void*)R_RDX);
         default: