kernel/eka/memmodel/epoc/flexible/x86/xmonitor.cpp
changeset 279 957c583b417b
parent 0 a41df078684a
equal deleted inserted replaced
275:2b433474f2ba 279:957c583b417b
    56 	if (o->Type()!=EProcess)
    56 	if (o->Type()!=EProcess)
    57 		return KErrArgument;
    57 		return KErrArgument;
    58 
    58 
    59 	const TPde* kpd=(const TPde*)KPageDirectoryBase;
    59 	const TPde* kpd=(const TPde*)KPageDirectoryBase;
    60 	const TPde* ppd=(const TPde*)(KPageDirectoryBase+(aProcess->iOsAsid<<KPageTableShift));
    60 	const TPde* ppd=(const TPde*)(KPageDirectoryBase+(aProcess->iOsAsid<<KPageTableShift));
    61 	if (!PdesEqual(kpd, ppd, KGlobalMemoryBase, 0x00000000))			// kernel mappings
    61 
       
    62 	// Check kernel mappings are the same except for IPC alias region
       
    63 	if (!PdesEqual(kpd, ppd, KGlobalMemoryBase, KIPCAlias) || !PdesEqual(kpd, ppd, KIPCAlias+KIPCAliasAreaSize, 0x00000000))
    62 		{
    64 		{
    63 		if (!aForce)
    65 		if (!aForce)
    64 			return KErrCorrupt;
    66 			return KErrCorrupt;
    65 		wordmove((TAny*)(ppd+(KGlobalMemoryBase>>KChunkShift)), (TAny*)(kpd+(KGlobalMemoryBase>>KChunkShift)), ((0-KGlobalMemoryBase)>>KChunkShift)*sizeof(TPde));
    67 		wordmove((TAny*)(ppd+(KGlobalMemoryBase>>KChunkShift)), (TAny*)(kpd+(KGlobalMemoryBase>>KChunkShift)), ((0-KGlobalMemoryBase)>>KChunkShift)*sizeof(TPde));
    66 		}
    68 		}