| /** |
| * @file backtrace.c |
| * |
| * @remark Copyright 2008 Tensilica Inc. |
| * Copyright (C) 2015 Cadence Design Systems Inc. |
| * @remark Read the file COPYING |
| * |
| */ |
| |
| #include <linux/oprofile.h> |
| #include <asm/ptrace.h> |
| #include <asm/stacktrace.h> |
| |
| static int xtensa_backtrace_cb(struct stackframe *frame, void *data) |
| { |
| oprofile_add_trace(frame->pc); |
| return 0; |
| } |
| |
| void xtensa_backtrace(struct pt_regs * const regs, unsigned int depth) |
| { |
| if (user_mode(regs)) |
| xtensa_backtrace_user(regs, depth, xtensa_backtrace_cb, NULL); |
| else |
| xtensa_backtrace_kernel(regs, depth, xtensa_backtrace_cb, |
| xtensa_backtrace_cb, NULL); |
| } |