Index: sys/arch/arm/arm32/arm32_tlb.c =================================================================== RCS file: /cvsroot/src/sys/arch/arm/arm32/arm32_tlb.c,v retrieving revision 1.9 diff -u -p -r1.9 arm32_tlb.c --- sys/arch/arm/arm32/arm32_tlb.c 26 Mar 2015 08:45:05 -0000 1.9 +++ sys/arch/arm/arm32/arm32_tlb.c 15 Oct 2015 13:31:13 -0000 @@ -57,6 +57,8 @@ tlb_set_asid(tlb_asid_t asid) } armreg_contextidr_write(asid); arm_isb(); + armreg_bpiall_write(0); + arm_isb(); } void @@ -66,8 +68,10 @@ tlb_invalidate_all(void) arm_dsb(); #ifdef MULTIPROCESSOR armreg_tlbiallis_write(0); + armreg_bpiallis_write(0); #else armreg_tlbiall_write(0); + armreg_bpiall_write(0); #endif arm_isb(); if (__predict_false(vivt_icache_p)) { @@ -114,6 +118,11 @@ tlb_invalidate_asids(tlb_asid_t lo, tlb_ armreg_iciallu_write(0); } } +#ifdef MULTIPROCESSOR + armreg_bpiallis_write(0); +#else + armreg_bpiall_write(0); +#endif arm_isb(); } @@ -130,6 +139,11 @@ tlb_invalidate_addr(vaddr_t va, tlb_asid #endif //armreg_tlbiall_write(asid); } +#ifdef MULTIPROCESSOR + armreg_bpiallis_write(0); +#else + armreg_bpiall_write(0); +#endif arm_dsb(); arm_isb(); }