aboutsummaryrefslogtreecommitdiffstats
path: root/arch/microblaze/kernel/irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/microblaze/kernel/irq.c')
-rw-r--r--arch/microblaze/kernel/irq.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/microblaze/kernel/irq.c b/arch/microblaze/kernel/irq.c
index e5d63a89b9b2..bbebcae72c02 100644
--- a/arch/microblaze/kernel/irq.c
+++ b/arch/microblaze/kernel/irq.c
@@ -33,11 +33,12 @@ void __irq_entry do_IRQ(struct pt_regs *regs)
33 irq_enter(); 33 irq_enter();
34 irq = get_irq(regs); 34 irq = get_irq(regs);
35next_irq: 35next_irq:
36 BUG_ON(irq == -1U); 36 BUG_ON(!irq);
37 generic_handle_irq(irq); 37 /* Substract 1 because of get_irq */
38 generic_handle_irq(irq + IRQ_OFFSET - NO_IRQ_OFFSET);
38 39
39 irq = get_irq(regs); 40 irq = get_irq(regs);
40 if (irq != -1U) { 41 if (irq) {
41 pr_debug("next irq: %d\n", irq); 42 pr_debug("next irq: %d\n", irq);
42 ++concurrent_irq; 43 ++concurrent_irq;
43 goto next_irq; 44 goto next_irq;
@@ -52,13 +53,13 @@ next_irq:
52 intc without any cascades or any connection that's why mapping is 1:1 */ 53 intc without any cascades or any connection that's why mapping is 1:1 */
53unsigned int irq_create_mapping(struct irq_host *host, irq_hw_number_t hwirq) 54unsigned int irq_create_mapping(struct irq_host *host, irq_hw_number_t hwirq)
54{ 55{
55 return hwirq; 56 return hwirq + IRQ_OFFSET;
56} 57}
57EXPORT_SYMBOL_GPL(irq_create_mapping); 58EXPORT_SYMBOL_GPL(irq_create_mapping);
58 59
59unsigned int irq_create_of_mapping(struct device_node *controller, 60unsigned int irq_create_of_mapping(struct device_node *controller,
60 const u32 *intspec, unsigned int intsize) 61 const u32 *intspec, unsigned int intsize)
61{ 62{
62 return intspec[0]; 63 return intspec[0] + IRQ_OFFSET;
63} 64}
64EXPORT_SYMBOL_GPL(irq_create_of_mapping); 65EXPORT_SYMBOL_GPL(irq_create_of_mapping);