diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/microblaze/kernel/intc.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/microblaze/kernel/intc.c b/arch/microblaze/kernel/intc.c index da33e45deba0..1293098ff70d 100644 --- a/arch/microblaze/kernel/intc.c +++ b/arch/microblaze/kernel/intc.c | |||
@@ -99,7 +99,7 @@ unsigned int get_irq(struct pt_regs *regs) | |||
99 | 99 | ||
100 | void __init init_IRQ(void) | 100 | void __init init_IRQ(void) |
101 | { | 101 | { |
102 | u32 i, intr_type; | 102 | u32 i, intr_mask; |
103 | struct device_node *intc = NULL; | 103 | struct device_node *intc = NULL; |
104 | #ifdef CONFIG_SELFMOD_INTC | 104 | #ifdef CONFIG_SELFMOD_INTC |
105 | unsigned int intc_baseaddr = 0; | 105 | unsigned int intc_baseaddr = 0; |
@@ -122,10 +122,9 @@ void __init init_IRQ(void) | |||
122 | nr_irq = be32_to_cpup(of_get_property(intc, | 122 | nr_irq = be32_to_cpup(of_get_property(intc, |
123 | "xlnx,num-intr-inputs", NULL)); | 123 | "xlnx,num-intr-inputs", NULL)); |
124 | 124 | ||
125 | intr_type = | 125 | intr_mask = |
126 | be32_to_cpup(of_get_property(intc, | 126 | be32_to_cpup(of_get_property(intc, "xlnx,kind-of-intr", NULL)); |
127 | "xlnx,kind-of-intr", NULL)); | 127 | if (intr_mask > (u32)((1ULL << nr_irq) - 1)) |
128 | if (intr_type > (u32)((1ULL << nr_irq) - 1)) | ||
129 | printk(KERN_INFO " ERROR: Mismatch in kind-of-intr param\n"); | 128 | printk(KERN_INFO " ERROR: Mismatch in kind-of-intr param\n"); |
130 | 129 | ||
131 | #ifdef CONFIG_SELFMOD_INTC | 130 | #ifdef CONFIG_SELFMOD_INTC |
@@ -147,7 +146,7 @@ void __init init_IRQ(void) | |||
147 | out_be32(intc_baseaddr + MER, MER_HIE | MER_ME); | 146 | out_be32(intc_baseaddr + MER, MER_HIE | MER_ME); |
148 | 147 | ||
149 | for (i = 0; i < nr_irq; ++i) { | 148 | for (i = 0; i < nr_irq; ++i) { |
150 | if (intr_type & (0x00000001 << i)) { | 149 | if (intr_mask & (0x00000001 << i)) { |
151 | irq_set_chip_and_handler_name(i, &intc_dev, | 150 | irq_set_chip_and_handler_name(i, &intc_dev, |
152 | handle_edge_irq, "edge"); | 151 | handle_edge_irq, "edge"); |
153 | irq_clear_status_flags(i, IRQ_LEVEL); | 152 | irq_clear_status_flags(i, IRQ_LEVEL); |