| 160 | } |
| 161 | |
| 162 | static const struct unwind_idx *unwind_find_idx(unsigned long addr, const struct unwind_idx **origin_idx, const struct unwind_idx exidx_start[], const struct unwind_idx exidx_end[]) |
| 163 | { |
| 164 | const struct unwind_idx *idx = RT_NULL; |
| 165 | |
| 166 | LOG_D("%s(%08lx)", __func__, addr); |
| 167 | |
| 168 | if (core_kernel_text(addr)) |
| 169 | { |
| 170 | if (!*origin_idx) |
| 171 | *origin_idx = |
| 172 | unwind_find_origin(exidx_start, |
| 173 | exidx_end); |
| 174 | |
| 175 | /* main unwind table */ |
| 176 | idx = search_index(addr, exidx_start, |
| 177 | *origin_idx, |
| 178 | exidx_end); |
| 179 | } |
| 180 | |
| 181 | LOG_D("%s: idx = %x", __func__, idx); |
| 182 | return idx; |
| 183 | } |
| 184 | |
| 185 | static unsigned long unwind_get_byte(struct unwind_ctrl_block *ctrl) |
| 186 | { |
no test coverage detected