On Nov 9, 2007 2:56 PM, Neo Jia <neojia@xxxxxxxxx> 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 ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ