Module Name: src Committed By: matt Date: Tue Aug 2 05:13:21 UTC 2011
Modified Files: src/sys/arch/mips/mips: mipsX_subr.S Log Message: Clear the BTB on user->kernel entry on Loongson2 To generate a diff of this commit: cvs rdiff -u -r1.51 -r1.52 src/sys/arch/mips/mips/mipsX_subr.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/mips/mips/mipsX_subr.S diff -u src/sys/arch/mips/mips/mipsX_subr.S:1.51 src/sys/arch/mips/mips/mipsX_subr.S:1.52 --- src/sys/arch/mips/mips/mipsX_subr.S:1.51 Sun Jul 31 15:39:29 2011 +++ src/sys/arch/mips/mips/mipsX_subr.S Tue Aug 2 05:13:21 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: mipsX_subr.S,v 1.51 2011/07/31 15:39:29 matt Exp $ */ +/* $NetBSD: mipsX_subr.S,v 1.52 2011/08/02 05:13:21 matt Exp $ */ /* * Copyright 2002 Wasabi Systems, Inc. @@ -1052,6 +1052,10 @@ /* * Save all the registers except the kernel temporaries onto the stack. */ +#ifdef MIPS3_LOONGSON2 + li k0, MIPS_DIAG_BTB_CLEAR + mtc0 k0, MIPS_COP_0_DIAG +#endif /* K1 already has CURLWP */ PTR_L k0, L_PCB(k1) # XXXuvm_lwp_getuarea PTR_ADDU k0, USPACE - TF_SIZ - CALLFRAME_SIZ @@ -1163,6 +1167,10 @@ * Save the relevant user registers onto the kernel stack. * We don't need to save s0 - s8 because the compiler does it for us. */ +#ifdef MIPS3_LOONGSON2 + li k0, MIPS_DIAG_BTB_CLEAR + mtc0 k0, MIPS_COP_0_DIAG +#endif /* k1 contains curlwp */ PTR_L k0, L_PCB(k1) # XXXuvm_lwp_getuarea PTR_ADDU k0, USPACE - TF_SIZ - CALLFRAME_SIZ @@ -1333,6 +1341,10 @@ /* * Save all the registers but kernel temporaries onto the stack. */ +#ifdef MIPS3_LOONGSON2 + li k0, MIPS_DIAG_BTB_CLEAR + mtc0 k0, MIPS_COP_0_DIAG +#endif /* k1 already contains cpulwp */ PTR_L k0, L_PCB(k1) # XXXuvm_lwp_getuarea PTR_ADDU k0, USPACE - TF_SIZ - CALLFRAME_SIZ @@ -1642,7 +1654,7 @@ tlbwi # write TLB COP0_SYNC #ifdef MIPS3_LOONGSON2 - li k0, 4 # ugly + li k0, MIPS_DIAG_ITLB_CLEAR mtc0 k0, MIPS_COP_0_DIAG # invalidate ITLB #elif defined(MIPS3) nop @@ -1677,7 +1689,7 @@ tlbwi # update TLB COP0_SYNC #ifdef MIPS3_LOONGSON2 - li k0, 4 # ugly + li k0, MIPS_DIAG_ITLB_CLEAR mtc0 k0, MIPS_COP_0_DIAG # invalidate ITLB #elif defined(MIPS3) nop @@ -1762,7 +1774,7 @@ tlbwi # update slot found COP0_SYNC #ifdef MIPS3_LOONGSON2 - li v0, 4 # ugly + li k0, MIPS_DIAG_ITLB_CLEAR mtc0 v0, MIPS_COP_0_DIAG # invalidate ITLB #elif defined(MIPS3) nop # required for QED5230 @@ -1784,7 +1796,7 @@ tlbwi # update slot found COP0_SYNC #ifdef MIPS3_LOONGSON2 - li v0, 4 # ugly + li k0, MIPS_DIAG_ITLB_CLEAR mtc0 v0, MIPS_COP_0_DIAG # invalidate ITLB #elif defined(MIPS3) nop # required for QED5230 @@ -1905,7 +1917,7 @@ tlbwi COP0_SYNC #ifdef MIPS3_LOONGSON2 - li v0, 4 # ugly + li k0, MIPS_DIAG_ITLB_CLEAR mtc0 v0, MIPS_COP_0_DIAG # invalidate ITLB #elif defined(MIPS3) nop @@ -1975,7 +1987,7 @@ COP0_SYNC #ifdef MIPS3_LOONGSON2 - li v0, 4 # ugly + li k0, MIPS_DIAG_ITLB_CLEAR mtc0 v0, MIPS_COP_0_DIAG # invalidate ITLB #endif @@ -2030,7 +2042,7 @@ COP0_SYNC #ifdef MIPS3_LOONGSON2 - li v0, 4 # ugly + li k0, MIPS_DIAG_ITLB_CLEAR mtc0 v0, MIPS_COP_0_DIAG # invalidate ITLB #endif @@ -2078,7 +2090,7 @@ COP0_SYNC #ifdef MIPS3_LOONGSON2 - li v0, 4 # ugly + li k0, MIPS_DIAG_ITLB_CLEAR mtc0 v0, MIPS_COP_0_DIAG # invalidate ITLB #endif @@ -2241,7 +2253,7 @@ _MTC0 ta1, MIPS_COP_0_TLB_HI # restore EntryHi #ifdef MIPS3_LOONGSON2 - li v0, 4 # ugly + li k0, MIPS_DIAG_ITLB_CLEAR mtc0 v0, MIPS_COP_0_DIAG # invalidate ITLB #endif @@ -2475,7 +2487,7 @@ COP0_SYNC #ifdef MIPS3_LOONGSON2 - li v0, 4 # ugly + li k0, MIPS_DIAG_ITLB_CLEAR mtc0 v0, MIPS_COP_0_DIAG # invalidate ITLB #endif