Lines Matching refs:reg
83 static void pr_debug_location(Dwarf_Die *die, u64 pc, int reg) in pr_debug_location() argument
98 if (reg != DWARF_REG_PC && end <= pc) in pr_debug_location()
100 if (reg != DWARF_REG_PC && start > pc) in pr_debug_location()
154 bool has_reg_type(struct type_state *state, int reg) in has_reg_type() argument
156 return (unsigned)reg < ARRAY_SIZE(state->regs); in has_reg_type()
514 Dwarf_Die *type_die, int reg, in check_variable() argument
521 if (reg == DWARF_REG_PC) in check_variable()
523 else if (reg == dloc->fbreg || is_fbreg) in check_variable()
525 else if (arch__is(dloc->arch, "x86") && reg == X86_REG_SP) in check_variable()
758 if (pos->reg != -1) in global_var__collect()
867 if (var->reg == DWARF_REG_FB || var->reg == fbreg || var->reg == state->stack_reg) { in update_var_state()
871 if (var->reg != DWARF_REG_FB) in update_var_state()
882 if (var->reg == state->stack_reg) { in update_var_state()
890 } else if (has_reg_type(state, var->reg) && var->offset == 0) { in update_var_state()
891 struct type_state_reg *reg; in update_var_state() local
894 reg = &state->regs[var->reg]; in update_var_state()
896 if (reg->ok && reg->kind == TSR_KIND_TYPE && in update_var_state()
897 !is_better_type(®->type, &mem_die)) in update_var_state()
900 orig_type = reg->type; in update_var_state()
902 reg->type = mem_die; in update_var_state()
903 reg->kind = TSR_KIND_TYPE; in update_var_state()
904 reg->ok = true; in update_var_state()
907 insn_offset, var->reg); in update_var_state()
915 if (has_reg_type(state, reg->copied_from)) { in update_var_state()
918 copy_reg = &state->regs[reg->copied_from]; in update_var_state()
929 insn_offset, reg->copied_from); in update_var_state()
1053 int reg = dloc->op->reg1; in check_matching_type() local
1065 insn_offset, reg, offset_sign, offset, in check_matching_type()
1066 state->regs[reg].ok, state->regs[reg].kind); in check_matching_type()
1068 if (!state->regs[reg].ok) in check_matching_type()
1071 if (state->regs[reg].kind == TSR_KIND_TYPE) { in check_matching_type()
1076 die_get_typename_from_type(&state->regs[reg].type, &sb); in check_matching_type()
1084 if (!is_pointer_type(&state->regs[reg].type)) { in check_matching_type()
1085 if (dloc->op->offset < 0 && reg != state->stack_reg) in check_matching_type()
1092 if (__die_get_real_type(&state->regs[reg].type, type_die) == NULL) in check_matching_type()
1110 if (state->regs[reg].kind == TSR_KIND_POINTER) { in check_matching_type()
1117 *type_die = state->regs[reg].type; in check_matching_type()
1129 if (state->regs[reg].kind == TSR_KIND_CANARY) { in check_matching_type()
1142 if (state->regs[reg].kind == TSR_KIND_PERCPU_BASE) { in check_matching_type()
1151 if (dloc->op->reg2 == reg) in check_matching_type()
1169 if (reg == dloc->fbreg || reg == state->stack_reg) { in check_matching_type()
1172 pr_debug_dtp("%s", reg == dloc->fbreg ? "fbreg" : "stack"); in check_matching_type()
1212 if (reg != fbreg) in check_matching_type()
1263 if (dloc->op->offset < 0 && reg != state->stack_reg) { in check_matching_type()
1436 int reg, offset = loc->offset; in find_data_type_die() local
1479 reg = loc->reg1; in find_data_type_die()
1485 if (reg == DWARF_REG_PC) { in find_data_type_die()
1501 if (reg != DWARF_REG_PC && dwarf_hasattr(&scopes[0], DW_AT_frame_base)) { in find_data_type_die()
1528 is_fbreg = (reg == fbreg); in find_data_type_die()
1537 if (reg == DWARF_REG_PC) { in find_data_type_die()
1543 if (!die_find_variable_by_reg(&scopes[i], pc, reg, in find_data_type_die()
1553 result = check_variable(dloc, &var_die, &mem_die, reg, type_offset, is_fbreg); in find_data_type_die()
1555 if (reg == DWARF_REG_PC) { in find_data_type_die()
1558 } else if (reg == DWARF_REG_FB || is_fbreg) { in find_data_type_die()
1574 pr_debug_location(&var_die, pc, reg); in find_data_type_die()
1578 if (!found && loc->multi_regs && reg == loc->reg1 && loc->reg1 != loc->reg2) { in find_data_type_die()
1579 reg = loc->reg2; in find_data_type_die()
1583 if (!found && reg != DWARF_REG_PC) { in find_data_type_die()