On Nov 9, 2007 2:56 PM, Neo Jia <[EMAIL PROTECTED]> wrote:
> hi,
>
> I think the swapper_pg_dir is already loaded in head.S. Why we need to
> load it again? Just a simple 2-level page table.
>
> Thanks,
> Neo
>
> --
> I would remember that if researchers were not ambitious
> probably today we haven't the technology we are using!
>
Yes, swapper_pg_dir is already defined in head.S, and then loaded into cr3:
/*
* Enable paging
*/
movl $swapper_pg_dir-__PAGE_OFFSET,%eax
movl %eax,%cr3 /* set the page table pointer.. */
movl %cr0,%eax
orl $0x80000000,%eax
movl %eax,%cr0 /* ..and set paging (PG) bit */
ljmp $__BOOT_CS,$1f /* Clear prefetch and normalize %eip */
1:
/* Set up the stack pointer */
lss stack_start,%esp
But u also must remember that cr3 is loaded with something else
whenever the kernel switches among userspace, kernelspace, and
interrupt context, and ioremap() also changes the cr3 as well, in
order to implement the so-called hardware MMU operation.
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ