write_c0_entrylo0(entrylo);
        write_c0_entrylo1(entrylo);
 #ifdef CONFIG_XPA
-       entrylo = (pte.pte_low & _PFNX_MASK);
-       writex_c0_entrylo0(entrylo);
-       writex_c0_entrylo1(entrylo);
+       if (cpu_has_xpa) {
+               entrylo = (pte.pte_low & _PFNX_MASK);
+               writex_c0_entrylo0(entrylo);
+               writex_c0_entrylo1(entrylo);
+       }
 #endif
        tlbidx = read_c0_wired();
        write_c0_wired(tlbidx + 1);
 
 #if defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_CPU_MIPS32)
 #ifdef CONFIG_XPA
                write_c0_entrylo0(pte_to_entrylo(ptep->pte_high));
-               writex_c0_entrylo0(ptep->pte_low & _PFNX_MASK);
+               if (cpu_has_xpa)
+                       writex_c0_entrylo0(ptep->pte_low & _PFNX_MASK);
                ptep++;
                write_c0_entrylo1(pte_to_entrylo(ptep->pte_high));
-               writex_c0_entrylo1(ptep->pte_low & _PFNX_MASK);
+               if (cpu_has_xpa)
+                       writex_c0_entrylo1(ptep->pte_low & _PFNX_MASK);
 #else
                write_c0_entrylo0(ptep->pte_high);
                ptep++;
 
                UASM_i_ROTR(p, tmp, tmp, ilog2(_PAGE_GLOBAL));
                UASM_i_MTC0(p, tmp, C0_ENTRYLO0);
 
-               uasm_i_lw(p, tmp, 0, ptep);
-               uasm_i_ext(p, tmp, tmp, 0, 24);
-               uasm_i_mthc0(p, tmp, C0_ENTRYLO0);
+               if (cpu_has_xpa && !mips_xpa_disabled) {
+                       uasm_i_lw(p, tmp, 0, ptep);
+                       uasm_i_ext(p, tmp, tmp, 0, 24);
+                       uasm_i_mthc0(p, tmp, C0_ENTRYLO0);
+               }
 
                uasm_i_lw(p, tmp, pte_off_odd, ptep); /* odd pte */
                UASM_i_ROTR(p, tmp, tmp, ilog2(_PAGE_GLOBAL));
                UASM_i_MTC0(p, tmp, C0_ENTRYLO1);
 
-               uasm_i_lw(p, tmp, sizeof(pte_t), ptep);
-               uasm_i_ext(p, tmp, tmp, 0, 24);
-               uasm_i_mthc0(p, tmp, C0_ENTRYLO1);
+               if (cpu_has_xpa && !mips_xpa_disabled) {
+                       uasm_i_lw(p, tmp, sizeof(pte_t), ptep);
+                       uasm_i_ext(p, tmp, tmp, 0, 24);
+                       uasm_i_mthc0(p, tmp, C0_ENTRYLO1);
+               }
                return;
        }