Lines Matching refs:tlbsel

67 static unsigned int get_tlb_esel(struct kvm_vcpu *vcpu, int tlbsel)  in get_tlb_esel()  argument
72 if (tlbsel == 0) { in get_tlb_esel()
76 esel &= vcpu_e500->gtlb_params[tlbsel].entries - 1; in get_tlb_esel()
84 gva_t eaddr, int tlbsel, unsigned int pid, int as) in kvmppc_e500_tlb_index() argument
86 int size = vcpu_e500->gtlb_params[tlbsel].entries; in kvmppc_e500_tlb_index()
90 if (tlbsel == 0) { in kvmppc_e500_tlb_index()
100 offset = vcpu_e500->gtlb_offset[tlbsel]; in kvmppc_e500_tlb_index()
134 int tlbsel; in kvmppc_e500_deliver_tlb_miss() local
137 tlbsel = (vcpu->arch.shared->mas4 >> 28) & 0x1; in kvmppc_e500_deliver_tlb_miss()
138 victim = (tlbsel == 0) ? gtlb0_get_next_victim(vcpu_e500) : 0; in kvmppc_e500_deliver_tlb_miss()
141 vcpu->arch.shared->mas0 = MAS0_TLBSEL(tlbsel) | MAS0_ESEL(victim) in kvmppc_e500_deliver_tlb_miss()
142 | MAS0_NV(vcpu_e500->gtlb_nv[tlbsel]); in kvmppc_e500_deliver_tlb_miss()
215 int tlbsel, int esel) in kvmppc_e500_gtlbe_invalidate() argument
218 get_entry(vcpu_e500, tlbsel, esel); in kvmppc_e500_gtlbe_invalidate()
223 if (tlbsel == 1 && kvmppc_need_recalc_tlb1map_range(vcpu_e500, gtlbe)) in kvmppc_e500_gtlbe_invalidate()
252 int esel, tlbsel; in kvmppc_e500_emul_tlbivax() local
257 tlbsel = (ea >> 3) & 0x1; in kvmppc_e500_emul_tlbivax()
261 for (esel = 0; esel < vcpu_e500->gtlb_params[tlbsel].entries; in kvmppc_e500_emul_tlbivax()
263 kvmppc_e500_gtlbe_invalidate(vcpu_e500, tlbsel, esel); in kvmppc_e500_emul_tlbivax()
266 esel = kvmppc_e500_tlb_index(vcpu_e500, ea, tlbsel, in kvmppc_e500_emul_tlbivax()
269 kvmppc_e500_gtlbe_invalidate(vcpu_e500, tlbsel, esel); in kvmppc_e500_emul_tlbivax()
278 static void tlbilx_all(struct kvmppc_vcpu_e500 *vcpu_e500, int tlbsel, in tlbilx_all() argument
285 for (esel = 0; esel < vcpu_e500->gtlb_params[tlbsel].entries; esel++) { in tlbilx_all()
286 tlbe = get_entry(vcpu_e500, tlbsel, esel); in tlbilx_all()
289 inval_gtlbe_on_host(vcpu_e500, tlbsel, esel); in tlbilx_all()
290 kvmppc_e500_gtlbe_invalidate(vcpu_e500, tlbsel, esel); in tlbilx_all()
298 int tlbsel, esel; in tlbilx_one() local
300 for (tlbsel = 0; tlbsel < 2; tlbsel++) { in tlbilx_one()
301 esel = kvmppc_e500_tlb_index(vcpu_e500, ea, tlbsel, pid, -1); in tlbilx_one()
303 inval_gtlbe_on_host(vcpu_e500, tlbsel, esel); in tlbilx_one()
304 kvmppc_e500_gtlbe_invalidate(vcpu_e500, tlbsel, esel); in tlbilx_one()
328 int tlbsel, esel; in kvmppc_e500_emul_tlbre() local
331 tlbsel = get_tlb_tlbsel(vcpu); in kvmppc_e500_emul_tlbre()
332 esel = get_tlb_esel(vcpu, tlbsel); in kvmppc_e500_emul_tlbre()
334 gtlbe = get_entry(vcpu_e500, tlbsel, esel); in kvmppc_e500_emul_tlbre()
336 vcpu->arch.shared->mas0 |= MAS0_NV(vcpu_e500->gtlb_nv[tlbsel]); in kvmppc_e500_emul_tlbre()
349 int esel, tlbsel; in kvmppc_e500_emul_tlbsx() local
352 for (tlbsel = 0; tlbsel < 2; tlbsel++) { in kvmppc_e500_emul_tlbsx()
353 esel = kvmppc_e500_tlb_index(vcpu_e500, ea, tlbsel, pid, as); in kvmppc_e500_emul_tlbsx()
355 gtlbe = get_entry(vcpu_e500, tlbsel, esel); in kvmppc_e500_emul_tlbsx()
361 esel &= vcpu_e500->gtlb_params[tlbsel].ways - 1; in kvmppc_e500_emul_tlbsx()
363 vcpu->arch.shared->mas0 = MAS0_TLBSEL(tlbsel) | MAS0_ESEL(esel) in kvmppc_e500_emul_tlbsx()
364 | MAS0_NV(vcpu_e500->gtlb_nv[tlbsel]); in kvmppc_e500_emul_tlbsx()
372 tlbsel = vcpu->arch.shared->mas4 >> 28 & 0x1; in kvmppc_e500_emul_tlbsx()
373 victim = (tlbsel == 0) ? gtlb0_get_next_victim(vcpu_e500) : 0; in kvmppc_e500_emul_tlbsx()
375 vcpu->arch.shared->mas0 = MAS0_TLBSEL(tlbsel) in kvmppc_e500_emul_tlbsx()
377 | MAS0_NV(vcpu_e500->gtlb_nv[tlbsel]); in kvmppc_e500_emul_tlbsx()
397 int tlbsel, esel; in kvmppc_e500_emul_tlbwe() local
401 tlbsel = get_tlb_tlbsel(vcpu); in kvmppc_e500_emul_tlbwe()
402 esel = get_tlb_esel(vcpu, tlbsel); in kvmppc_e500_emul_tlbwe()
404 gtlbe = get_entry(vcpu_e500, tlbsel, esel); in kvmppc_e500_emul_tlbwe()
407 inval_gtlbe_on_host(vcpu_e500, tlbsel, esel); in kvmppc_e500_emul_tlbwe()
408 if ((tlbsel == 1) && in kvmppc_e500_emul_tlbwe()
422 if (tlbsel == 1) { in kvmppc_e500_emul_tlbwe()
441 if (tlbsel == 0) { in kvmppc_e500_emul_tlbwe()
447 kvmppc_mmu_map(vcpu, eaddr, raddr, index_of(tlbsel, esel)); in kvmppc_e500_emul_tlbwe()
460 int esel, tlbsel; in kvmppc_e500_tlb_search() local
462 for (tlbsel = 0; tlbsel < 2; tlbsel++) { in kvmppc_e500_tlb_search()
463 esel = kvmppc_e500_tlb_index(vcpu_e500, eaddr, tlbsel, pid, as); in kvmppc_e500_tlb_search()
465 return index_of(tlbsel, esel); in kvmppc_e500_tlb_search()