summaryrefslogtreecommitdiffstats
path: root/arch/x86/realmode/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/realmode/init.c')
-rw-r--r--arch/x86/realmode/init.c17
1 files changed, 2 insertions, 15 deletions
diff --git a/arch/x86/realmode/init.c b/arch/x86/realmode/init.c
index 8e6ab613785..cbca565af5b 100644
--- a/arch/x86/realmode/init.c
+++ b/arch/x86/realmode/init.c
@@ -78,21 +78,8 @@ void __init setup_real_mode(void)
*trampoline_cr4_features = read_cr4();
trampoline_pgd = (u64 *) __va(real_mode_header->trampoline_pgd);
-
- /*
- * Create an identity mapping for all of physical memory.
- */
- for (i = 0; i <= pgd_index(max_pfn << PAGE_SHIFT); i++) {
- int index = pgd_index(PAGE_OFFSET) + i;
-
- trampoline_pgd[i] = (u64)pgd_val(swapper_pg_dir[index]);
- }
-
- /*
- * Copy the upper-half of the kernel pages tables.
- */
- for (i = pgd_index(PAGE_OFFSET); i < PTRS_PER_PGD; i++)
- trampoline_pgd[i] = (u64)pgd_val(swapper_pg_dir[i]);
+ trampoline_pgd[0] = __pa(level3_ident_pgt) + _KERNPG_TABLE;
+ trampoline_pgd[511] = __pa(level3_kernel_pgt) + _KERNPG_TABLE;
#endif
}