X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fsyscalls.c;h=ff472941a5e9db907c5d4962200f21e23a72f62f;hb=7083f886afa0c52f5d46f463a70f5b35b050e632;hp=f655707c5ca6571e9978f4cf273b302dcdf0ea3c;hpb=9b65eb6247a9332cf2cc83807e2d558b4337394b;p=tpg%2Facess2.git diff --git a/Kernel/syscalls.c b/Kernel/syscalls.c index f655707c..ff472941 100644 --- a/Kernel/syscalls.c +++ b/Kernel/syscalls.c @@ -57,8 +57,8 @@ void SyscallHandler(tSyscallRegs *Regs) case SYS_CLONE: // Call clone system call ret = Proc_Clone(&err, Regs->Arg1); - // 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; @@ -134,17 +134,17 @@ void SyscallHandler(tSyscallRegs *Regs) 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;