On 08-Nov-00 John Baldwin wrote:
> I'm sure Peter can correct this and fill in any holes as well as offer
> guidance to anyone who is masochistic enough^W^Wwilling to work on this.

Well, I didn't get all the facts quite right *sigh*.  The page directory
pointer table actually contains 4 entries which are indexed by the upper 2 bits
of the virtual linear address.  Also, one thing I failed to mention is that the
choice between small and large pages is made via the PS bit in the page
directory table entry that points to either a large page or a page table.  And
my table of page-sizes was a little off, it looks like this:

Page Size Table:
          |  Small Pages | Large Pages
---------------------------------------
Normal    |      4k      |      4k
PSE       |      4k      |      4m
PAE       |      4k      |      2m
PAE + PSE |      4k      |      4m

Now, if we look at how the virtual address is split up when using PAE for a
large page:

31 30 29     21 20                            0
-----------------------------------------------
|    |         |                              |
-----------------------------------------------
  ^       ^                   ^
  |       |                   `----------------- offset within the page
  |       `------------------------------------- index into the page directory
  `--------------------------------------------- index into the page directory
                                                 pointer table

This means that large pages with PAE have a 21-bit offset.  That only allows
for a 2mb offset, so I'm not sure how one goes about addressing the upper 2mb
of a 4mb page then.  *scratches head*

-- 

John Baldwin <[EMAIL PROTECTED]> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/


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

Reply via email to