Lines Matching refs:unw
146 } unw = { variable
147 .tables = &unw.kernel_table,
148 .lock = __SPIN_LOCK_UNLOCKED(unw.lock),
244 return (unsigned long) ((char *) addr - (char *) &unw.r0) < sizeof(unw.r0); in read_only()
255 if (reg < ARRAY_SIZE(unw.pt_regs_offsets)) in pt_regs_off()
256 off = unw.pt_regs_offsets[reg]; in pt_regs_off()
755 for (i = 0; i < (int) ARRAY_SIZE(unw.save_order); ++i) { in finish_prologue()
756 reg = sr->curr.reg + unw.save_order[i]; in finish_prologue()
837 set_reg(sr->curr.reg + unw.save_order[i], UNW_WHERE_GR, in desc_prologue()
1226 struct unw_script *script = unw.cache + info->hint; in script_lookup()
1233 STAT(++unw.stat.cache.lookups); in script_lookup()
1239 STAT(++unw.stat.cache.hinted_hits); in script_lookup()
1243 index = unw.hash[hash(ip)]; in script_lookup()
1247 script = unw.cache + index; in script_lookup()
1251 STAT(++unw.stat.cache.normal_hits); in script_lookup()
1252 unw.cache[info->prev_script].hint = script - unw.cache; in script_lookup()
1257 script = unw.cache + script->coll_chain; in script_lookup()
1258 STAT(++unw.stat.cache.collision_chain_traversals); in script_lookup()
1272 STAT(++unw.stat.script.news); in script_new()
1278 head = unw.lru_head; in script_new()
1279 script = unw.cache + head; in script_new()
1280 unw.lru_head = script->lru_chain; in script_new()
1292 unw.cache[unw.lru_tail].lru_chain = head; in script_new()
1293 unw.lru_tail = head; in script_new()
1298 tmp = unw.cache + unw.hash[index]; in script_new()
1305 unw.hash[index] = tmp->coll_chain; in script_new()
1312 tmp = unw.cache + tmp->coll_chain; in script_new()
1318 script->coll_chain = unw.hash[index]; in script_new()
1319 unw.hash[index] = script - unw.cache; in script_new()
1323 STAT(if (script->coll_chain < UNW_CACHE_SIZE) ++unw.stat.script.collisions); in script_new()
1395 insn.dst = unw.preg_index[i]; in emit_nat_info()
1426 val = unw.preg_index[UNW_REG_R4 + (rval - 4)]; in compile_reg()
1439 val = unw.preg_index[UNW_REG_F2 + (rval - 2)]; in compile_reg()
1441 val = unw.preg_index[UNW_REG_F16 + (rval - 16)]; in compile_reg()
1454 val = unw.preg_index[UNW_REG_B1 + (rval - 1)]; in compile_reg()
1480 insn.dst = unw.preg_index[i]; in compile_reg()
1494 insn.dst = insn.val = unw.preg_index[UNW_REG_PSP]; in compile_reg()
1541 STAT(++unw.stat.script.builds; start = ia64_get_itc()); in build_script()
1553 STAT(unw.stat.script.build_time += ia64_get_itc() - start); in build_script()
1556 unw.cache[info->prev_script].hint = script - unw.cache; in build_script()
1563 for (table = unw.tables; table; table = table->next) { in build_script()
1572 if (prev && prev != unw.tables) { in build_script()
1575 table->next = unw.tables->next; in build_script()
1576 unw.tables->next = table; in build_script()
1586 __func__, ip, unw.cache[info->prev_script].ip); in build_script()
1592 STAT(unw.stat.script.parse_time += ia64_get_itc() - parse_start); in build_script()
1593 STAT(unw.stat.script.build_time += ia64_get_itc() - start); in build_script()
1644 UNW_DPRINT(1, " %s <- ", unw.preg_name[r - sr.curr.reg]); in build_script()
1652 UNW_DPRINT(1, "%s+0x%lx", unw.preg_name[r - sr.curr.reg], r->val); in build_script()
1664 STAT(unw.stat.script.parse_time += ia64_get_itc() - parse_start); in build_script()
1706 STAT(unw.stat.script.parse_time += ia64_get_itc() - parse_start); in build_script()
1709 STAT(unw.stat.script.build_time += ia64_get_itc() - start); in build_script()
1726 STAT(++unw.stat.script.runs; start = ia64_get_itc()); in run_script()
1769 s[dst] = (unsigned long) &unw.r0; in run_script()
1816 STAT(unw.stat.script.run_time += ia64_get_itc() - start); in run_script()
1820 off = unw.sw_off[val]; in run_script()
1849 spin_lock_irqsave(&unw.lock, flags); in find_save_locs()
1852 spin_unlock_irqrestore(&unw.lock, flags); in find_save_locs()
1861 info->prev_script = scr - unw.cache; in find_save_locs()
1867 spin_unlock_irqrestore(&unw.lock, flags); in find_save_locs()
1889 STAT(local_irq_save(flags); ++unw.stat.api.unwinds; start = ia64_get_itc()); in unw_unwind()
1900 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); in unw_unwind()
1907 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); in unw_unwind()
1914 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); in unw_unwind()
1936 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); in unw_unwind()
1945 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); in unw_unwind()
1952 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); in unw_unwind()
1963 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); in unw_unwind()
2006 STAT(local_irq_save(flags); ++unw.stat.api.inits; start = ia64_get_itc()); in init_frame_info()
2047 STAT(unw.stat.api.init_time += ia64_get_itc() - start; local_irq_restore(flags)); in init_frame_info()
2115 spin_lock_irqsave(&unw.lock, flags); in unw_add_unwind_table()
2118 table->next = unw.tables->next; in unw_add_unwind_table()
2119 unw.tables->next = table; in unw_add_unwind_table()
2121 spin_unlock_irqrestore(&unw.lock, flags); in unw_add_unwind_table()
2141 if (table == &unw.kernel_table) { in unw_remove_unwind_table()
2147 spin_lock_irqsave(&unw.lock, flags); in unw_remove_unwind_table()
2151 for (prev = (struct unw_table *) &unw.tables; prev; prev = prev->next) in unw_remove_unwind_table()
2157 spin_unlock_irqrestore(&unw.lock, flags); in unw_remove_unwind_table()
2162 spin_unlock_irqrestore(&unw.lock, flags); in unw_remove_unwind_table()
2167 tmp = unw.cache + unw.hash[index]; in unw_remove_unwind_table()
2168 if (unw.hash[index] >= UNW_CACHE_SIZE in unw_remove_unwind_table()
2175 unw.hash[index] = tmp->coll_chain; in unw_remove_unwind_table()
2216 unw.gate_table = kmalloc(size, GFP_KERNEL); in create_gate_table()
2217 if (!unw.gate_table) { in create_gate_table()
2218 unw.gate_table_size = 0; in create_gate_table()
2222 unw.gate_table_size = size; in create_gate_table()
2224 lp = unw.gate_table; in create_gate_table()
2225 info = (char *) unw.gate_table + size; in create_gate_table()
2234 lp[2] = info - (char *) unw.gate_table; /* info */ in create_gate_table()
2252 unw.sw_off[unw.preg_index[UNW_REG_PRI_UNAT_GR]] = SW(CALLER_UNAT); in unw_init()
2253 unw.sw_off[unw.preg_index[UNW_REG_BSPSTORE]] = SW(AR_BSPSTORE); in unw_init()
2254 unw.sw_off[unw.preg_index[UNW_REG_PFS]] = SW(AR_PFS); in unw_init()
2255 unw.sw_off[unw.preg_index[UNW_REG_RP]] = SW(B0); in unw_init()
2256 unw.sw_off[unw.preg_index[UNW_REG_UNAT]] = SW(CALLER_UNAT); in unw_init()
2257 unw.sw_off[unw.preg_index[UNW_REG_PR]] = SW(PR); in unw_init()
2258 unw.sw_off[unw.preg_index[UNW_REG_LC]] = SW(AR_LC); in unw_init()
2259 unw.sw_off[unw.preg_index[UNW_REG_FPSR]] = SW(AR_FPSR); in unw_init()
2261 unw.sw_off[unw.preg_index[i]] = off; in unw_init()
2263 unw.sw_off[unw.preg_index[i]] = off; in unw_init()
2265 unw.sw_off[unw.preg_index[i]] = off; in unw_init()
2267 unw.sw_off[unw.preg_index[i]] = off; in unw_init()
2271 unw.cache[i].lru_chain = (i - 1); in unw_init()
2272 unw.cache[i].coll_chain = -1; in unw_init()
2273 rwlock_init(&unw.cache[i].lock); in unw_init()
2275 unw.lru_head = UNW_CACHE_SIZE - 1; in unw_init()
2276 unw.lru_tail = 0; in unw_init()
2278 init_unwind_table(&unw.kernel_table, "kernel", KERNEL_START, (unsigned long) __gp, in unw_init()
2315 if (buf && buf_size >= unw.gate_table_size) in sys_getunwind()
2316 if (copy_to_user(buf, unw.gate_table, unw.gate_table_size) != 0) in sys_getunwind()
2318 return unw.gate_table_size; in sys_getunwind()