identity mapped paging

Dave Hylands dhylands at
Tue Jun 19 11:54:43 EDT 2012

Hi Vaibhav,

On Wed, Apr 11, 2012 at 2:22 PM, Vaibhav Jain <vjoss197 at> wrote:
> I am not clear about the use of identity mapped paging while paging is being
> enabled by the operating system. Also I don't understand at what point are
> the
> identity mappings no longer useful.According to this article
> - "The page table
> entries used to identity-map kernel memory can be deleted once paging and
> virtual addresses are enabled." Can somebody please explain?

The identity mapping are used when the MMU is first enabled. I'm most
familiar with the ARM, so the rest of my comments are ARM specific.

When the kernel first gets control, the MMU is off, so virtual
addresses == physical addresses.

The kernel sets up a small identity mapping (virtual == physical) as
well as a the kernel direct mapping. This happens in assembler code
before any C code in the kernel runs.

The identity mapping is needed for the code that turns on the MMU. The
identity mapping is only needed for a few instructions. If you look at

The identity mapping is really only needed while lines 454 thru 459
execute. The mov pc, r13 instruction changes the PC to be in the
0xCxxxxxxx range (assuming a normal 3G user/ 1G kernel split is being

Later on, in paging_init (which is written in C), that identity
mapping is removed, and the MMU is setup properly for the rest of the

Dave Hylands
Shuswap, BC, Canada

More information about the Kernelnewbies mailing list