1 #ifndef _ASMARM_TRAP_H 2 #define _ASMARM_TRAP_H 3 4 #include <linux/list.h> 5 6 struct undef_hook { 7 struct list_head node; 8 u32 instr_mask; 9 u32 instr_val; 10 u32 cpsr_mask; 11 u32 cpsr_val; 12 int (*fn)(struct pt_regs *regs, unsigned int instr); 13 }; 14 15 void register_undef_hook(struct undef_hook *hook); 16 void unregister_undef_hook(struct undef_hook *hook); 17 18 #ifdef CONFIG_FUNCTION_GRAPH_TRACER __in_irqentry_text(unsigned long ptr)19static inline int __in_irqentry_text(unsigned long ptr) 20 { 21 extern char __irqentry_text_start[]; 22 extern char __irqentry_text_end[]; 23 24 return ptr >= (unsigned long)&__irqentry_text_start && 25 ptr < (unsigned long)&__irqentry_text_end; 26 } 27 #else __in_irqentry_text(unsigned long ptr)28static inline int __in_irqentry_text(unsigned long ptr) 29 { 30 return 0; 31 } 32 #endif 33 in_exception_text(unsigned long ptr)34static inline int in_exception_text(unsigned long ptr) 35 { 36 extern char __exception_text_start[]; 37 extern char __exception_text_end[]; 38 int in; 39 40 in = ptr >= (unsigned long)&__exception_text_start && 41 ptr < (unsigned long)&__exception_text_end; 42 43 return in ? : __in_irqentry_text(ptr); 44 } 45 46 extern void __init early_trap_init(void); 47 extern void dump_backtrace_entry(unsigned long where, unsigned long from, unsigned long frame); 48 extern void ptrace_break(struct task_struct *tsk, struct pt_regs *regs); 49 50 extern void *vectors_page; 51 52 #endif 53