Lines Matching full:ua
98 #define uad_baseok(ua) \ argument
99 (esid2base(ua->ua_base, ua->ua_level) == ua->ua_base)
233 struct slbtnode *ua; in user_va_to_slb_entry() local
236 ua = pm->pm_slb_tree_root; in user_va_to_slb_entry()
239 KASSERT(uad_baseok(ua), ("uad base %016jx level %d bad!", in user_va_to_slb_entry()
240 ua->ua_base, ua->ua_level)); in user_va_to_slb_entry()
241 idx = esid2idx(esid, ua->ua_level); in user_va_to_slb_entry()
247 if (ua->ua_level == UAD_LEAF_LEVEL) in user_va_to_slb_entry()
248 return ((ua->u.slb_entries[idx].slbe & SLBE_VALID) ? in user_va_to_slb_entry()
249 &ua->u.slb_entries[idx] : NULL); in user_va_to_slb_entry()
257 ua = ua->u.ua_child[idx]; in user_va_to_slb_entry()
258 if (ua == NULL || in user_va_to_slb_entry()
259 esid2base(esid, ua->ua_level) != ua->ua_base) in user_va_to_slb_entry()
293 struct slbtnode *ua, *next, *inter; in allocate_user_vsid() local
306 ua = pm->pm_slb_tree_root; in allocate_user_vsid()
310 KASSERT(uad_baseok(ua), in allocate_user_vsid()
311 ("uad base %09jx level %d bad!", ua->ua_base, ua->ua_level)); in allocate_user_vsid()
312 idx = esid2idx(esid, ua->ua_level); in allocate_user_vsid()
314 if (ua->ua_level == UAD_LEAF_LEVEL) { in allocate_user_vsid()
315 ua->u.slb_entries[idx].slbv = slbv; in allocate_user_vsid()
317 ua->u.slb_entries[idx].slbe = (esid << SLBE_ESID_SHIFT) in allocate_user_vsid()
319 setbit(&ua->ua_alloc, idx); in allocate_user_vsid()
320 slb = &ua->u.slb_entries[idx]; in allocate_user_vsid()
324 next = ua->u.ua_child[idx]; in allocate_user_vsid()
326 slb = make_new_leaf(esid, slbv, ua); in allocate_user_vsid()
335 inter = make_intermediate(esid, ua); in allocate_user_vsid()
340 ua = next; in allocate_user_vsid()
356 struct slbtnode *ua; in free_vsid() local
361 ua = pm->pm_slb_tree_root; in free_vsid()
364 KASSERT(uad_baseok(ua), in free_vsid()
365 ("uad base %09jx level %d bad!", ua->ua_base, ua->ua_level)); in free_vsid()
367 idx = esid2idx(esid, ua->ua_level); in free_vsid()
368 if (ua->ua_level == UAD_LEAF_LEVEL) { in free_vsid()
369 ua->u.slb_entries[idx].slbv = 0; in free_vsid()
371 ua->u.slb_entries[idx].slbe = 0; in free_vsid()
372 clrbit(&ua->ua_alloc, idx); in free_vsid()
376 ua = ua->u.ua_child[idx]; in free_vsid()
377 if (ua == NULL || in free_vsid()
378 esid2base(esid, ua->ua_level) != ua->ua_base) { in free_vsid()
388 free_slb_tree_node(struct slbtnode *ua) in free_slb_tree_node() argument
393 if (ua->ua_level != UAD_LEAF_LEVEL) { in free_slb_tree_node()
394 if (ua->u.ua_child[idx] != NULL) in free_slb_tree_node()
395 free_slb_tree_node(ua->u.ua_child[idx]); in free_slb_tree_node()
397 if (ua->u.slb_entries[idx].slbv != 0) in free_slb_tree_node()
398 moea64_release_vsid(ua->u.slb_entries[idx].slbv in free_slb_tree_node()
403 uma_zfree(slbt_zone, ua); in free_slb_tree_node()