diff -r 04a1b74efd48 -r d32f34975bbf kernel/eka/memmodel/epoc/flexible/x86/xsched.cia --- 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");