diff -r ff5437e4337c -r 48e57fb1237e kernel/eka/memmodel/epoc/multiple/x86/xmmu.cpp --- a/kernel/eka/memmodel/epoc/multiple/x86/xmmu.cpp Wed Oct 06 17:13:14 2010 +0100 +++ b/kernel/eka/memmodel/epoc/multiple/x86/xmmu.cpp Mon Oct 11 17:54:41 2010 +0100 @@ -1323,7 +1323,7 @@ static const TUint8 ActualReadPrivilegeLevel[4]={1,1,4,4}; // RONO,RWNO,RORO,RWRW static const TUint8 ActualWritePrivilegeLevel[4]={0,1,0,4}; // RONO,RWNO,RORO,RWRW -TInt X86Mmu::PdePtePermissions(TUint& aMapAttr, TPde& aPde, TPte& aPte) +TInt X86Mmu::PdePtePermissions(TUint& aMapAttr, TPde& aPde, TPte& aPte, TBool aGlobal) { __KTRACE_OPT(KMMU,Kern::Printf(">X86Mmu::PdePtePermissions, mapattr=%08x",aMapAttr)); TUint read=aMapAttr & EMapAttrReadMask; @@ -1363,10 +1363,10 @@ r=KErrNotSupported; if (r==KErrNone) { - cache=CacheBuffActual[cache]; - aPde=KPdePtePresent|KPdePteWrite|KPdePteUser; - aPte=pte|cbatt|iPteGlobal; // HW chunks can always be global - aMapAttr=read|(write<<4)|(read<<8)|(cache<<12); + cache = CacheBuffActual[cache]; + aPde = KPdePtePresent | KPdePteWrite | KPdePteUser; + aPte = pte | cbatt | ((aGlobal)? iPteGlobal : 0); + aMapAttr = read | (write<<4) | (read<<8) | (cache<<12); } __KTRACE_OPT(KMMU,Kern::Printf("