Renamed tpl_drv_* to api_drv_* (a more fitting name)
[tpg/acess2.git] / Kernel / threads.c
index 4a2ccf4..c0c6132 100644 (file)
@@ -849,7 +849,8 @@ void Threads_AddActive(tThread *Thread)
        
        if( Thread->Status == THREAD_STAT_ACTIVE ) {
                tThread *cur = Proc_GetCurThread();
-               Warning("WTF, CPU%i %p (%i %s) is adding %p (%i %s) when it is active",
+               Log_Warning("Threads", "WTF, %p CPU%i %p (%i %s) is adding %p (%i %s) when it is active",
+                       __builtin_return_address(0),
                        GetCPUNum(), cur, cur->TID, cur->ThreadName, Thread, Thread->TID, Thread->ThreadName);
                SHORTREL( &glThreadListLock );
                return ;
@@ -979,6 +980,7 @@ void Threads_Fault(int Num)
        
        // Double Fault? Oh, F**k
        if(thread->CurFaultNum != 0) {
+               Log_Warning("Threads", "Threads_Fault: Double fault on %i", thread->TID);
                Threads_Kill(thread, -1);       // For now, just kill
                HALT();
        }
@@ -988,16 +990,16 @@ void Threads_Fault(int Num)
        Proc_CallFaultHandler(thread);
 }
 
-extern void    MM_DumpTables(tVAddr Start, tVAddr End);
-
 /**
  * \fn void Threads_SegFault(tVAddr Addr)
  * \brief Called when a Segment Fault occurs
  */
 void Threads_SegFault(tVAddr Addr)
 {
-       Log_Warning("Threads", "Thread #%i committed a segfault at address %p", Proc_GetCurThread()->TID, Addr);
-       MM_DumpTables(0, 0xC0000000);
+       tThread *cur = Proc_GetCurThread();
+       cur->bInstrTrace = 0;
+       Log_Warning("Threads", "Thread #%i committed a segfault at address %p", cur->TID, Addr);
+       MM_DumpTables(0, KERNEL_BASE);
        Threads_Fault( 1 );
        //Threads_Exit( 0, -1 );
 }

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