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