| 
									
										
										
										
											2009-02-11 13:07:53 +01:00
										 |  |  | #ifndef __ASM_STACKTRACE_H
 | 
					
						
							|  |  |  | #define __ASM_STACKTRACE_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-03 19:48:10 +01:00
										 |  |  | #include <asm/ptrace.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-11 13:07:53 +01:00
										 |  |  | struct stackframe { | 
					
						
							| 
									
										
										
										
											2014-06-03 19:48:10 +01:00
										 |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * FP member should hold R7 when CONFIG_THUMB2_KERNEL is enabled | 
					
						
							|  |  |  | 	 * and R11 otherwise. | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2009-02-11 13:07:53 +01:00
										 |  |  | 	unsigned long fp; | 
					
						
							|  |  |  | 	unsigned long sp; | 
					
						
							|  |  |  | 	unsigned long lr; | 
					
						
							|  |  |  | 	unsigned long pc; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-03 19:48:10 +01:00
										 |  |  | static __always_inline | 
					
						
							|  |  |  | void arm_get_current_stackframe(struct pt_regs *regs, struct stackframe *frame) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 		frame->fp = frame_pointer(regs); | 
					
						
							|  |  |  | 		frame->sp = regs->ARM_sp; | 
					
						
							|  |  |  | 		frame->lr = regs->ARM_lr; | 
					
						
							|  |  |  | 		frame->pc = regs->ARM_pc; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-11 13:07:53 +01:00
										 |  |  | extern int unwind_frame(struct stackframe *frame); | 
					
						
							|  |  |  | extern void walk_stackframe(struct stackframe *frame, | 
					
						
							|  |  |  | 			    int (*fn)(struct stackframe *, void *), void *data); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif	/* __ASM_STACKTRACE_H */
 |