diff options
Diffstat (limited to 'arch/m68k/mac/oss.c')
-rw-r--r-- | arch/m68k/mac/oss.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/m68k/mac/oss.c b/arch/m68k/mac/oss.c index 603d5cb72891..6399883ae742 100644 --- a/arch/m68k/mac/oss.c +++ b/arch/m68k/mac/oss.c | |||
@@ -143,14 +143,18 @@ irqreturn_t oss_nubus_irq(int irq, void *dev_id) | |||
143 | #endif | 143 | #endif |
144 | /* There are only six slots on the OSS, not seven */ | 144 | /* There are only six slots on the OSS, not seven */ |
145 | 145 | ||
146 | for (i = 0, irq_bit = 1 ; i < 6 ; i++, irq_bit <<= 1) { | 146 | i = 6; |
147 | irq_bit = 0x40; | ||
148 | do { | ||
149 | --i; | ||
150 | irq_bit >>= 1; | ||
147 | if (events & irq_bit) { | 151 | if (events & irq_bit) { |
148 | oss->irq_level[i] = OSS_IRQLEV_DISABLED; | 152 | oss->irq_level[i] = OSS_IRQLEV_DISABLED; |
149 | oss->irq_pending &= ~irq_bit; | 153 | oss->irq_pending &= ~irq_bit; |
150 | m68k_handle_int(NUBUS_SOURCE_BASE + i); | 154 | m68k_handle_int(NUBUS_SOURCE_BASE + i); |
151 | oss->irq_level[i] = OSS_IRQLEV_NUBUS; | 155 | oss->irq_level[i] = OSS_IRQLEV_NUBUS; |
152 | } | 156 | } |
153 | } | 157 | } while(events & (irq_bit - 1)); |
154 | return IRQ_HANDLED; | 158 | return IRQ_HANDLED; |
155 | } | 159 | } |
156 | 160 | ||