X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86%2Fproc.c;h=d468d11a215f3b64aaeb40d7f50cf2a19586219e;hb=ab4180ab19a5b2b096f137c3d56d771a70e159df;hp=2413a6e2bde480a92f34c08dc301bc0fbff6a7a2;hpb=0259a3c08b2c7d5c9d05bd0d051a67399e755638;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86/proc.c b/Kernel/arch/x86/proc.c index 2413a6e2..d468d11a 100644 --- a/Kernel/arch/x86/proc.c +++ b/Kernel/arch/x86/proc.c @@ -29,6 +29,7 @@ extern tThread *gActiveThreads; extern tThread *gSleepingThreads; extern tThread *gDeleteThreads; extern tThread *Threads_GetNextToRun(int CPU); +extern void Threads_Dump(); // === PROTOTYPES === void ArchThreads_Init(); @@ -131,6 +132,14 @@ void ArchThreads_Init() gCurrentThread = &gThreadZero; #endif + #if USE_PAE + gThreadZero.MemState.PDP[0] = 0; + gThreadZero.MemState.PDP[1] = 0; + gThreadZero.MemState.PDP[2] = 0; + #else + gThreadZero.MemState.CR3 = (Uint)gaInitPageDir - KERNEL_BASE; + #endif + // Set timer frequency outb(0x43, 0x34); // Set Channel 0, Low/High, Rate Generator outb(0x40, TIMER_DIVISOR&0xFF); // Low Byte of Divisor @@ -304,6 +313,8 @@ int Proc_Clone(Uint *Err, Uint Flags) giTotalTickets += newThread->NumTickets; RELEASE( &giThreadListLock ); + Threads_Dump(); + return newThread->TID; } @@ -456,7 +467,7 @@ void Proc_Scheduler(int CPU) // Check if there is any tasks running if(giNumActiveThreads == 0) { - Log("No Active threads, sleeping\n"); + Log("No Active threads, sleeping"); __asm__ __volatile__ ("hlt"); return; }