diff options
Diffstat (limited to 'arch/sparc64/kernel/irq.c')
-rw-r--r-- | arch/sparc64/kernel/irq.c | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index d64b1ea848de..c3d068c7a412 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
@@ -372,14 +372,14 @@ static void run_pre_handler(unsigned int virt_irq) | |||
372 | } | 372 | } |
373 | } | 373 | } |
374 | 374 | ||
375 | static struct hw_interrupt_type sun4u_irq = { | 375 | static struct irq_chip sun4u_irq = { |
376 | .typename = "sun4u", | 376 | .typename = "sun4u", |
377 | .enable = sun4u_irq_enable, | 377 | .enable = sun4u_irq_enable, |
378 | .disable = sun4u_irq_disable, | 378 | .disable = sun4u_irq_disable, |
379 | .end = sun4u_irq_end, | 379 | .end = sun4u_irq_end, |
380 | }; | 380 | }; |
381 | 381 | ||
382 | static struct hw_interrupt_type sun4u_irq_ack = { | 382 | static struct irq_chip sun4u_irq_ack = { |
383 | .typename = "sun4u+ack", | 383 | .typename = "sun4u+ack", |
384 | .enable = sun4u_irq_enable, | 384 | .enable = sun4u_irq_enable, |
385 | .disable = sun4u_irq_disable, | 385 | .disable = sun4u_irq_disable, |
@@ -387,14 +387,14 @@ static struct hw_interrupt_type sun4u_irq_ack = { | |||
387 | .end = sun4u_irq_end, | 387 | .end = sun4u_irq_end, |
388 | }; | 388 | }; |
389 | 389 | ||
390 | static struct hw_interrupt_type sun4v_irq = { | 390 | static struct irq_chip sun4v_irq = { |
391 | .typename = "sun4v", | 391 | .typename = "sun4v", |
392 | .enable = sun4v_irq_enable, | 392 | .enable = sun4v_irq_enable, |
393 | .disable = sun4v_irq_disable, | 393 | .disable = sun4v_irq_disable, |
394 | .end = sun4v_irq_end, | 394 | .end = sun4v_irq_end, |
395 | }; | 395 | }; |
396 | 396 | ||
397 | static struct hw_interrupt_type sun4v_irq_ack = { | 397 | static struct irq_chip sun4v_irq_ack = { |
398 | .typename = "sun4v+ack", | 398 | .typename = "sun4v+ack", |
399 | .enable = sun4v_irq_enable, | 399 | .enable = sun4v_irq_enable, |
400 | .disable = sun4v_irq_disable, | 400 | .disable = sun4v_irq_disable, |
@@ -493,22 +493,6 @@ out: | |||
493 | return bucket->virt_irq; | 493 | return bucket->virt_irq; |
494 | } | 494 | } |
495 | 495 | ||
496 | void hw_resend_irq(struct hw_interrupt_type *handler, unsigned int virt_irq) | ||
497 | { | ||
498 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); | ||
499 | unsigned long pstate; | ||
500 | unsigned int *ent; | ||
501 | |||
502 | __asm__ __volatile__("rdpr %%pstate, %0" : "=r" (pstate)); | ||
503 | __asm__ __volatile__("wrpr %0, %1, %%pstate" | ||
504 | : : "r" (pstate), "i" (PSTATE_IE)); | ||
505 | ent = irq_work(smp_processor_id()); | ||
506 | bucket->irq_chain = *ent; | ||
507 | *ent = __irq(bucket); | ||
508 | set_softint(1 << PIL_DEVICE_IRQ); | ||
509 | __asm__ __volatile__("wrpr %0, 0x0, %%pstate" : : "r" (pstate)); | ||
510 | } | ||
511 | |||
512 | void ack_bad_irq(unsigned int virt_irq) | 496 | void ack_bad_irq(unsigned int virt_irq) |
513 | { | 497 | { |
514 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); | 498 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); |