Lines Matching refs:ent

77         HPPATLBEntry *ent = container_of(i, HPPATLBEntry, itree);  in hppa_find_tlb()  local
78 trace_hppa_tlb_find_entry(env, ent, ent->entry_valid, in hppa_find_tlb()
79 ent->itree.start, ent->itree.last, ent->pa); in hppa_find_tlb()
80 return ent; in hppa_find_tlb()
86 static void hppa_flush_tlb_ent(CPUHPPAState *env, HPPATLBEntry *ent, in hppa_flush_tlb_ent() argument
92 if (!ent->entry_valid) { in hppa_flush_tlb_ent()
96 trace_hppa_tlb_flush_ent(env, ent, ent->itree.start, in hppa_flush_tlb_ent()
97 ent->itree.last, ent->pa); in hppa_flush_tlb_ent()
99 tlb_flush_range_by_mmuidx(cs, ent->itree.start, in hppa_flush_tlb_ent()
100 ent->itree.last - ent->itree.start + 1, in hppa_flush_tlb_ent()
104 is_btlb = ent < &env->tlb[HPPA_BTLB_ENTRIES(env)]; in hppa_flush_tlb_ent()
109 interval_tree_remove(&ent->itree, &env->tlb_root); in hppa_flush_tlb_ent()
110 memset(ent, 0, sizeof(*ent)); in hppa_flush_tlb_ent()
113 ent->unused_next = env->tlb_unused; in hppa_flush_tlb_ent()
114 env->tlb_unused = ent; in hppa_flush_tlb_ent()
124 HPPATLBEntry *ent = container_of(i, HPPATLBEntry, itree); in hppa_flush_tlb_range() local
131 hppa_flush_tlb_ent(env, ent, false); in hppa_flush_tlb_range()
137 HPPATLBEntry *ent = env->tlb_unused; in hppa_alloc_tlb_ent() local
139 if (ent == NULL) { in hppa_alloc_tlb_ent()
148 ent = &env->tlb[i]; in hppa_alloc_tlb_ent()
149 hppa_flush_tlb_ent(env, ent, false); in hppa_alloc_tlb_ent()
152 env->tlb_unused = ent->unused_next; in hppa_alloc_tlb_ent()
153 return ent; in hppa_alloc_tlb_ent()
204 HPPATLBEntry *ent; in hppa_get_physical_address() local
228 ent = hppa_find_tlb(env, addr); in hppa_get_physical_address()
229 if (ent == NULL) { in hppa_get_physical_address()
237 phys = ent->pa + (addr - ent->itree.start); in hppa_get_physical_address()
241 r_prot = (priv <= ent->ar_pl1) * PAGE_READ; in hppa_get_physical_address()
242 w_prot = (priv <= ent->ar_pl2) * PAGE_WRITE; in hppa_get_physical_address()
243 x_prot = (ent->ar_pl2 <= priv && priv <= ent->ar_pl1) * PAGE_EXEC; in hppa_get_physical_address()
244 switch (ent->ar_type) { in hppa_get_physical_address()
277 if (ent->access_id && MMU_IDX_TO_P(mmu_idx)) { in hppa_get_physical_address()
279 ? match_prot_id64(env, ent->access_id) in hppa_get_physical_address()
280 : match_prot_id32(env, ent->access_id)); in hppa_get_physical_address()
296 if (unlikely(ent->t)) { in hppa_get_physical_address()
303 if (unlikely(!ent->d)) { in hppa_get_physical_address()
310 if (unlikely(ent->b)) { in hppa_get_physical_address()
482 HPPATLBEntry *ent; in HELPER() local
488 ent = env->tlb_partial; in HELPER()
489 if (ent == NULL) { in HELPER()
490 ent = hppa_alloc_tlb_ent(env); in HELPER()
491 env->tlb_partial = ent; in HELPER()
495 ent->itree.start = addr; in HELPER()
496 ent->itree.last = addr + TARGET_PAGE_SIZE - 1; in HELPER()
497 ent->pa = extract32(reg, 5, 20) << TARGET_PAGE_BITS; in HELPER()
498 trace_hppa_tlb_itlba(env, ent, ent->itree.start, ent->itree.last, ent->pa); in HELPER()
501 static void set_access_bits_pa11(CPUHPPAState *env, HPPATLBEntry *ent, in set_access_bits_pa11() argument
504 ent->access_id = extract32(reg, 1, 18); in set_access_bits_pa11()
505 ent->u = extract32(reg, 19, 1); in set_access_bits_pa11()
506 ent->ar_pl2 = extract32(reg, 20, 2); in set_access_bits_pa11()
507 ent->ar_pl1 = extract32(reg, 22, 2); in set_access_bits_pa11()
508 ent->ar_type = extract32(reg, 24, 3); in set_access_bits_pa11()
509 ent->b = extract32(reg, 27, 1); in set_access_bits_pa11()
510 ent->d = extract32(reg, 28, 1); in set_access_bits_pa11()
511 ent->t = extract32(reg, 29, 1); in set_access_bits_pa11()
512 ent->entry_valid = 1; in set_access_bits_pa11()
514 interval_tree_insert(&ent->itree, &env->tlb_root); in set_access_bits_pa11()
515 trace_hppa_tlb_itlbp(env, ent, ent->access_id, ent->u, ent->ar_pl2, in set_access_bits_pa11()
516 ent->ar_pl1, ent->ar_type, ent->b, ent->d, ent->t); in set_access_bits_pa11()
522 HPPATLBEntry *ent = env->tlb_partial; in HELPER() local
524 if (ent) { in HELPER()
526 if (ent->itree.start <= addr && addr <= ent->itree.last) { in HELPER()
527 set_access_bits_pa11(env, ent, reg); in HELPER()
537 HPPATLBEntry *ent; in itlbt_pa20() local
548 ent = hppa_alloc_tlb_ent(env); in itlbt_pa20()
550 ent->itree.start = va_b; in itlbt_pa20()
551 ent->itree.last = va_e; in itlbt_pa20()
554 ent->pa = r1 << (TARGET_PAGE_BITS - 5); in itlbt_pa20()
556 ent->pa &= TARGET_PAGE_MASK << mask_shift; in itlbt_pa20()
558 ent->pa = sextract64(ent->pa, 0, TARGET_PHYS_ADDR_SPACE_BITS); in itlbt_pa20()
560 ent->t = extract64(r2, 61, 1); in itlbt_pa20()
561 ent->d = extract64(r2, 60, 1); in itlbt_pa20()
562 ent->b = extract64(r2, 59, 1); in itlbt_pa20()
563 ent->ar_type = extract64(r2, 56, 3); in itlbt_pa20()
564 ent->ar_pl1 = extract64(r2, 54, 2); in itlbt_pa20()
565 ent->ar_pl2 = extract64(r2, 52, 2); in itlbt_pa20()
566 ent->u = extract64(r2, 51, 1); in itlbt_pa20()
569 ent->access_id = extract64(r2, 1, 31); in itlbt_pa20()
570 ent->entry_valid = 1; in itlbt_pa20()
572 interval_tree_insert(&ent->itree, &env->tlb_root); in itlbt_pa20()
573 trace_hppa_tlb_itlba(env, ent, ent->itree.start, ent->itree.last, ent->pa); in itlbt_pa20()
574 trace_hppa_tlb_itlbp(env, ent, ent->access_id, ent->u, in itlbt_pa20()
575 ent->ar_pl2, ent->ar_pl1, ent->ar_type, in itlbt_pa20()
576 ent->b, ent->d, ent->t); in itlbt_pa20()
804 HPPATLBEntry *ent = hppa_find_tlb(env, gva); in HELPER() local
806 if (ent == NULL) { in HELPER()
817 if (ent->ar_type & 4) { in HELPER()
819 int new_priv = ent->ar_type & 3; in HELPER()