| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #ifndef _ASMARM_TRAP_H
 | 
					
						
							|  |  |  | #define _ASMARM_TRAP_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/list.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-22 16:47:26 +01:00
										 |  |  | struct pt_regs; | 
					
						
							|  |  |  | struct task_struct; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | struct undef_hook { | 
					
						
							|  |  |  | 	struct list_head node; | 
					
						
							|  |  |  | 	u32 instr_mask; | 
					
						
							|  |  |  | 	u32 instr_val; | 
					
						
							|  |  |  | 	u32 cpsr_mask; | 
					
						
							|  |  |  | 	u32 cpsr_val; | 
					
						
							|  |  |  | 	int (*fn)(struct pt_regs *regs, unsigned int instr); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void register_undef_hook(struct undef_hook *hook); | 
					
						
							|  |  |  | void unregister_undef_hook(struct undef_hook *hook); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-07 20:51:58 +05:30
										 |  |  | #ifdef CONFIG_FUNCTION_GRAPH_TRACER
 | 
					
						
							|  |  |  | static inline int __in_irqentry_text(unsigned long ptr) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	extern char __irqentry_text_start[]; | 
					
						
							|  |  |  | 	extern char __irqentry_text_end[]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return ptr >= (unsigned long)&__irqentry_text_start && | 
					
						
							|  |  |  | 	       ptr < (unsigned long)&__irqentry_text_end; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | static inline int __in_irqentry_text(unsigned long ptr) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	return 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-03 15:27:56 -05:00
										 |  |  | static inline int in_exception_text(unsigned long ptr) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	extern char __exception_text_start[]; | 
					
						
							|  |  |  | 	extern char __exception_text_end[]; | 
					
						
							| 
									
										
										
										
											2010-10-07 20:51:58 +05:30
										 |  |  | 	int in; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	in = ptr >= (unsigned long)&__exception_text_start && | 
					
						
							|  |  |  | 	     ptr < (unsigned long)&__exception_text_end; | 
					
						
							| 
									
										
										
										
											2007-12-03 15:27:56 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-07 20:51:58 +05:30
										 |  |  | 	return in ? : __in_irqentry_text(ptr); | 
					
						
							| 
									
										
										
										
											2007-12-03 15:27:56 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-18 15:32:49 +00:00
										 |  |  | extern void __init early_trap_init(void *); | 
					
						
							| 
									
										
										
										
											2009-02-11 13:06:53 +01:00
										 |  |  | extern void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long frame); | 
					
						
							| 
									
										
										
										
											2011-02-14 14:31:09 +01:00
										 |  |  | extern void ptrace_break(struct task_struct *tsk, struct pt_regs *regs); | 
					
						
							| 
									
										
										
										
											2008-02-20 13:33:40 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-13 16:03:21 +01:00
										 |  |  | extern void *vectors_page; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #endif
 |