/** | |
* @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); | |
} |