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