case SYS_CLONE:
// Call clone system call
ret = Proc_Clone(&err, Regs->Arg1);
- Log("ret = %i", ret);
- __asm__ __volatile__("xchg %bx, %bx");
- // Change user stack if requested
- if(ret == 0 && !(Regs->Arg1 & CLONE_VM))
+ // Change user stack if a new stack address is passed
+ if(ret == 0 && Regs->Arg2)
Regs->StackPointer = Regs->Arg2;
break;
case SYS_WRITE:
#if BITS < 64
- VFS_Write( Regs->Arg1, Regs->Arg2|((Uint64)Regs->Arg3<<32), (void*)Regs->Arg4 );
+ ret = VFS_Write( Regs->Arg1, Regs->Arg2|((Uint64)Regs->Arg3<<32), (void*)Regs->Arg4 );
#else
- VFS_Write( Regs->Arg1, Regs->Arg2, (void*)Regs->Arg3 );
+ ret = VFS_Write( Regs->Arg1, Regs->Arg2, (void*)Regs->Arg3 );
#endif
break;
case SYS_READ:
#if BITS < 64
- VFS_Read( Regs->Arg1, Regs->Arg2|((Uint64)Regs->Arg3<<32), (void*)Regs->Arg4 );
+ ret = VFS_Read( Regs->Arg1, Regs->Arg2|((Uint64)Regs->Arg3<<32), (void*)Regs->Arg4 );
#else
- VFS_Read( Regs->Arg1, Regs->Arg2, (void*)Regs->Arg3 );
+ ret = VFS_Read( Regs->Arg1, Regs->Arg2, (void*)Regs->Arg3 );
#endif
break;