X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fsyscalls.c;h=ff472941a5e9db907c5d4962200f21e23a72f62f;hb=e33d76955a6ac462062bcc47c22c774ab4423185;hp=b9473f97ba9ada5dd2f8feeb26a3491b50a26654;hpb=b7cb35206a853700c5f136a79113190bfae9a6bd;p=tpg%2Facess2.git diff --git a/Kernel/syscalls.c b/Kernel/syscalls.c index b9473f97..ff472941 100644 --- a/Kernel/syscalls.c +++ b/Kernel/syscalls.c @@ -57,10 +57,8 @@ void SyscallHandler(tSyscallRegs *Regs) 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; @@ -136,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;