diff options
-rw-r--r-- | arch/mips64/mm/init.c | 7 | ||||
-rw-r--r-- | arch/mips64/sgi-ip27/TODO | 2 | ||||
-rw-r--r-- | arch/mips64/sgi-ip27/ip27-memory.c | 1 | ||||
-rw-r--r-- | include/asm-mips64/pgtable.h | 2 |
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)]; /* |