diff options
Diffstat (limited to 'arch/microblaze/kernel/irq.c')
-rw-r--r-- | arch/microblaze/kernel/irq.c | 11 |
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); |
35 | next_irq: | 35 | next_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 */ |
53 | unsigned int irq_create_mapping(struct irq_host *host, irq_hw_number_t hwirq) | 54 | unsigned 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 | } |
57 | EXPORT_SYMBOL_GPL(irq_create_mapping); | 58 | EXPORT_SYMBOL_GPL(irq_create_mapping); |
58 | 59 | ||
59 | unsigned int irq_create_of_mapping(struct device_node *controller, | 60 | unsigned 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 | } |
64 | EXPORT_SYMBOL_GPL(irq_create_of_mapping); | 65 | EXPORT_SYMBOL_GPL(irq_create_of_mapping); |