X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fsyscalls.c;h=ff472941a5e9db907c5d4962200f21e23a72f62f;hb=7083f886afa0c52f5d46f463a70f5b35b050e632;hp=492c33e3d606d95b81b1d424f7ba2b9c46d7c6a4;hpb=3f47fd7edcc581911a23ca075a463c5c8de9ab9a;p=tpg%2Facess2.git diff --git a/Kernel/syscalls.c b/Kernel/syscalls.c index 492c33e3..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->Arg2 & 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;