1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Stack trace support for Microblaze. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2009 Michal Simek <monstr@monstr.eu> 5*4882a593Smuzhiyun * Copyright (C) 2009 PetaLogix 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * This file is subject to the terms and conditions of the GNU General Public 8*4882a593Smuzhiyun * License. See the file "COPYING" in the main directory of this archive 9*4882a593Smuzhiyun * for more details. 10*4882a593Smuzhiyun */ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #include <linux/export.h> 13*4882a593Smuzhiyun #include <linux/sched.h> 14*4882a593Smuzhiyun #include <linux/stacktrace.h> 15*4882a593Smuzhiyun #include <linux/thread_info.h> 16*4882a593Smuzhiyun #include <linux/ptrace.h> 17*4882a593Smuzhiyun #include <asm/unwind.h> 18*4882a593Smuzhiyun save_stack_trace(struct stack_trace * trace)19*4882a593Smuzhiyunvoid save_stack_trace(struct stack_trace *trace) 20*4882a593Smuzhiyun { 21*4882a593Smuzhiyun /* Exclude our helper functions from the trace*/ 22*4882a593Smuzhiyun trace->skip += 2; 23*4882a593Smuzhiyun microblaze_unwind(NULL, trace, ""); 24*4882a593Smuzhiyun } 25*4882a593Smuzhiyun EXPORT_SYMBOL_GPL(save_stack_trace); 26*4882a593Smuzhiyun save_stack_trace_tsk(struct task_struct * tsk,struct stack_trace * trace)27*4882a593Smuzhiyunvoid save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) 28*4882a593Smuzhiyun { 29*4882a593Smuzhiyun microblaze_unwind(tsk, trace, ""); 30*4882a593Smuzhiyun } 31*4882a593Smuzhiyun EXPORT_SYMBOL_GPL(save_stack_trace_tsk); 32