/* * Shoot down everything. */ void vm_tlbshootdown_all(void) { spinlock_acquire(&coremap_spinlock); ct_shootdown_interrupts++; tlb_clear(); ct_shootdowns_done += NUM_TLB; wchan_wakeall(coremap_shootchan); spinlock_release(&coremap_spinlock); }
/* * mmu_setas: Set current address space in MMU. * * Synchronization: takes coremap_spinlock. Does not block. */ void mmu_setas(struct addrspace *as) { spinlock_acquire(&coremap_spinlock); if (as != curcpu->c_vm.cvm_lastas) { curcpu->c_vm.cvm_lastas = as; tlb_clear(); } spinlock_release(&coremap_spinlock); }
void TLBclear(){ // cprintf("%d | [%s] Clearing TLB (probably because of a context switch) \n",proc->pid, __FUNCTION__); tlb_clear(); }