Lines Matching +full:start +full:- +full:of +full:- +full:frame
4 * SPDX-License-Identifier: Apache-2.0
11 return current->stack_info.start <= addr && in valid_stack()
12 addr < current->stack_info.start + current->stack_info.size; in valid_stack()
23 * This function use frame pointers to unwind stack and get trace of return addresses.
37 * at the beginning of _isr_wrapper in order, specified by z_arch_esf_t. in arch_perf_current_stack_trace()
39 * _current_cpu->irq_stack and save $sp with offset -16 on irq stack in arch_perf_current_stack_trace()
45 *((struct arch_esf **)(((uintptr_t)_current_cpu->irq_stack) - 16)); in arch_perf_current_stack_trace()
48 * $s0 is used as frame pointer. in arch_perf_current_stack_trace()
50 * stack frame in memory (commonly): in arch_perf_current_stack_trace()
53 * [-] <- $fp($s0) (curr) in arch_perf_current_stack_trace()
59 * then stack frame will be: in arch_perf_current_stack_trace()
61 * [-] <- $fp($s0) (curr) in arch_perf_current_stack_trace()
66 void **fp = (void **)esf->s0; in arch_perf_current_stack_trace()
67 void **new_fp = (void **)fp[-1]; in arch_perf_current_stack_trace()
69 buf[idx++] = (uintptr_t)esf->mepc; in arch_perf_current_stack_trace()
72 * During function prologue and epilogue fp is equal to fp of in arch_perf_current_stack_trace()
73 * previous function stack frame, it looks like second function in arch_perf_current_stack_trace()
78 buf[idx++] = (uintptr_t)esf->ra; in arch_perf_current_stack_trace()
87 if (!in_text_region((uintptr_t)fp[-1])) { in arch_perf_current_stack_trace()
91 buf[idx++] = (uintptr_t)fp[-1]; in arch_perf_current_stack_trace()
92 new_fp = (void **)fp[-2]; in arch_perf_current_stack_trace()
95 * anti-infinity-loop if in arch_perf_current_stack_trace()