fixed EOS calculation
[tpg/acess2.git] / Kernel / syscalls.c
index b9473f9..ff47294 100644 (file)
@@ -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;
        

UCC git Repository :: git.ucc.asn.au