diff options
Diffstat (limited to 'kernel/irq/handle.c')
-rw-r--r-- | kernel/irq/handle.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c index 4c6cdbaed661..42aa6f1a3f0f 100644 --- a/kernel/irq/handle.c +++ b/kernel/irq/handle.c | |||
@@ -27,7 +27,7 @@ | |||
27 | * Handles spurious and unhandled IRQ's. It also prints a debugmessage. | 27 | * Handles spurious and unhandled IRQ's. It also prints a debugmessage. |
28 | */ | 28 | */ |
29 | void fastcall | 29 | void fastcall |
30 | handle_bad_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) | 30 | handle_bad_irq(unsigned int irq, struct irq_desc *desc) |
31 | { | 31 | { |
32 | print_irq_desc(irq, desc); | 32 | print_irq_desc(irq, desc); |
33 | kstat_this_cpu.irqs[irq]++; | 33 | kstat_this_cpu.irqs[irq]++; |
@@ -115,7 +115,7 @@ struct irq_chip dummy_irq_chip = { | |||
115 | /* | 115 | /* |
116 | * Special, empty irq handler: | 116 | * Special, empty irq handler: |
117 | */ | 117 | */ |
118 | irqreturn_t no_action(int cpl, void *dev_id, struct pt_regs *regs) | 118 | irqreturn_t no_action(int cpl, void *dev_id) |
119 | { | 119 | { |
120 | return IRQ_NONE; | 120 | return IRQ_NONE; |
121 | } | 121 | } |
@@ -123,13 +123,11 @@ irqreturn_t no_action(int cpl, void *dev_id, struct pt_regs *regs) | |||
123 | /** | 123 | /** |
124 | * handle_IRQ_event - irq action chain handler | 124 | * handle_IRQ_event - irq action chain handler |
125 | * @irq: the interrupt number | 125 | * @irq: the interrupt number |
126 | * @regs: pointer to a register structure | ||
127 | * @action: the interrupt action chain for this irq | 126 | * @action: the interrupt action chain for this irq |
128 | * | 127 | * |
129 | * Handles the action chain of an irq event | 128 | * Handles the action chain of an irq event |
130 | */ | 129 | */ |
131 | irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs, | 130 | irqreturn_t handle_IRQ_event(unsigned int irq, struct irqaction *action) |
132 | struct irqaction *action) | ||
133 | { | 131 | { |
134 | irqreturn_t ret, retval = IRQ_NONE; | 132 | irqreturn_t ret, retval = IRQ_NONE; |
135 | unsigned int status = 0; | 133 | unsigned int status = 0; |
@@ -140,7 +138,7 @@ irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs, | |||
140 | local_irq_enable_in_hardirq(); | 138 | local_irq_enable_in_hardirq(); |
141 | 139 | ||
142 | do { | 140 | do { |
143 | ret = action->handler(irq, action->dev_id, regs); | 141 | ret = action->handler(irq, action->dev_id); |
144 | if (ret == IRQ_HANDLED) | 142 | if (ret == IRQ_HANDLED) |
145 | status |= action->flags; | 143 | status |= action->flags; |
146 | retval |= ret; | 144 | retval |= ret; |
@@ -158,7 +156,6 @@ irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs, | |||
158 | /** | 156 | /** |
159 | * __do_IRQ - original all in one highlevel IRQ handler | 157 | * __do_IRQ - original all in one highlevel IRQ handler |
160 | * @irq: the interrupt number | 158 | * @irq: the interrupt number |
161 | * @regs: pointer to a register structure | ||
162 | * | 159 | * |
163 | * __do_IRQ handles all normal device IRQ's (the special | 160 | * __do_IRQ handles all normal device IRQ's (the special |
164 | * SMP cross-CPU interrupts have their own specific | 161 | * SMP cross-CPU interrupts have their own specific |
@@ -167,7 +164,7 @@ irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs, | |||
167 | * This is the original x86 implementation which is used for every | 164 | * This is the original x86 implementation which is used for every |
168 | * interrupt type. | 165 | * interrupt type. |
169 | */ | 166 | */ |
170 | fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs) | 167 | fastcall unsigned int __do_IRQ(unsigned int irq) |
171 | { | 168 | { |
172 | struct irq_desc *desc = irq_desc + irq; | 169 | struct irq_desc *desc = irq_desc + irq; |
173 | struct irqaction *action; | 170 | struct irqaction *action; |
@@ -182,7 +179,7 @@ fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs) | |||
182 | */ | 179 | */ |
183 | if (desc->chip->ack) | 180 | if (desc->chip->ack) |
184 | desc->chip->ack(irq); | 181 | desc->chip->ack(irq); |
185 | action_ret = handle_IRQ_event(irq, regs, desc->action); | 182 | action_ret = handle_IRQ_event(irq, desc->action); |
186 | desc->chip->end(irq); | 183 | desc->chip->end(irq); |
187 | return 1; | 184 | return 1; |
188 | } | 185 | } |
@@ -233,11 +230,11 @@ fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs) | |||
233 | 230 | ||
234 | spin_unlock(&desc->lock); | 231 | spin_unlock(&desc->lock); |
235 | 232 | ||
236 | action_ret = handle_IRQ_event(irq, regs, action); | 233 | action_ret = handle_IRQ_event(irq, action); |
237 | 234 | ||
238 | spin_lock(&desc->lock); | 235 | spin_lock(&desc->lock); |
239 | if (!noirqdebug) | 236 | if (!noirqdebug) |
240 | note_interrupt(irq, desc, action_ret, regs); | 237 | note_interrupt(irq, desc, action_ret); |
241 | if (likely(!(desc->status & IRQ_PENDING))) | 238 | if (likely(!(desc->status & IRQ_PENDING))) |
242 | break; | 239 | break; |
243 | desc->status &= ~IRQ_PENDING; | 240 | desc->status &= ~IRQ_PENDING; |