X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Kernel%2Fthreads.c;h=d5e1b4c3de6c1890315e20cc8c54a1f198555ff8;hb=0b24cbc2f18942b3d1d74efa025ecfa318ab35ec;hp=4a2ccf4c4b3acccc64fc7e4bda130074a66c193a;hpb=1961808f2b5eea942c11391d91a50e28eb780dde;p=tpg%2Facess2.git diff --git a/Kernel/threads.c b/Kernel/threads.c index 4a2ccf4c..d5e1b4c3 100644 --- a/Kernel/threads.c +++ b/Kernel/threads.c @@ -849,7 +849,7 @@ 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, CPU%i %p (%i %s) is adding %p (%i %s) when it is active", GetCPUNum(), cur, cur->TID, cur->ThreadName, Thread, Thread->TID, Thread->ThreadName); SHORTREL( &glThreadListLock ); return ; @@ -979,6 +979,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 +989,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 ); }