kernel/eka/memmodel/epoc/flexible/x86/xsched.cia
changeset 45 329ab0095843
parent 43 96e5fb8b040d
--- a/kernel/eka/memmodel/epoc/flexible/x86/xsched.cia	Thu Jan 07 13:38:45 2010 +0200
+++ b/kernel/eka/memmodel/epoc/flexible/x86/xsched.cia	Mon Jan 18 21:31:10 2010 +0200
@@ -52,10 +52,15 @@
 	asm("jz done");
 
 	// restore alias...
+	// Disable interrupts so setting the alias pde is must complete before
+	// Mmu::RemoveAliasesForPageTable() can execute the alias IPI and vice 
+	// versa.
+	asm("cli ");					// turn off interrupts
 	asm("mov edx, [ebx+%0]": : "i"_FOFF(DMemModelThread,iAliasPdePtr));
 	asm("mov eax, [ebx+%0]": : "i"_FOFF(DMemModelThread,iAliasPde));
 	asm("mov [edx], eax");
 	asm("invlpg [ecx]");
+	asm("sti ");					// turn on interrupts
 
 	asm("done:");
 	asm("ret");