I tried to read register cr3 on an Intel Pentium machine through asm("movl %%cr3,%0":"=r" (pgd_base)); After this statement, the pgd_base has a value 0x1dc3a000. But I was expecting this to be between PAGE_OFFSET and 0xFFFFFFFF. Is pgd_base not physical address of current process's page global directory ? If not, how to get it? -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/