Index: sys/arch/mips/mips/mipsX_subr.S =================================================================== RCS file: /cvsroot/src/sys/arch/mips/mips/mipsX_subr.S,v retrieving revision 1.96 diff -u -p -r1.96 mipsX_subr.S --- sys/arch/mips/mips/mipsX_subr.S 19 Nov 2016 09:05:50 -0000 1.96 +++ sys/arch/mips/mips/mipsX_subr.S 6 May 2017 19:05:48 -0000 @@ -2366,8 +2366,6 @@ LEAF_NOPROFILE(MIPSX(tlb_invalidate_asid mtc0 zero, MIPS_COP_0_STATUS # disable interrupts COP0_SYNC - add a2, 1 # bias for sltu - _MFC0 t0, MIPS_COP_0_TLB_HI # Save the current PID. mfc0 t1, MIPS_COP_0_TLB_WIRED li v0, MIPS_KSEG0_START # invalid address @@ -2381,19 +2379,19 @@ LEAF_NOPROFILE(MIPSX(tlb_invalidate_asid sll ta0, t1, PGSHIFT | 1 # PAGE_SHIFT | 1 tlbr # obtain an entry COP0_SYNC - _MFC0 a0, MIPS_COP_0_TLB_LO1 + _MFC0 ta1, MIPS_COP_0_TLB_LO1 MFC0_HAZARD - and a0, MIPS3_PG_G # check to see it has G bit - bnez a0, 2f # yep, skip this one. + and ta1, MIPS3_PG_G # check to see it has G bit + bnez ta1, 2f # yep, skip this one. nop - _MFC0 a0, MIPS_COP_0_TLB_HI # get VA and ASID + _MFC0 ta1, MIPS_COP_0_TLB_HI # get VA and ASID MFC0_HAZARD - and a0, MIPS3_PG_ASID # focus on ASID - sltu a3, a0, a1 # asid < base? + and ta1, MIPS3_PG_ASID # focus on ASID + sltu a3, ta1, a0 # asid < base? bnez a3, 2f # yes, skip this entry. nop - sltu a3, a0, a2 # asid < limit - beqz a3, 2f # nope, skip this entry. + sltu a3, a1, ta1 # limit < asid + bnez a3, 2f # yes, skip this entry. nop PTR_ADDU ta0, v0 @@ -2544,6 +2542,7 @@ LEAF_NOPROFILE(MIPSX(tlb_record_asids)) _MFC0 a3, MIPS_COP_0_TLB_HI # Save the current PID. mfc0 ta0, MIPS_COP_0_TLB_WIRED INT_L ta1, _C_LABEL(mips_options) + MO_NUM_TLB_ENTRIES + mfc0 t3, MIPS_COP_0_TLB_PG_MASK # save current pgMask move ta2, zero li ta3, 1 move v0, zero # start at zero ASIDs @@ -2610,6 +2609,7 @@ LEAF_NOPROFILE(MIPSX(tlb_record_asids)) LONG_S t2, 0(ta2) # save the updated value. 5: + mtc0 t3, MIPS_COP_0_TLB_PG_MASK # restore pgMask _MTC0 a3, MIPS_COP_0_TLB_HI # restore ASID COP0_SYNC