Identity Paging
Identity Paging, Identity Mapped paging and 1:1 paging are terms often used on the forum to describe a design choice where a portion of [virtual addresses|Physical, Virtual, Paging, help?!?] are mapped to physical addresses that have the same value.
For instance you may decide to use IdentityPaging in the lowest 1MB, in which case vaddr =00000000..00000fff= are mapped to frame #00000, vaddr =00001000..00001fff= are mapped to frame #00001, and so on (vaddr =000ff000..000fffff= are mapped to frame #000ff)
You can easily do this with a loop filling the page table: <verbatim> void idpaging(dword *first_pte, vaddr from, int size) {
from = from & 0xfffff000; // discard bits we don't want for(;size;from+=4096,first_pte++) { *first_pte=from|1; // mark page present. }
} </verbatim>
!What's the advantage of 1:1 paging
When switching to paged protected mode, your 1:1 mapping region doesn't care of whether paging is enabled or disabled. Placing your switching code and important data such as the core page directory and a few system page tables in this region gives you an easier way to set up paging without headaches.