kernel/eka/memmodel/epoc/flexible/mmu/x86/xmmu.cpp
changeset 279 957c583b417b
parent 121 661475905584
--- a/kernel/eka/memmodel/epoc/flexible/mmu/x86/xmmu.cpp	Tue Sep 28 15:28:31 2010 +0100
+++ b/kernel/eka/memmodel/epoc/flexible/mmu/x86/xmmu.cpp	Mon Oct 04 12:03:52 2010 +0100
@@ -616,6 +616,8 @@
 	TPde* pd = Mmu::PageDirectory(osAsid);
 	TInt pdeIndex = aAddr>>KChunkShift;
 	TPde pde = pd[pdeIndex];
+	// Get os asid, this is the current thread's process so no need for reference.
+	TUint32 local_asid = ((DMemModelProcess*)iOwningProcess)->OsAsid();
 #ifdef __SMP__
 	TLinAddr aliasAddr;
 #else
@@ -647,7 +649,7 @@
 #ifdef __SMP__
 		TSubScheduler& ss = SubScheduler();		// OK since we are locked to this CPU
 		aliasAddr = TLinAddr(ss.i_AliasLinAddr) + (aAddr & (KChunkMask & ~KPageMask));
-		iAliasPdePtr = (TPde*)(TLinAddr(ss.i_AliasPdePtr) + (osAsid << KPageTableShift));
+		iAliasPdePtr = (TPde*)(TLinAddr(ss.i_AliasPdePtr) + (local_asid << KPageTableShift));
 #endif
 		iAliasLinAddr = aliasAddr;
 		*iAliasPdePtr = pde;