diff options
Diffstat (limited to 'arch/x86/kernel')
| -rw-r--r-- | arch/x86/kernel/head32.c | 3 | ||||
| -rw-r--r-- | arch/x86/kernel/head_32.S | 14 | ||||
| -rw-r--r-- | arch/x86/kernel/setup.c | 6 | ||||
| -rw-r--r-- | arch/x86/kernel/vmlinux_32.lds.S | 4 |
4 files changed, 7 insertions, 20 deletions
diff --git a/arch/x86/kernel/head32.c b/arch/x86/kernel/head32.c index 29f1095b0849..3f8579f8d42c 100644 --- a/arch/x86/kernel/head32.c +++ b/arch/x86/kernel/head32.c | |||
| @@ -29,9 +29,6 @@ void __init i386_start_kernel(void) | |||
| 29 | reserve_early(ramdisk_image, ramdisk_end, "RAMDISK"); | 29 | reserve_early(ramdisk_image, ramdisk_end, "RAMDISK"); |
| 30 | } | 30 | } |
| 31 | #endif | 31 | #endif |
| 32 | reserve_early(init_pg_tables_start, init_pg_tables_end, | ||
| 33 | "INIT_PG_TABLE"); | ||
| 34 | |||
| 35 | reserve_ebda_region(); | 32 | reserve_ebda_region(); |
| 36 | 33 | ||
| 37 | /* | 34 | /* |
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S index c32ca19d591a..db6652710e98 100644 --- a/arch/x86/kernel/head_32.S +++ b/arch/x86/kernel/head_32.S | |||
| @@ -167,7 +167,7 @@ num_subarch_entries = (. - subarch_entries) / 4 | |||
| 167 | /* | 167 | /* |
| 168 | * Initialize page tables. This creates a PDE and a set of page | 168 | * Initialize page tables. This creates a PDE and a set of page |
| 169 | * tables, which are located immediately beyond _end. The variable | 169 | * tables, which are located immediately beyond _end. The variable |
| 170 | * init_pg_tables_end is set up to point to the first "safe" location. | 170 | * _brk_end is set up to point to the first "safe" location. |
| 171 | * Mappings are created both at virtual address 0 (identity mapping) | 171 | * Mappings are created both at virtual address 0 (identity mapping) |
| 172 | * and PAGE_OFFSET for up to _end+sizeof(page tables)+INIT_MAP_BEYOND_END. | 172 | * and PAGE_OFFSET for up to _end+sizeof(page tables)+INIT_MAP_BEYOND_END. |
| 173 | * | 173 | * |
| @@ -190,8 +190,7 @@ default_entry: | |||
| 190 | 190 | ||
| 191 | xorl %ebx,%ebx /* %ebx is kept at zero */ | 191 | xorl %ebx,%ebx /* %ebx is kept at zero */ |
| 192 | 192 | ||
| 193 | movl $pa(pg0), %edi | 193 | movl $pa(__brk_base), %edi |
| 194 | movl %edi, pa(init_pg_tables_start) | ||
| 195 | movl $pa(swapper_pg_pmd), %edx | 194 | movl $pa(swapper_pg_pmd), %edx |
| 196 | movl $PTE_IDENT_ATTR, %eax | 195 | movl $PTE_IDENT_ATTR, %eax |
| 197 | 10: | 196 | 10: |
| @@ -216,7 +215,8 @@ default_entry: | |||
| 216 | cmpl %ebp,%eax | 215 | cmpl %ebp,%eax |
| 217 | jb 10b | 216 | jb 10b |
| 218 | 1: | 217 | 1: |
| 219 | movl %edi,pa(init_pg_tables_end) | 218 | addl $__PAGE_OFFSET, %edi |
| 219 | movl %edi, pa(_brk_end) | ||
| 220 | shrl $12, %eax | 220 | shrl $12, %eax |
| 221 | movl %eax, pa(max_pfn_mapped) | 221 | movl %eax, pa(max_pfn_mapped) |
| 222 | 222 | ||
| @@ -227,8 +227,7 @@ default_entry: | |||
| 227 | 227 | ||
| 228 | page_pde_offset = (__PAGE_OFFSET >> 20); | 228 | page_pde_offset = (__PAGE_OFFSET >> 20); |
| 229 | 229 | ||
| 230 | movl $pa(pg0), %edi | 230 | movl $pa(__brk_base), %edi |
| 231 | movl %edi, pa(init_pg_tables_start) | ||
| 232 | movl $pa(swapper_pg_dir), %edx | 231 | movl $pa(swapper_pg_dir), %edx |
| 233 | movl $PTE_IDENT_ATTR, %eax | 232 | movl $PTE_IDENT_ATTR, %eax |
| 234 | 10: | 233 | 10: |
| @@ -249,7 +248,8 @@ page_pde_offset = (__PAGE_OFFSET >> 20); | |||
| 249 | leal (INIT_MAP_BEYOND_END+PTE_IDENT_ATTR)(%edi),%ebp | 248 | leal (INIT_MAP_BEYOND_END+PTE_IDENT_ATTR)(%edi),%ebp |
| 250 | cmpl %ebp,%eax | 249 | cmpl %ebp,%eax |
| 251 | jb 10b | 250 | jb 10b |
| 252 | movl %edi,pa(init_pg_tables_end) | 251 | addl $__PAGE_OFFSET, %edi |
| 252 | movl %edi, pa(_brk_end) | ||
| 253 | shrl $12, %eax | 253 | shrl $12, %eax |
| 254 | movl %eax, pa(max_pfn_mapped) | 254 | movl %eax, pa(max_pfn_mapped) |
| 255 | 255 | ||
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index b8329029c150..3ac2aa7b9eaf 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
| @@ -161,12 +161,6 @@ static struct resource bss_resource = { | |||
| 161 | 161 | ||
| 162 | 162 | ||
| 163 | #ifdef CONFIG_X86_32 | 163 | #ifdef CONFIG_X86_32 |
| 164 | /* This value is set up by the early boot code to point to the value | ||
| 165 | immediately after the boot time page tables. It contains a *physical* | ||
| 166 | address, and must not be in the .bss segment! */ | ||
| 167 | unsigned long init_pg_tables_start __initdata = ~0UL; | ||
| 168 | unsigned long init_pg_tables_end __initdata = ~0UL; | ||
| 169 | |||
| 170 | static struct resource video_ram_resource = { | 164 | static struct resource video_ram_resource = { |
| 171 | .name = "Video RAM area", | 165 | .name = "Video RAM area", |
| 172 | .start = 0xa0000, | 166 | .start = 0xa0000, |
diff --git a/arch/x86/kernel/vmlinux_32.lds.S b/arch/x86/kernel/vmlinux_32.lds.S index 27e44aa21585..1063fbe93c73 100644 --- a/arch/x86/kernel/vmlinux_32.lds.S +++ b/arch/x86/kernel/vmlinux_32.lds.S | |||
| @@ -196,10 +196,6 @@ SECTIONS | |||
| 196 | __brk_limit = . ; | 196 | __brk_limit = . ; |
| 197 | 197 | ||
| 198 | _end = . ; | 198 | _end = . ; |
| 199 | |||
| 200 | /* This is where the kernel creates the early boot page tables */ | ||
| 201 | . = ALIGN(PAGE_SIZE); | ||
| 202 | pg0 = . ; | ||
| 203 | } | 199 | } |
| 204 | 200 | ||
| 205 | /* Sections to be discarded */ | 201 | /* Sections to be discarded */ |
