--- 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");