Kernel/armv7 - Cleaing up mostly
[tpg/acess2.git] / Kernel / syscalls.c
index 00f031f..9775be3 100644 (file)
@@ -68,9 +68,6 @@ void SyscallHandler(tSyscallRegs *Regs)
        case SYS_CLONE:
                // Call clone system call
                ret = Proc_Clone(Regs->Arg1);
-               // Change user stack if a new stack address is passed
-               if(ret == 0 && Regs->Arg2)
-                       Regs->StackPointer = Regs->Arg2;
                break;
        
        // -- Send a signal
@@ -159,16 +156,19 @@ void SyscallHandler(tSyscallRegs *Regs)
                                CHECK_NUM_NONULL( &tmp[i], sizeof(char*) );
                                CHECK_STR_NONULL( tmp[i] );
                        }
+                       if(ret == -1) break;
                        // Check EnvP also
                        // - EnvP can be NULL
                        if( Regs->Arg3 )
                        {
                                tmp = (char**)Regs->Arg3;
-                               //Log("tmp = %p", tmp);
+                               CHECK_NUM_NONULL(tmp, sizeof(char**));
+                               Log("tmp = %p", tmp);
                                for(i=0;tmp[i];i++) {
-                                       CHECK_NUM_NULLOK( &tmp[i], sizeof(char*) );
+                                       CHECK_NUM_NONULL( &tmp[i], sizeof(char*) );
                                        CHECK_STR_NONULL( tmp[i] );
                                }
+                               if(ret == -1) break;
                        }
                }
                LEAVE('s', "Assuming 0");
@@ -315,8 +315,9 @@ void SyscallHandler(tSyscallRegs *Regs)
        // -- Debug
        //#if DEBUG_BUILD
        case SYS_DEBUG:
+               CHECK_STR_NONULL( (char*)Regs->Arg1 );
                LogF("Log: [%i] ", Threads_GetTID());
-               LogF((char*)Regs->Arg1,
+               LogF((const char*)Regs->Arg1,
                        Regs->Arg2, Regs->Arg3, Regs->Arg4, Regs->Arg5, Regs->Arg6);
                LogF("\r\n");
                break;
@@ -350,10 +351,10 @@ void SyscallHandler(tSyscallRegs *Regs)
        if( callNum != SYS_READ && callNum != SYS_WRITE ) {
        # endif
        LOG("err = %i", err);
-       if(Regs->Num != SYS_EXECVE)
-               LEAVE('x', ret);
-       else
+       if( callNum == SYS_EXECVE )
                LOG("Actual %i", ret);
+       else
+               LEAVE('x', ret);
        # if DEBUG < 2
        }
        # endif

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