aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k/mac/oss.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/m68k/mac/oss.c')
-rw-r--r--arch/m68k/mac/oss.c8
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