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