Hi,

I need your help to understand this.
In machdep.c,

   1451         /*
   1452          * map page 1 R/W into the kernel page table so we can use 
it
   1453          * as a buffer.  The kernel will unmap this page later.
   1454          */
   1455         pte = (pt_entry_t)vtopte(KERNBASE + (1 <<PAGE_SHIFT));
   1456         *pte = (1 << PAGE_SHIFT) | PG_RW | PG_V;


According to my calculation, pte=0xbfcc0001 and *pte will yield
0x2FF,0xC0,0x1 as indexes to the page directory table, page table and
an offset. My page directory table is like this (starting at physical
address 0x2C2000):

    index            page_table_base_address; prot
    ----------       -----------------------------
    0,0x1D           0x2A4,0x2C1            ; RW
    0x2FF            0x2C2                  ; RW
    0x300,0x31D      0x2A4,0x2C1            ; RW

The entries that are not listed are all zeros. This table was created
by "create_pagetable" in locore.s

I know there is a recursive reference, i.e., the 0x2ff entry. But I
need more (authoritative) explanation on how the triple
(0x2ff,0xc0,0x1) is going to be resolved.

Would you shed some light?

Thanks very much.
Weiguang

_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to