Updated to 2.6.32.27
/arch/mips/mm/tlbex.c
blob:266c0036323a16d7ea768ddbb1af0bd0ff098042 -> blob:5adba4fc7c1015c6cf4e0638be471ac78e797ddd
--- arch/mips/mm/tlbex.c
+++ arch/mips/mm/tlbex.c
@@ -725,15 +725,10 @@ static void __cpuinit build_r4000_tlb_re
* create the plain linear handler
*/
if (bcm1250_m3_war()) {
- unsigned int segbits = 44;
-
- uasm_i_dmfc0(&p, K0, C0_BADVADDR);
- uasm_i_dmfc0(&p, K1, C0_ENTRYHI);
+ UASM_i_MFC0(&p, K0, C0_BADVADDR);
+ UASM_i_MFC0(&p, K1, C0_ENTRYHI);
uasm_i_xor(&p, K0, K0, K1);
- uasm_i_dsrl32(&p, K1, K0, 62 - 32);
- uasm_i_dsrl(&p, K0, K0, 12 + 1);
- uasm_i_dsll32(&p, K0, K0, 64 + 12 + 1 - segbits - 32);
- uasm_i_or(&p, K0, K0, K1);
+ UASM_i_SRL(&p, K0, K0, PAGE_SHIFT + 1);
uasm_il_bnez(&p, &r, K0, label_leave);
/* No need for uasm_i_nop */
}
@@ -1247,15 +1242,10 @@ static void __cpuinit build_r4000_tlb_lo
memset(relocs, 0, sizeof(relocs));
if (bcm1250_m3_war()) {
- unsigned int segbits = 44;
-
- uasm_i_dmfc0(&p, K0, C0_BADVADDR);
- uasm_i_dmfc0(&p, K1, C0_ENTRYHI);
+ UASM_i_MFC0(&p, K0, C0_BADVADDR);
+ UASM_i_MFC0(&p, K1, C0_ENTRYHI);
uasm_i_xor(&p, K0, K0, K1);
- uasm_i_dsrl32(&p, K1, K0, 62 - 32);
- uasm_i_dsrl(&p, K0, K0, 12 + 1);
- uasm_i_dsll32(&p, K0, K0, 64 + 12 + 1 - segbits - 32);
- uasm_i_or(&p, K0, K0, K1);
+ UASM_i_SRL(&p, K0, K0, PAGE_SHIFT + 1);
uasm_il_bnez(&p, &r, K0, label_leave);
/* No need for uasm_i_nop */
}