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