Lines Matching refs:bundle

66 	const struct BacktraceBundle *bundle,  in find_matching_insn()  argument
74 for (i = 0; i < bundle->num_insns; i++) { in find_matching_insn()
76 &bundle->insns[i]; in find_matching_insn()
97 static inline bool bt_has_iret(const struct BacktraceBundle *bundle) in bt_has_iret() argument
99 return find_matching_insn(bundle, TILE_OPC_IRET, NULL, 0) != NULL; in bt_has_iret()
105 static bool bt_has_addi_sp(const struct BacktraceBundle *bundle, int *adjust) in bt_has_addi_sp() argument
110 find_matching_insn(bundle, TILE_OPC_ADDI, vals, 2); in bt_has_addi_sp()
112 insn = find_matching_insn(bundle, TILE_OPC_ADDLI, vals, 2); in bt_has_addi_sp()
115 insn = find_matching_insn(bundle, TILEGX_OPC_ADDXLI, vals, 2); in bt_has_addi_sp()
117 insn = find_matching_insn(bundle, TILEGX_OPC_ADDXI, vals, 2); in bt_has_addi_sp()
131 static int bt_get_info_ops(const struct BacktraceBundle *bundle, in bt_get_info_ops() argument
137 for (i = 0; i < bundle->num_insns; i++) { in bt_get_info_ops()
139 &bundle->insns[i]; in bt_get_info_ops()
153 static bool bt_has_jrp(const struct BacktraceBundle *bundle, int *target_reg) in bt_has_jrp() argument
156 find_matching_insn(bundle, TILE_OPC_JRP, NULL, 0); in bt_has_jrp()
165 static bool bt_modifies_reg(const struct BacktraceBundle *bundle, int reg) in bt_modifies_reg() argument
168 for (i = 0; i < bundle->num_insns; i++) { in bt_modifies_reg()
170 &bundle->insns[i]; in bt_modifies_reg()
185 static inline bool bt_modifies_sp(const struct BacktraceBundle *bundle) in bt_modifies_sp() argument
187 return bt_modifies_reg(bundle, TREG_SP); in bt_modifies_sp()
191 static inline bool bt_modifies_lr(const struct BacktraceBundle *bundle) in bt_modifies_lr() argument
193 return bt_modifies_reg(bundle, TREG_LR); in bt_modifies_lr()
197 static inline bool bt_has_move_r52_sp(const struct BacktraceBundle *bundle) in bt_has_move_r52_sp() argument
200 return find_matching_insn(bundle, TILE_OPC_MOVE, vals, 2) != NULL; in bt_has_move_r52_sp()
204 static inline bool bt_has_sw_sp_lr(const struct BacktraceBundle *bundle) in bt_has_sw_sp_lr() argument
207 return find_matching_insn(bundle, OPCODE_STORE, vals, 2) != NULL; in bt_has_sw_sp_lr()
212 static inline void bt_update_moveli(const struct BacktraceBundle *bundle, in bt_update_moveli() argument
216 for (i = 0; i < bundle->num_insns; i++) { in bt_update_moveli()
218 &bundle->insns[i]; in bt_update_moveli()
231 static bool bt_has_add_sp(const struct BacktraceBundle *bundle, int *adjust, in bt_has_add_sp() argument
237 find_matching_insn(bundle, TILEGX_OPC_ADDX, vals, 2); in bt_has_add_sp()
300 struct BacktraceBundle bundle; in find_caller_pc_and_caller_sp() local
345 bundle.bits = le64_to_cpu(prefetched_bundles[next_bundle++]); in find_caller_pc_and_caller_sp()
346 bundle.num_insns = in find_caller_pc_and_caller_sp()
347 parse_insn_tile(bundle.bits, pc, bundle.insns); in find_caller_pc_and_caller_sp()
348 num_info_ops = bt_get_info_ops(&bundle, info_operands); in find_caller_pc_and_caller_sp()
428 if (bundle.bits == 0) { in find_caller_pc_and_caller_sp()
441 if (bt_has_addi_sp(&bundle, &adjust) in find_caller_pc_and_caller_sp()
443 || bt_has_add_sp(&bundle, &adjust, moveli_args) in find_caller_pc_and_caller_sp()
459 if (bt_has_move_r52_sp(&bundle)) { in find_caller_pc_and_caller_sp()
468 if (bt_modifies_sp(&bundle)) { in find_caller_pc_and_caller_sp()
495 bt_update_moveli(&bundle, moveli_args); in find_caller_pc_and_caller_sp()
499 if (bt_has_iret(&bundle)) { in find_caller_pc_and_caller_sp()
510 has_jrp = bt_has_jrp(&bundle, &jrp_reg); in find_caller_pc_and_caller_sp()
525 } else if (bt_has_sw_sp_lr(&bundle)) { in find_caller_pc_and_caller_sp()
528 } else if (bt_modifies_lr(&bundle)) { in find_caller_pc_and_caller_sp()