diff options
Diffstat (limited to 'arch/x86/mm/init_32.c')
| -rw-r--r-- | arch/x86/mm/init_32.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index 9a0c258a86b..2226f2c70ea 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c @@ -241,6 +241,7 @@ kernel_physical_mapping_init(unsigned long start,  			     unsigned long page_size_mask)  {  	int use_pse = page_size_mask == (1<<PG_LEVEL_2M); +	unsigned long last_map_addr = end;  	unsigned long start_pfn, end_pfn;  	pgd_t *pgd_base = swapper_pg_dir;  	int pgd_idx, pmd_idx, pte_ofs; @@ -341,9 +342,10 @@ repeat:  					prot = PAGE_KERNEL_EXEC;  				pages_4k++; -				if (mapping_iter == 1) +				if (mapping_iter == 1) {  					set_pte(pte, pfn_pte(pfn, init_prot)); -				else +					last_map_addr = (pfn << PAGE_SHIFT) + PAGE_SIZE; +				} else  					set_pte(pte, pfn_pte(pfn, prot));  			}  		} @@ -368,7 +370,7 @@ repeat:  		mapping_iter = 2;  		goto repeat;  	} -	return 0; +	return last_map_addr;  }  pte_t *kmap_pte;  |