]> git.openfabrics.org - ~shefty/rdma-dev.git/blobdiff - arch/x86/kernel/head_32.S
x86-32, mm: Add an initial page table for core bootstrapping
[~shefty/rdma-dev.git] / arch / x86 / kernel / head_32.S
index fa8c1b8e09fb9f65b832c1fb15c84ee4c39b6336..bcece91dd3116a14fa58af5c5216dbce20daa3e5 100644 (file)
@@ -183,13 +183,12 @@ default_entry:
 #ifdef CONFIG_X86_PAE
 
        /*
-        * In PAE mode swapper_pg_dir is statically defined to contain enough
-        * entries to cover the VMSPLIT option (that is the top 1, 2 or 3
-        * entries). The identity mapping is handled by pointing two PGD
-        * entries to the first kernel PMD.
+        * In PAE mode initial_page_table is statically defined to contain
+        * enough entries to cover the VMSPLIT option (that is the top 1, 2 or 3
+        * entries). The identity mapping is handled by pointing two PGD entries
+        * to the first kernel PMD.
         *
-        * Note the upper half of each PMD or PTE are always zero at
-        * this stage.
+        * Note the upper half of each PMD or PTE are always zero at this stage.
         */
 
 #define KPMDS (((-__PAGE_OFFSET) >> 30) & 3) /* Number of kernel PMDs */
@@ -197,7 +196,7 @@ default_entry:
        xorl %ebx,%ebx                          /* %ebx is kept at zero */
 
        movl $pa(__brk_base), %edi
-       movl $pa(swapper_pg_pmd), %edx
+       movl $pa(initial_pg_pmd), %edx
        movl $PTE_IDENT_ATTR, %eax
 10:
        leal PDE_IDENT_ATTR(%edi),%ecx          /* Create PMD entry */
@@ -226,14 +225,14 @@ default_entry:
        movl %eax, pa(max_pfn_mapped)
 
        /* Do early initialization of the fixmap area */
-       movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR,%eax
-       movl %eax,pa(swapper_pg_pmd+0x1000*KPMDS-8)
+       movl $pa(initial_pg_fixmap)+PDE_IDENT_ATTR,%eax
+       movl %eax,pa(initial_pg_pmd+0x1000*KPMDS-8)
 #else  /* Not PAE */
 
 page_pde_offset = (__PAGE_OFFSET >> 20);
 
        movl $pa(__brk_base), %edi
-       movl $pa(swapper_pg_dir), %edx
+       movl $pa(initial_page_table), %edx
        movl $PTE_IDENT_ATTR, %eax
 10:
        leal PDE_IDENT_ATTR(%edi),%ecx          /* Create PDE entry */
@@ -257,8 +256,8 @@ page_pde_offset = (__PAGE_OFFSET >> 20);
        movl %eax, pa(max_pfn_mapped)
 
        /* Do early initialization of the fixmap area */
-       movl $pa(swapper_pg_fixmap)+PDE_IDENT_ATTR,%eax
-       movl %eax,pa(swapper_pg_dir+0xffc)
+       movl $pa(initial_pg_fixmap)+PDE_IDENT_ATTR,%eax
+       movl %eax,pa(initial_page_table+0xffc)
 #endif
        jmp 3f
 /*
@@ -334,7 +333,7 @@ ENTRY(startup_32_smp)
 /*
  * Enable paging
  */
-       movl pa(initial_page_table), %eax
+       movl $pa(initial_page_table), %eax
        movl %eax,%cr3          /* set the page table pointer.. */
        movl %cr0,%eax
        orl  $X86_CR0_PG,%eax
@@ -614,8 +613,6 @@ ignore_int:
 .align 4
 ENTRY(initial_code)
        .long i386_start_kernel
-ENTRY(initial_page_table)
-       .long pa(swapper_pg_dir)
 
 /*
  * BSS section
@@ -623,20 +620,18 @@ ENTRY(initial_page_table)
 __PAGE_ALIGNED_BSS
        .align PAGE_SIZE_asm
 #ifdef CONFIG_X86_PAE
-swapper_pg_pmd:
+initial_pg_pmd:
        .fill 1024*KPMDS,4,0
 #else
-ENTRY(swapper_pg_dir)
+ENTRY(initial_page_table)
        .fill 1024,4,0
 #endif
-swapper_pg_fixmap:
+initial_pg_fixmap:
        .fill 1024,4,0
-#ifdef CONFIG_X86_TRAMPOLINE
-ENTRY(trampoline_pg_dir)
-       .fill 1024,4,0
-#endif
 ENTRY(empty_zero_page)
        .fill 4096,1,0
+ENTRY(swapper_pg_dir)
+       .fill 1024,4,0
 
 /*
  * This starts the data section.
@@ -645,20 +640,20 @@ ENTRY(empty_zero_page)
 __PAGE_ALIGNED_DATA
        /* Page-aligned for the benefit of paravirt? */
        .align PAGE_SIZE_asm
-ENTRY(swapper_pg_dir)
-       .long   pa(swapper_pg_pmd+PGD_IDENT_ATTR),0     /* low identity map */
+ENTRY(initial_page_table)
+       .long   pa(initial_pg_pmd+PGD_IDENT_ATTR),0     /* low identity map */
 # if KPMDS == 3
-       .long   pa(swapper_pg_pmd+PGD_IDENT_ATTR),0
-       .long   pa(swapper_pg_pmd+PGD_IDENT_ATTR+0x1000),0
-       .long   pa(swapper_pg_pmd+PGD_IDENT_ATTR+0x2000),0
+       .long   pa(initial_pg_pmd+PGD_IDENT_ATTR),0
+       .long   pa(initial_pg_pmd+PGD_IDENT_ATTR+0x1000),0
+       .long   pa(initial_pg_pmd+PGD_IDENT_ATTR+0x2000),0
 # elif KPMDS == 2
        .long   0,0
-       .long   pa(swapper_pg_pmd+PGD_IDENT_ATTR),0
-       .long   pa(swapper_pg_pmd+PGD_IDENT_ATTR+0x1000),0
+       .long   pa(initial_pg_pmd+PGD_IDENT_ATTR),0
+       .long   pa(initial_pg_pmd+PGD_IDENT_ATTR+0x1000),0
 # elif KPMDS == 1
        .long   0,0
        .long   0,0
-       .long   pa(swapper_pg_pmd+PGD_IDENT_ATTR),0
+       .long   pa(initial_pg_pmd+PGD_IDENT_ATTR),0
 # else
 #  error "Kernel PMDs should be 1, 2 or 3"
 # endif