kernel/eka/memmodel/epoc/multiple/x86/xmonitor.cpp
changeset 279 957c583b417b
parent 0 a41df078684a
equal deleted inserted replaced
275:2b433474f2ba 279:957c583b417b
    62 	if (o->Type()!=EProcess)
    62 	if (o->Type()!=EProcess)
    63 		return KErrArgument;
    63 		return KErrArgument;
    64 
    64 
    65 	const TPde* kpd=(const TPde*)KPageDirectoryBase;
    65 	const TPde* kpd=(const TPde*)KPageDirectoryBase;
    66 	const TPde* ppd=(const TPde*)(KPageDirectoryBase+(aProcess->iOsAsid<<KPageTableShift));
    66 	const TPde* ppd=(const TPde*)(KPageDirectoryBase+(aProcess->iOsAsid<<KPageTableShift));
    67 	if (!PdesEqual(kpd, ppd, KRomLinearBase, KUserGlobalDataEnd) ||		// ROM + user global
    67 	if (!PdesEqual(kpd, ppd, KRomLinearBase, KUserGlobalDataEnd)		||	// ROM + user global
    68 		!PdesEqual(kpd, ppd, KRamDriveEndAddress, 0x00000000))			// kernel mappings
    68 		!PdesEqual(kpd, ppd, KRamDriveEndAddress, KIPCAlias)			||	// kernel mappings other than IPC aliases
       
    69 		!PdesEqual(kpd, ppd, KIPCAlias+KIPCAliasAreaSize, 0x00000000u)		// kernel mappings other than IPC aliases
       
    70 		)			// kernel mappings
    69 		{
    71 		{
    70 		if (!aForce)
    72 		if (!aForce)
    71 			return KErrCorrupt;
    73 			return KErrCorrupt;
    72 		wordmove((TAny*)(ppd+(KRomLinearBase>>KChunkShift)), (TAny*)(kpd+(KRomLinearBase>>KChunkShift)), ((KUserGlobalDataEnd-KRomLinearBase)>>KChunkShift)*sizeof(TPde));
    74 		wordmove((TAny*)(ppd+(KRomLinearBase>>KChunkShift)), (TAny*)(kpd+(KRomLinearBase>>KChunkShift)), ((KUserGlobalDataEnd-KRomLinearBase)>>KChunkShift)*sizeof(TPde));
    73 		wordmove((TAny*)(ppd+(KRamDriveEndAddress>>KChunkShift)), (TAny*)(kpd+(KRamDriveEndAddress>>KChunkShift)), ((0-KRamDriveEndAddress)>>KChunkShift)*sizeof(TPde));
    75 		wordmove((TAny*)(ppd+(KRamDriveEndAddress>>KChunkShift)), (TAny*)(kpd+(KRamDriveEndAddress>>KChunkShift)), ((0-KRamDriveEndAddress)>>KChunkShift)*sizeof(TPde));