Lines Matching refs:entry
109 __cache_evict_entry (struct __cache_tag_array *entry, int way)
111 addr tag = GET_TAG (entry, way);
113 if (CHECK_DIRTY (entry->dirty_bits[way]) && !CHECK_IS_LS (entry, way))
125 line = GET_CACHE_LINE (entry->tag_lo[way], way);
143 qword *line = GET_CACHE_LINE (entry->tag_lo[way], way);
166 bits = (qword) entry->dirty_bits[way];
202 SET_EMPTY (entry, way);
203 entry->dirty_bits[way] = (vector unsigned short) si_from_uint (0);
210 struct __cache_tag_array *entry = GET_ENTRY (ea);
217 if (CHECK_TAG (entry, i, tag))
218 __cache_evict_entry (entry, i);
253 __cache_miss (__ea void *ea, struct __cache_tag_array *entry, int way)
262 the least recently used entry. */
267 if (GET_LRU (entry, i) > lru)
269 lru = GET_LRU (entry, i);
273 __cache_evict_entry (entry, idx);
277 /* Set the empty entry's tag and fill it's cache line. */
279 SET_TAG (entry, way, tag);
280 entry->reserved[way] = 0;
291 SET_IS_LS (entry, way);
292 entry->base[way] =
298 entry->base[way] = __cache_fill (way, tag);
310 struct __cache_tag_array *entry;
319 entry = GET_ENTRY (ea);
341 si_stqd (si_ai (si_lqd (si_from_ptr (entry), 48), 1),
342 si_from_ptr (entry), 48);
345 /* Check if the entry's lo_tag is equal to the address' lo_tag. */
346 etag_lo = si_lqd (si_from_ptr (entry), 0);
350 etag_hi = si_lqd (si_from_ptr (entry), 16);
384 si_stqx (si_or (si_lqx (si_from_ptr (entry), way), bit_mask),
385 si_from_ptr (entry), way);
388 /* We've definitely found the right entry, set LRU (reserved) to 0
392 (si_lqd (si_from_ptr (entry), 48),
394 si_from_ptr (entry), 48);
399 (si_and (si_lqd (si_from_ptr (entry), 32), equal)),
404 __cache_miss (ea, entry, (si_to_uint (si_clz (si_gbb (equal))) - 16) >> 2);
424 struct __cache_tag_array *entry = __cache_tag_array;
428 /* Cycle through each cache entry and evict all used ways. */
433 if (!CHECK_EMPTY (entry, j))
434 __cache_evict_entry (entry, j);
436 entry++;