kernel/eka/memmodel/epoc/flexible/x86/xsched.cia
branchanywhere
changeset 41 d32f34975bbf
parent 36 538db54a451d
--- a/kernel/eka/memmodel/epoc/flexible/x86/xsched.cia	Mon Feb 01 19:40:00 2010 +0100
+++ b/kernel/eka/memmodel/epoc/flexible/x86/xsched.cia	Mon Feb 01 19:49:38 2010 +0100
@@ -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");