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