Lines Matching refs:frame
23 rt_inline rt_err_t _bt_kaddr(rt_ubase_t *fp, struct rt_hw_backtrace_frame *frame) in _bt_kaddr() argument
26 frame->fp = *(fp - 2); in _bt_kaddr()
27 frame->pc = *(fp - 1); in _bt_kaddr()
29 if ((rt_ubase_t)fp == frame->fp) in _bt_kaddr()
44 rt_inline rt_err_t _bt_uaddr(rt_lwp_t lwp, rt_ubase_t *fp, struct rt_hw_backtrace_frame *frame) in _bt_uaddr() argument
47 if (lwp_data_get(lwp, &frame->fp, fp - 2, WORD) != WORD) in _bt_uaddr()
51 else if (lwp_data_get(lwp, &frame->pc, fp - 1, WORD) != WORD) in _bt_uaddr()
55 else if ((rt_ubase_t)fp == frame->fp) in _bt_uaddr()
61 frame->pc -= 0; in _bt_uaddr()
68 rt_err_t rt_hw_backtrace_frame_unwind(rt_thread_t thread, struct rt_hw_backtrace_frame *frame) in rt_hw_backtrace_frame_unwind() argument
71 rt_uintptr_t *fp = (rt_uintptr_t *)frame->fp; in rt_hw_backtrace_frame_unwind()
82 rc = _bt_kaddr(fp, frame); in rt_hw_backtrace_frame_unwind()
86 rc = _bt_uaddr(lwp, fp, frame); in rt_hw_backtrace_frame_unwind()
97 rc = _bt_kaddr(fp, frame); in rt_hw_backtrace_frame_unwind()
111 rt_err_t rt_hw_backtrace_frame_get(rt_thread_t thread, struct rt_hw_backtrace_frame *frame) in rt_hw_backtrace_frame_get() argument
115 if (!thread || !frame) in rt_hw_backtrace_frame_get()
122 frame->pc = sframe->regs[RT_HW_SWITCH_CONTEXT_RA]; in rt_hw_backtrace_frame_get()
123 frame->fp = sframe->regs[RT_HW_SWITCH_CONTEXT_S0];; in rt_hw_backtrace_frame_get()