From a3d9c32b28b6a6fd90a0b181a02def095eaaaec6 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Fri, 25 Sep 2009 10:44:03 +0800 Subject: [PATCH] Fix Triplefault on task switch --- Kernel/arch/x86/proc.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Kernel/arch/x86/proc.c b/Kernel/arch/x86/proc.c index 2413a6e2..bdce0ca2 100644 --- a/Kernel/arch/x86/proc.c +++ b/Kernel/arch/x86/proc.c @@ -131,6 +131,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; + #endif + // Set timer frequency outb(0x43, 0x34); // Set Channel 0, Low/High, Rate Generator outb(0x40, TIMER_DIVISOR&0xFF); // Low Byte of Divisor -- 2.20.1