summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKanoj Sarcar <kanoj@engr.sgi.com>2000-03-16 03:21:22 +0000
committerKanoj Sarcar <kanoj@engr.sgi.com>2000-03-16 03:21:22 +0000
commitb64bbed64fa5444942bed0a937173e52b589ed87 (patch)
tree75396317674c91b7240793ce94163d64a72a3f29
parent1f2be86b3d8d9972559d28c9ea86f3f83e2f9429 (diff)
Misc mm type bug fixes.
-rw-r--r--arch/mips64/mm/init.c7
-rw-r--r--arch/mips64/sgi-ip27/TODO2
-rw-r--r--arch/mips64/sgi-ip27/ip27-memory.c1
-rw-r--r--include/asm-mips64/pgtable.h2
4 files changed, 7 insertions, 5 deletions
diff --git a/arch/mips64/mm/init.c b/arch/mips64/mm/init.c
index 2ff7865ad..ae17a6d91 100644
--- a/arch/mips64/mm/init.c
+++ b/arch/mips64/mm/init.c
@@ -1,4 +1,4 @@
-/* $Id: init.c,v 1.12 2000/02/10 02:03:59 kanoj Exp $
+/* $Id: init.c,v 1.13 2000/02/23 00:41:00 ralf Exp $
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
@@ -87,6 +87,8 @@ pgd_t *get_pgd_slow(void)
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;
}
@@ -278,7 +280,7 @@ pmd_t * __bad_pmd_table(void)
unsigned long page;
page = (unsigned long) invalid_pmd_table;
- pte_init(page);
+ pmd_init(page);
return (pmd_t *) page;
}
@@ -345,7 +347,6 @@ void __init paging_init(void)
/* 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);
max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT;
diff --git a/arch/mips64/sgi-ip27/TODO b/arch/mips64/sgi-ip27/TODO
index 873967309..eabbdc891 100644
--- a/arch/mips64/sgi-ip27/TODO
+++ b/arch/mips64/sgi-ip27/TODO
@@ -12,3 +12,5 @@ being invoked on all nodes in ip27-memory.c.
7. Too many CLIs in the locore handlers.
8. Too many do_page_faults invoked - investigate.
9. start_thread must turn off UX64 ... and define tlb_refill_debug.
+10. Need a bad pmd table, bad pte table. __bad_pmd_table/__bad_pagetable
+does not agree with pgd_bad/pmd_bad.
diff --git a/arch/mips64/sgi-ip27/ip27-memory.c b/arch/mips64/sgi-ip27/ip27-memory.c
index d344d866f..88ea07dc8 100644
--- a/arch/mips64/sgi-ip27/ip27-memory.c
+++ b/arch/mips64/sgi-ip27/ip27-memory.c
@@ -273,7 +273,6 @@ void __init paging_init(void)
/* 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);
for (node = 0; node < numnodes; node++) {
diff --git a/include/asm-mips64/pgtable.h b/include/asm-mips64/pgtable.h
index aa202b763..af4251f38 100644
--- a/include/asm-mips64/pgtable.h
+++ b/include/asm-mips64/pgtable.h
@@ -205,7 +205,7 @@ extern unsigned long zero_page_mask;
#define PAGE_PTR(address) \
((unsigned long)(address)>>(PAGE_SHIFT-SIZEOF_PTR_LOG2)&PTR_MASK&~PAGE_MASK)
-extern pte_t invalid_pte_table[PAGE_SIZE/sizeof(pte_t)];
+extern pte_t invalid_pte_table[2*PAGE_SIZE/sizeof(pte_t)];
extern pmd_t invalid_pmd_table[2*PAGE_SIZE/sizeof(pmd_t)];
/*