|  | /* | 
|  | *  Copyright (C) 1991, 1992  Linus Torvalds | 
|  | *  Copyright (C) 2000, 2001, 2002 Andi Kleen, SuSE Labs | 
|  | */ | 
|  |  | 
|  | #ifndef DUMPSTACK_H | 
|  | #define DUMPSTACK_H | 
|  |  | 
|  | #ifdef CONFIG_X86_32 | 
|  | #define STACKSLOTS_PER_LINE 8 | 
|  | #define get_bp(bp) asm("movl %%ebp, %0" : "=r" (bp) :) | 
|  | #else | 
|  | #define STACKSLOTS_PER_LINE 4 | 
|  | #define get_bp(bp) asm("movq %%rbp, %0" : "=r" (bp) :) | 
|  | #endif | 
|  |  | 
|  | extern unsigned long | 
|  | print_context_stack(struct thread_info *tinfo, | 
|  | unsigned long *stack, unsigned long bp, | 
|  | const struct stacktrace_ops *ops, void *data, | 
|  | unsigned long *end, int *graph); | 
|  |  | 
|  | extern void | 
|  | show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs, | 
|  | unsigned long *stack, unsigned long bp, char *log_lvl); | 
|  |  | 
|  | extern void | 
|  | show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs, | 
|  | unsigned long *sp, unsigned long bp, char *log_lvl); | 
|  |  | 
|  | extern unsigned int code_bytes; | 
|  |  | 
|  | /* The form of the top of the frame on the stack */ | 
|  | struct stack_frame { | 
|  | struct stack_frame *next_frame; | 
|  | unsigned long return_address; | 
|  | }; | 
|  | #endif |