Lines Matching defs:pc
106 extern _Unwind_Ptr __gnu_Unwind_Find_exidx(_Unwind_Ptr pc, int *pcount);
108 static uintptr_t find_exidx(uintptr_t pc, size_t* out_exidx_size) {
110 uintptr_t start = (uintptr_t)__gnu_Unwind_Find_exidx((_Unwind_Ptr)pc, &count);
122 const map_info_t* map_info_list, uintptr_t pc) {
123 if (!pc) {
124 ALOGV("get_exception_handler: pc is zero, no handler");
133 exidx_start = find_exidx(pc, &exidx_size);
135 mi = find_map_info(map_info_list, pc);
161 if (pc < entry_pc) {
173 if (pc >= next_entry_pc) {
194 ALOGV("get_exception_handler: pc=0x%08x, module='%s', module_start=0x%08x, "
196 pc, mi->name, mi->start, exidx_start, exidx_size, handler, handler_index);
198 ALOGV("get_exception_handler: pc=0x%08x, "
200 pc, exidx_start, exidx_size, handler, handler_index);
441 static bool try_get_half_word(const memory_t* memory, uint32_t pc, uint16_t* out_value) {
443 if (try_get_word(memory, pc & ~2, &word)) {
444 *out_value = pc & 2 ? word >> 16 : word & 0xffff;
450 uintptr_t rewind_pc_arch(const memory_t* memory, uintptr_t pc) {
451 if (pc & 1) {
471 if (try_get_half_word(memory, pc - 5, &prev1)
473 && try_get_half_word(memory, pc - 3, &prev2)
475 pc -= 4; // long offset
477 pc -= 2;
481 pc -= 4;
483 return pc;
494 uintptr_t pc = index ? rewind_pc_arch(memory, state->gregs[R_PC])
496 backtrace_frame_t* frame = add_backtrace_entry(pc,
502 uintptr_t handler = get_exception_handler(memory, map_info_list, pc);