patch-2.3.99-pre9 linux/arch/mips64/mm/init.c

Next file: linux/arch/mips64/mm/loadmmu.c
Previous file: linux/arch/mips64/mm/fault.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.99-pre8/linux/arch/mips64/mm/init.c linux/arch/mips64/mm/init.c
@@ -87,6 +87,8 @@
 	if (ret) {
 		init = pgd_offset(&init_mm, 0);
 		pgd_init((unsigned long)ret);
+		memcpy(ret + USER_PTRS_PER_PGD, init + USER_PTRS_PER_PGD,
+			(PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t));
 	}
 	return ret;
 }
@@ -250,7 +252,7 @@
 
 	bp = pte_val(BAD_PAGE);
  	p = (unsigned long *) page;
-	end = p + PTRS_PER_PTE;
+	end = p + (2 * PTRS_PER_PTE);
 
 	while (p < end) {
 		p[0] = p[1] = p[2] = p[3] =
@@ -278,7 +280,7 @@
 	unsigned long page;
 
 	page = (unsigned long) invalid_pmd_table;
-	pte_init(page);
+	pmd_init(page);
 
 	return (pmd_t *) page;
 }
@@ -345,8 +347,8 @@
 
 	/* Initialize the entire pgd.  */
 	pgd_init((unsigned long)swapper_pg_dir);
-	pgd_init((unsigned long)swapper_pg_dir + PAGE_SIZE / 2);
 	pmd_init((unsigned long)invalid_pmd_table);
+	memset((void *)invalid_pte_table, 0, sizeof(pte_t) * 2 * PTRS_PER_PTE);
 
 	max_dma =  virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT;
 	low = max_low_pfn;

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)