diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-09-04 13:50:22 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-09-04 13:50:22 +0200 |
| commit | 0a343b72f2d339a2e7ba464b7581974af690dccb (patch) | |
| tree | 2939473e27d58ccc3100570c3a6fe5880cc9963b /src | |
| parent | ab9178f6381a82aae9c52c8119c6806aa325d4c5 (diff) | |
| download | box64-0a343b72f2d339a2e7ba464b7581974af690dccb.tar.gz box64-0a343b72f2d339a2e7ba464b7581974af690dccb.zip | |
Added syscall 56 (for #109)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/emu/x64syscall.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/emu/x64syscall.c b/src/emu/x64syscall.c index ccdbadd4..8bd979e7 100755 --- a/src/emu/x64syscall.c +++ b/src/emu/x64syscall.c @@ -106,6 +106,9 @@ scwrap_t syscallwrap[] = { { 46, __NR_sendmsg, 3}, { 47, __NR_recvmsg, 3}, { 53, __NR_socketpair, 4}, + #ifdef __NR_vfork + {56, __NR_vfork, 0}, + #endif #ifdef __NR_fork { 57, __NR_fork, 0 }, // should wrap this one, because of the struct pt_regs (the only arg)? #endif @@ -330,6 +333,14 @@ void EXPORT x64Syscall(x64emu_t *emu) case 25: // sys_mremap R_RAX = (uintptr_t)my_mremap(emu, (void*)R_RDI, R_RSI, R_RDX, R_R10d, (void*)R_R8); break; + #ifndef __NR_vfork + case 56: // vfork + { + int64_t r = vfork(); + R_RAX = r; + } + break; + #endif #ifndef __NR_fork case 57: R_RAX = fork(); @@ -462,6 +473,10 @@ uintptr_t EXPORT my_syscall(x64emu_t *emu) #endif case 25: // sys_mremap return (uintptr_t)my_mremap(emu, (void*)R_RSI, R_RDX, R_RCX, R_R8d, (void*)R_R9); + #ifndef __NR_vfork + case 56: // vfork + return vfork(); + #endif #ifndef __NR_fork case 57: return fork(); |