Quote from <<Understanding the Linux Virtual Memory Manager>>
"Initialization begins at compile time with statically defining an array called
swapper pg dir, which is placed using linker directives at 0x00101000. It then
establishes page table entries for two pages, pg0 and pg1. If the processor supports
the Page Size Extension (PSE) bit, it will be set so that pages that will be translated
are 4MiB pages, not 4KiB as is the normal case. The first pointers to pg0 and pg1
are placed to cover the region 1-9MiB; the second pointers to pg0 and pg1 are placed
at PAGE OFFSET+1MiB. This means that, when paging is enabled, they will map to
the correct pages using either physical or virtual addressing for just the kernel
image. The rest of the kernel page tables will be initialized by paging init()."
but I think " The first pointers to pg0 and pg1
are placed to cover the region 1-9MiB; the second pointers to pg0 and pg1 are placed
at PAGE OFFSET+1MiB." is not right.
pg0 and pg1 should cover 0-8MB, am I right?
Thanks for any comments!
Bao Zhao
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.com/
-- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/