paging question

From: Jason Yan (jasonyanjk@yahoo.com)
Date: Wed Feb 20 2002 - 16:26:18 EST


Hi,

I have a question about the code to enable to initialize page
tables in linux/arch/i386/head.S

I search the internet again and again but fail to find any answer
so far, maybe you gurus can help me out, here it goes:

48 cld
49 movl $(__KERNEL_DS),%eax
50 movl %eax,%ds
51 movl %eax,%es
52 movl %eax,%fs
53 movl %eax,%gs
81 /*
82 * Initialize page tables
83 */
84 movl $pg0-__PAGE_OFFSET,%edi /* initialize page tables */
85 movl $007,%eax /* "007" doesn't mean with right to kill, but
86 PRESENT+RW+USER */
87 2: stosl
88 add $0x1000,%eax
89 cmp $empty_zero_page-__PAGE_OFFSET,%edi
90 jne 2b
   
I remove the SMP code. According the setup.S, gdt_table is setup as
gdt_table:
                        #.quad 0x0000000000000000; // null
                        #.quad 0x0000000000000000; // not used
                        #.quad 0x00cf9a000000ffff; // 0x10 kernel 4GB code at 0x00000000
                        #.quad 0x00cf92000000ffff; // 0x18 kernel 4GB data at 0x00000000

1) So, what's in %eax after line 49 ? 0x0 ?
2) Isn't __PAGE_OFFSET 0xC0000000 ? what's the result of $pg0-__PAGE_OFFSET ?

Thanks,

Jason

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Feb 23 2002 - 21:00:26 EST