diff options
Diffstat (limited to 'arch/sparc64/kernel/entry.S')
| -rw-r--r-- | arch/sparc64/kernel/entry.S | 21 |
1 files changed, 3 insertions, 18 deletions
diff --git a/arch/sparc64/kernel/entry.S b/arch/sparc64/kernel/entry.S index eee516a71c14..d3973d8a7195 100644 --- a/arch/sparc64/kernel/entry.S +++ b/arch/sparc64/kernel/entry.S | |||
| @@ -553,13 +553,11 @@ do_ivec: | |||
| 553 | sllx %g3, 5, %g3 | 553 | sllx %g3, 5, %g3 |
| 554 | or %g2, %lo(ivector_table), %g2 | 554 | or %g2, %lo(ivector_table), %g2 |
| 555 | add %g2, %g3, %g3 | 555 | add %g2, %g3, %g3 |
| 556 | ldx [%g3 + 0x08], %g2 /* irq_info */ | ||
| 557 | ldub [%g3 + 0x04], %g4 /* pil */ | 556 | ldub [%g3 + 0x04], %g4 /* pil */ |
| 558 | brz,pn %g2, do_ivec_spurious | 557 | mov 1, %g2 |
| 559 | mov 1, %g2 | ||
| 560 | |||
| 561 | sllx %g2, %g4, %g2 | 558 | sllx %g2, %g4, %g2 |
| 562 | sllx %g4, 2, %g4 | 559 | sllx %g4, 2, %g4 |
| 560 | |||
| 563 | lduw [%g6 + %g4], %g5 /* g5 = irq_work(cpu, pil) */ | 561 | lduw [%g6 + %g4], %g5 /* g5 = irq_work(cpu, pil) */ |
| 564 | stw %g5, [%g3 + 0x00] /* bucket->irq_chain = g5 */ | 562 | stw %g5, [%g3 + 0x00] /* bucket->irq_chain = g5 */ |
| 565 | stw %g3, [%g6 + %g4] /* irq_work(cpu, pil) = bucket */ | 563 | stw %g3, [%g6 + %g4] /* irq_work(cpu, pil) = bucket */ |
| @@ -567,9 +565,9 @@ do_ivec: | |||
| 567 | retry | 565 | retry |
| 568 | do_ivec_xcall: | 566 | do_ivec_xcall: |
| 569 | mov 0x50, %g1 | 567 | mov 0x50, %g1 |
| 570 | |||
| 571 | ldxa [%g1 + %g0] ASI_INTR_R, %g1 | 568 | ldxa [%g1 + %g0] ASI_INTR_R, %g1 |
| 572 | srl %g3, 0, %g3 | 569 | srl %g3, 0, %g3 |
| 570 | |||
| 573 | mov 0x60, %g7 | 571 | mov 0x60, %g7 |
| 574 | ldxa [%g7 + %g0] ASI_INTR_R, %g7 | 572 | ldxa [%g7 + %g0] ASI_INTR_R, %g7 |
| 575 | stxa %g0, [%g0] ASI_INTR_RECEIVE | 573 | stxa %g0, [%g0] ASI_INTR_RECEIVE |
| @@ -581,19 +579,6 @@ do_ivec_xcall: | |||
| 581 | 1: jmpl %g3, %g0 | 579 | 1: jmpl %g3, %g0 |
| 582 | nop | 580 | nop |
| 583 | 581 | ||
| 584 | do_ivec_spurious: | ||
| 585 | stw %g3, [%g6 + 0x00] /* irq_work(cpu, 0) = bucket */ | ||
| 586 | rdpr %pstate, %g5 | ||
| 587 | |||
| 588 | wrpr %g5, PSTATE_IG | PSTATE_AG, %pstate | ||
| 589 | sethi %hi(109f), %g7 | ||
| 590 | ba,pt %xcc, etrap | ||
| 591 | 109: or %g7, %lo(109b), %g7 | ||
| 592 | call catch_disabled_ivec | ||
| 593 | add %sp, PTREGS_OFF, %o0 | ||
| 594 | ba,pt %xcc, rtrap | ||
| 595 | clr %l6 | ||
| 596 | |||
| 597 | .globl save_alternate_globals | 582 | .globl save_alternate_globals |
| 598 | save_alternate_globals: /* %o0 = save_area */ | 583 | save_alternate_globals: /* %o0 = save_area */ |
| 599 | rdpr %pstate, %o5 | 584 | rdpr %pstate, %o5 |
