diff options
Diffstat (limited to 'kernel/irq/chip.c')
-rw-r--r-- | kernel/irq/chip.c | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 53e9dce6c657..11c99697acfe 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
@@ -249,7 +249,6 @@ static inline void mask_ack_irq(struct irq_desc *desc, int irq) | |||
249 | * handle_simple_irq - Simple and software-decoded IRQs. | 249 | * handle_simple_irq - Simple and software-decoded IRQs. |
250 | * @irq: the interrupt number | 250 | * @irq: the interrupt number |
251 | * @desc: the interrupt description structure for this irq | 251 | * @desc: the interrupt description structure for this irq |
252 | * @regs: pointer to a register structure | ||
253 | * | 252 | * |
254 | * Simple interrupts are either sent from a demultiplexing interrupt | 253 | * Simple interrupts are either sent from a demultiplexing interrupt |
255 | * handler or come from hardware, where no interrupt hardware control | 254 | * handler or come from hardware, where no interrupt hardware control |
@@ -259,7 +258,7 @@ static inline void mask_ack_irq(struct irq_desc *desc, int irq) | |||
259 | * unmask issues if necessary. | 258 | * unmask issues if necessary. |
260 | */ | 259 | */ |
261 | void fastcall | 260 | void fastcall |
262 | handle_simple_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) | 261 | handle_simple_irq(unsigned int irq, struct irq_desc *desc) |
263 | { | 262 | { |
264 | struct irqaction *action; | 263 | struct irqaction *action; |
265 | irqreturn_t action_ret; | 264 | irqreturn_t action_ret; |
@@ -279,9 +278,9 @@ handle_simple_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) | |||
279 | desc->status |= IRQ_INPROGRESS; | 278 | desc->status |= IRQ_INPROGRESS; |
280 | spin_unlock(&desc->lock); | 279 | spin_unlock(&desc->lock); |
281 | 280 | ||
282 | action_ret = handle_IRQ_event(irq, regs, action); | 281 | action_ret = handle_IRQ_event(irq, action); |
283 | if (!noirqdebug) | 282 | if (!noirqdebug) |
284 | note_interrupt(irq, desc, action_ret, regs); | 283 | note_interrupt(irq, desc, action_ret); |
285 | 284 | ||
286 | spin_lock(&desc->lock); | 285 | spin_lock(&desc->lock); |
287 | desc->status &= ~IRQ_INPROGRESS; | 286 | desc->status &= ~IRQ_INPROGRESS; |
@@ -293,7 +292,6 @@ out_unlock: | |||
293 | * handle_level_irq - Level type irq handler | 292 | * handle_level_irq - Level type irq handler |
294 | * @irq: the interrupt number | 293 | * @irq: the interrupt number |
295 | * @desc: the interrupt description structure for this irq | 294 | * @desc: the interrupt description structure for this irq |
296 | * @regs: pointer to a register structure | ||
297 | * | 295 | * |
298 | * Level type interrupts are active as long as the hardware line has | 296 | * Level type interrupts are active as long as the hardware line has |
299 | * the active level. This may require to mask the interrupt and unmask | 297 | * the active level. This may require to mask the interrupt and unmask |
@@ -301,7 +299,7 @@ out_unlock: | |||
301 | * interrupt line is back to inactive. | 299 | * interrupt line is back to inactive. |
302 | */ | 300 | */ |
303 | void fastcall | 301 | void fastcall |
304 | handle_level_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) | 302 | handle_level_irq(unsigned int irq, struct irq_desc *desc) |
305 | { | 303 | { |
306 | unsigned int cpu = smp_processor_id(); | 304 | unsigned int cpu = smp_processor_id(); |
307 | struct irqaction *action; | 305 | struct irqaction *action; |
@@ -329,9 +327,9 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) | |||
329 | desc->status &= ~IRQ_PENDING; | 327 | desc->status &= ~IRQ_PENDING; |
330 | spin_unlock(&desc->lock); | 328 | spin_unlock(&desc->lock); |
331 | 329 | ||
332 | action_ret = handle_IRQ_event(irq, regs, action); | 330 | action_ret = handle_IRQ_event(irq, action); |
333 | if (!noirqdebug) | 331 | if (!noirqdebug) |
334 | note_interrupt(irq, desc, action_ret, regs); | 332 | note_interrupt(irq, desc, action_ret); |
335 | 333 | ||
336 | spin_lock(&desc->lock); | 334 | spin_lock(&desc->lock); |
337 | desc->status &= ~IRQ_INPROGRESS; | 335 | desc->status &= ~IRQ_INPROGRESS; |
@@ -345,7 +343,6 @@ out_unlock: | |||
345 | * handle_fasteoi_irq - irq handler for transparent controllers | 343 | * handle_fasteoi_irq - irq handler for transparent controllers |
346 | * @irq: the interrupt number | 344 | * @irq: the interrupt number |
347 | * @desc: the interrupt description structure for this irq | 345 | * @desc: the interrupt description structure for this irq |
348 | * @regs: pointer to a register structure | ||
349 | * | 346 | * |
350 | * Only a single callback will be issued to the chip: an ->eoi() | 347 | * Only a single callback will be issued to the chip: an ->eoi() |
351 | * call when the interrupt has been serviced. This enables support | 348 | * call when the interrupt has been serviced. This enables support |
@@ -353,8 +350,7 @@ out_unlock: | |||
353 | * details in hardware, transparently. | 350 | * details in hardware, transparently. |
354 | */ | 351 | */ |
355 | void fastcall | 352 | void fastcall |
356 | handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc, | 353 | handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc) |
357 | struct pt_regs *regs) | ||
358 | { | 354 | { |
359 | unsigned int cpu = smp_processor_id(); | 355 | unsigned int cpu = smp_processor_id(); |
360 | struct irqaction *action; | 356 | struct irqaction *action; |
@@ -382,9 +378,9 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc, | |||
382 | desc->status &= ~IRQ_PENDING; | 378 | desc->status &= ~IRQ_PENDING; |
383 | spin_unlock(&desc->lock); | 379 | spin_unlock(&desc->lock); |
384 | 380 | ||
385 | action_ret = handle_IRQ_event(irq, regs, action); | 381 | action_ret = handle_IRQ_event(irq, action); |
386 | if (!noirqdebug) | 382 | if (!noirqdebug) |
387 | note_interrupt(irq, desc, action_ret, regs); | 383 | note_interrupt(irq, desc, action_ret); |
388 | 384 | ||
389 | spin_lock(&desc->lock); | 385 | spin_lock(&desc->lock); |
390 | desc->status &= ~IRQ_INPROGRESS; | 386 | desc->status &= ~IRQ_INPROGRESS; |
@@ -398,7 +394,6 @@ out: | |||
398 | * handle_edge_irq - edge type IRQ handler | 394 | * handle_edge_irq - edge type IRQ handler |
399 | * @irq: the interrupt number | 395 | * @irq: the interrupt number |
400 | * @desc: the interrupt description structure for this irq | 396 | * @desc: the interrupt description structure for this irq |
401 | * @regs: pointer to a register structure | ||
402 | * | 397 | * |
403 | * Interrupt occures on the falling and/or rising edge of a hardware | 398 | * Interrupt occures on the falling and/or rising edge of a hardware |
404 | * signal. The occurence is latched into the irq controller hardware | 399 | * signal. The occurence is latched into the irq controller hardware |
@@ -412,7 +407,7 @@ out: | |||
412 | * loop is left. | 407 | * loop is left. |
413 | */ | 408 | */ |
414 | void fastcall | 409 | void fastcall |
415 | handle_edge_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) | 410 | handle_edge_irq(unsigned int irq, struct irq_desc *desc) |
416 | { | 411 | { |
417 | const unsigned int cpu = smp_processor_id(); | 412 | const unsigned int cpu = smp_processor_id(); |
418 | 413 | ||
@@ -463,9 +458,9 @@ handle_edge_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) | |||
463 | 458 | ||
464 | desc->status &= ~IRQ_PENDING; | 459 | desc->status &= ~IRQ_PENDING; |
465 | spin_unlock(&desc->lock); | 460 | spin_unlock(&desc->lock); |
466 | action_ret = handle_IRQ_event(irq, regs, action); | 461 | action_ret = handle_IRQ_event(irq, action); |
467 | if (!noirqdebug) | 462 | if (!noirqdebug) |
468 | note_interrupt(irq, desc, action_ret, regs); | 463 | note_interrupt(irq, desc, action_ret); |
469 | spin_lock(&desc->lock); | 464 | spin_lock(&desc->lock); |
470 | 465 | ||
471 | } while ((desc->status & (IRQ_PENDING | IRQ_DISABLED)) == IRQ_PENDING); | 466 | } while ((desc->status & (IRQ_PENDING | IRQ_DISABLED)) == IRQ_PENDING); |
@@ -480,12 +475,11 @@ out_unlock: | |||
480 | * handle_percpu_IRQ - Per CPU local irq handler | 475 | * handle_percpu_IRQ - Per CPU local irq handler |
481 | * @irq: the interrupt number | 476 | * @irq: the interrupt number |
482 | * @desc: the interrupt description structure for this irq | 477 | * @desc: the interrupt description structure for this irq |
483 | * @regs: pointer to a register structure | ||
484 | * | 478 | * |
485 | * Per CPU interrupts on SMP machines without locking requirements | 479 | * Per CPU interrupts on SMP machines without locking requirements |
486 | */ | 480 | */ |
487 | void fastcall | 481 | void fastcall |
488 | handle_percpu_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) | 482 | handle_percpu_irq(unsigned int irq, struct irq_desc *desc) |
489 | { | 483 | { |
490 | irqreturn_t action_ret; | 484 | irqreturn_t action_ret; |
491 | 485 | ||
@@ -494,9 +488,9 @@ handle_percpu_irq(unsigned int irq, struct irq_desc *desc, struct pt_regs *regs) | |||
494 | if (desc->chip->ack) | 488 | if (desc->chip->ack) |
495 | desc->chip->ack(irq); | 489 | desc->chip->ack(irq); |
496 | 490 | ||
497 | action_ret = handle_IRQ_event(irq, regs, desc->action); | 491 | action_ret = handle_IRQ_event(irq, desc->action); |
498 | if (!noirqdebug) | 492 | if (!noirqdebug) |
499 | note_interrupt(irq, desc, action_ret, regs); | 493 | note_interrupt(irq, desc, action_ret); |
500 | 494 | ||
501 | if (desc->chip->eoi) | 495 | if (desc->chip->eoi) |
502 | desc->chip->eoi(irq); | 496 | desc->chip->eoi(irq); |