|
@@ -299,6 +299,7 @@ void __update_tlb(struct vm_area_struct * vma, unsigned long address, pte_t pte)
|
|
|
|
|
|
local_irq_save(flags);
|
|
|
|
|
|
+ htw_stop();
|
|
|
pid = read_c0_entryhi() & ASID_MASK;
|
|
|
address &= (PAGE_MASK << 1);
|
|
|
write_c0_entryhi(address | pid);
|
|
@@ -346,6 +347,7 @@ void __update_tlb(struct vm_area_struct * vma, unsigned long address, pte_t pte)
|
|
|
tlb_write_indexed();
|
|
|
}
|
|
|
tlbw_use_hazard();
|
|
|
+ htw_start();
|
|
|
flush_itlb_vm(vma);
|
|
|
local_irq_restore(flags);
|
|
|
}
|
|
@@ -422,6 +424,7 @@ __init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,
|
|
|
|
|
|
local_irq_save(flags);
|
|
|
/* Save old context and create impossible VPN2 value */
|
|
|
+ htw_stop();
|
|
|
old_ctx = read_c0_entryhi();
|
|
|
old_pagemask = read_c0_pagemask();
|
|
|
wired = read_c0_wired();
|
|
@@ -443,6 +446,7 @@ __init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,
|
|
|
|
|
|
write_c0_entryhi(old_ctx);
|
|
|
write_c0_pagemask(old_pagemask);
|
|
|
+ htw_start();
|
|
|
out:
|
|
|
local_irq_restore(flags);
|
|
|
return ret;
|