diff options
author | Rabin Vincent <rabin@rab.in> | 2010-10-07 20:51:58 +0530 |
---|---|---|
committer | Rabin Vincent <rabin@rab.in> | 2010-11-19 21:43:26 +0530 |
commit | 61b5cb1c3bff8875d2fd289c7b6ac344f95261fa (patch) | |
tree | 05a10694778dc70c5eb6114a1ed8403745a2cfcd /arch/arm/include/asm/traps.h | |
parent | ec763f0de879fa1a64b7641098271107f5e32c67 (diff) | |
download | op-kernel-dev-61b5cb1c3bff8875d2fd289c7b6ac344f95261fa.zip op-kernel-dev-61b5cb1c3bff8875d2fd289c7b6ac344f95261fa.tar.gz |
ARM: place C irq handlers in IRQ_ENTRY for ftrace
When FUNCTION_GRAPH_TRACER is enabled, place do_IRQ() and friends in the
IRQ_ENTRY section so that the irq-related features of the function graph
tracer work.
Signed-off-by: Rabin Vincent <rabin@rab.in>
Diffstat (limited to 'arch/arm/include/asm/traps.h')
-rw-r--r-- | arch/arm/include/asm/traps.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/arch/arm/include/asm/traps.h b/arch/arm/include/asm/traps.h index 491960b..124475a 100644 --- a/arch/arm/include/asm/traps.h +++ b/arch/arm/include/asm/traps.h @@ -15,13 +15,32 @@ struct undef_hook { void register_undef_hook(struct undef_hook *hook); void unregister_undef_hook(struct undef_hook *hook); +#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 + static inline int in_exception_text(unsigned long ptr) { extern char __exception_text_start[]; extern char __exception_text_end[]; + int in; + + in = ptr >= (unsigned long)&__exception_text_start && + ptr < (unsigned long)&__exception_text_end; - return ptr >= (unsigned long)&__exception_text_start && - ptr < (unsigned long)&__exception_text_end; + return in ? : __in_irqentry_text(ptr); } extern void __init early_trap_init(void); |