diff options
Diffstat (limited to 'arch/mips/mm/init.c')
-rw-r--r-- | arch/mips/mm/init.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c index 448cde372af0..faa5c9822ecc 100644 --- a/arch/mips/mm/init.c +++ b/arch/mips/mm/init.c | |||
@@ -96,7 +96,7 @@ static void *__kmap_pgprot(struct page *page, unsigned long addr, pgprot_t prot) | |||
96 | vaddr = __fix_to_virt(FIX_CMAP_END - idx); | 96 | vaddr = __fix_to_virt(FIX_CMAP_END - idx); |
97 | pte = mk_pte(page, prot); | 97 | pte = mk_pte(page, prot); |
98 | #if defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_CPU_MIPS32) | 98 | #if defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_CPU_MIPS32) |
99 | entrylo = pte.pte_high; | 99 | entrylo = pte_to_entrylo(pte.pte_high); |
100 | #else | 100 | #else |
101 | entrylo = pte_to_entrylo(pte_val(pte)); | 101 | entrylo = pte_to_entrylo(pte_val(pte)); |
102 | #endif | 102 | #endif |
@@ -106,6 +106,11 @@ static void *__kmap_pgprot(struct page *page, unsigned long addr, pgprot_t prot) | |||
106 | write_c0_entryhi(vaddr & (PAGE_MASK << 1)); | 106 | write_c0_entryhi(vaddr & (PAGE_MASK << 1)); |
107 | write_c0_entrylo0(entrylo); | 107 | write_c0_entrylo0(entrylo); |
108 | write_c0_entrylo1(entrylo); | 108 | write_c0_entrylo1(entrylo); |
109 | #ifdef CONFIG_XPA | ||
110 | entrylo = (pte.pte_low & _PFNX_MASK); | ||
111 | writex_c0_entrylo0(entrylo); | ||
112 | writex_c0_entrylo1(entrylo); | ||
113 | #endif | ||
109 | tlbidx = read_c0_wired(); | 114 | tlbidx = read_c0_wired(); |
110 | write_c0_wired(tlbidx + 1); | 115 | write_c0_wired(tlbidx + 1); |
111 | write_c0_index(tlbidx); | 116 | write_c0_index(tlbidx); |