From 66c5a5adb5d9cdd851b544ea4af6a07d871b068e Mon Sep 17 00:00:00 2001 From: Catalin Marinas Date: Mon, 14 Jan 2013 12:39:31 +0000 Subject: [PATCH] --- yaml --- r: 367245 b: refs/heads/master c: e851b58cb77b47a5c14267723bd6b76655d21840 h: refs/heads/master i: 367243: 463f60760a22c0c60f6adcf27146e2f4882de2fb v: v3 --- [refs] | 2 +- trunk/arch/arm64/include/asm/exception.h | 1 + trunk/arch/arm64/include/asm/hardirq.h | 5 +++++ trunk/arch/arm64/include/asm/irq.h | 1 + trunk/arch/arm64/kernel/irq.c | 19 +++++++++---------- 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index 07557f197a7c..e2f2ab75acd9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a9a193ffe51d036a7c2d30d7fbdb66498c688237 +refs/heads/master: e851b58cb77b47a5c14267723bd6b76655d21840 diff --git a/trunk/arch/arm64/include/asm/exception.h b/trunk/arch/arm64/include/asm/exception.h index ac63519b7b90..0303705fcad6 100644 --- a/trunk/arch/arm64/include/asm/exception.h +++ b/trunk/arch/arm64/include/asm/exception.h @@ -19,5 +19,6 @@ #define __ASM_EXCEPTION_H #define __exception __attribute__((section(".exception.text"))) +#define __exception_irq_entry __exception #endif /* __ASM_EXCEPTION_H */ diff --git a/trunk/arch/arm64/include/asm/hardirq.h b/trunk/arch/arm64/include/asm/hardirq.h index 507546353d62..990c051e7829 100644 --- a/trunk/arch/arm64/include/asm/hardirq.h +++ b/trunk/arch/arm64/include/asm/hardirq.h @@ -49,4 +49,9 @@ static inline void ack_bad_irq(unsigned int irq) extern void handle_IRQ(unsigned int, struct pt_regs *); +/* + * No arch-specific IRQ flags. + */ +#define set_irq_flags(irq, flags) + #endif /* __ASM_HARDIRQ_H */ diff --git a/trunk/arch/arm64/include/asm/irq.h b/trunk/arch/arm64/include/asm/irq.h index a4e1cad3202a..0332fc077f6e 100644 --- a/trunk/arch/arm64/include/asm/irq.h +++ b/trunk/arch/arm64/include/asm/irq.h @@ -4,5 +4,6 @@ #include extern void (*handle_arch_irq)(struct pt_regs *); +extern void set_handle_irq(void (*handle_irq)(struct pt_regs *)); #endif diff --git a/trunk/arch/arm64/kernel/irq.c b/trunk/arch/arm64/kernel/irq.c index 0373c6609eaf..ecb3354292ed 100644 --- a/trunk/arch/arm64/kernel/irq.c +++ b/trunk/arch/arm64/kernel/irq.c @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include @@ -67,18 +67,17 @@ void handle_IRQ(unsigned int irq, struct pt_regs *regs) set_irq_regs(old_regs); } -/* - * Interrupt controllers supported by the kernel. - */ -static const struct of_device_id intctrl_of_match[] __initconst = { - /* IRQ controllers { .compatible, .data } info to go here */ - {} -}; +void __init set_handle_irq(void (*handle_irq)(struct pt_regs *)) +{ + if (handle_arch_irq) + return; + + handle_arch_irq = handle_irq; +} void __init init_IRQ(void) { - of_irq_init(intctrl_of_match); - + irqchip_init(); if (!handle_arch_irq) panic("No interrupt controller found."); }