kernel/eka/memmodel/epoc/flexible/x86/xsched.cia
changeset 36 538db54a451d
parent 0 a41df078684a
--- a/kernel/eka/memmodel/epoc/flexible/x86/xsched.cia	Tue Jan 19 13:48:03 2010 +0000
+++ 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");