equal
deleted
inserted
replaced
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 } |