diff options
author | David S. Miller <davem@davemloft.net> | 2005-06-27 20:04:45 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-06-27 20:04:45 -0400 |
commit | 63b614522cba5a015923c0e8f284be6e01c13f1a (patch) | |
tree | 4f3724d90f52ef8b98f7c0b9716730b7adbd8566 /arch/sparc64/kernel/entry.S | |
parent | b445e26cbf784cdba10f2b6c3e2cd3ee7bab360a (diff) |
[SPARC64]: Get rid of fast IRQ feature.
The only real user was the assembler floppy interrupt
handler, which does not need to be in assembly.
This makes it so that there are less pieces of code which
know about the internal layout of ivector_table[] and
friends.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/entry.S')
-rw-r--r-- | arch/sparc64/kernel/entry.S | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/arch/sparc64/kernel/entry.S b/arch/sparc64/kernel/entry.S index ffe717ab7f83..eee516a71c14 100644 --- a/arch/sparc64/kernel/entry.S +++ b/arch/sparc64/kernel/entry.S | |||
@@ -701,116 +701,6 @@ utrap_ill: | |||
701 | ba,pt %xcc, rtrap | 701 | ba,pt %xcc, rtrap |
702 | clr %l6 | 702 | clr %l6 |
703 | 703 | ||
704 | #ifdef CONFIG_BLK_DEV_FD | ||
705 | .globl floppy_hardint | ||
706 | floppy_hardint: | ||
707 | wr %g0, (1 << 11), %clear_softint | ||
708 | sethi %hi(doing_pdma), %g1 | ||
709 | ld [%g1 + %lo(doing_pdma)], %g2 | ||
710 | brz,pn %g2, floppy_dosoftint | ||
711 | sethi %hi(fdc_status), %g3 | ||
712 | ldx [%g3 + %lo(fdc_status)], %g3 | ||
713 | sethi %hi(pdma_vaddr), %g5 | ||
714 | ldx [%g5 + %lo(pdma_vaddr)], %g4 | ||
715 | sethi %hi(pdma_size), %g5 | ||
716 | ldx [%g5 + %lo(pdma_size)], %g5 | ||
717 | |||
718 | next_byte: | ||
719 | lduba [%g3] ASI_PHYS_BYPASS_EC_E, %g7 | ||
720 | andcc %g7, 0x80, %g0 | ||
721 | be,pn %icc, floppy_fifo_emptied | ||
722 | andcc %g7, 0x20, %g0 | ||
723 | be,pn %icc, floppy_overrun | ||
724 | andcc %g7, 0x40, %g0 | ||
725 | be,pn %icc, floppy_write | ||
726 | sub %g5, 1, %g5 | ||
727 | |||
728 | inc %g3 | ||
729 | lduba [%g3] ASI_PHYS_BYPASS_EC_E, %g7 | ||
730 | dec %g3 | ||
731 | orcc %g0, %g5, %g0 | ||
732 | stb %g7, [%g4] | ||
733 | bne,pn %xcc, next_byte | ||
734 | add %g4, 1, %g4 | ||
735 | |||
736 | b,pt %xcc, floppy_tdone | ||
737 | nop | ||
738 | |||
739 | floppy_write: | ||
740 | ldub [%g4], %g7 | ||
741 | orcc %g0, %g5, %g0 | ||
742 | inc %g3 | ||
743 | stba %g7, [%g3] ASI_PHYS_BYPASS_EC_E | ||
744 | dec %g3 | ||
745 | bne,pn %xcc, next_byte | ||
746 | add %g4, 1, %g4 | ||
747 | |||
748 | floppy_tdone: | ||
749 | sethi %hi(pdma_vaddr), %g1 | ||
750 | stx %g4, [%g1 + %lo(pdma_vaddr)] | ||
751 | sethi %hi(pdma_size), %g1 | ||
752 | stx %g5, [%g1 + %lo(pdma_size)] | ||
753 | sethi %hi(auxio_register), %g1 | ||
754 | ldx [%g1 + %lo(auxio_register)], %g7 | ||
755 | lduba [%g7] ASI_PHYS_BYPASS_EC_E, %g5 | ||
756 | or %g5, AUXIO_AUX1_FTCNT, %g5 | ||
757 | /* andn %g5, AUXIO_AUX1_MASK, %g5 */ | ||
758 | stba %g5, [%g7] ASI_PHYS_BYPASS_EC_E | ||
759 | andn %g5, AUXIO_AUX1_FTCNT, %g5 | ||
760 | /* andn %g5, AUXIO_AUX1_MASK, %g5 */ | ||
761 | |||
762 | nop; nop; nop; nop; nop; nop; | ||
763 | nop; nop; nop; nop; nop; nop; | ||
764 | |||
765 | stba %g5, [%g7] ASI_PHYS_BYPASS_EC_E | ||
766 | sethi %hi(doing_pdma), %g1 | ||
767 | b,pt %xcc, floppy_dosoftint | ||
768 | st %g0, [%g1 + %lo(doing_pdma)] | ||
769 | |||
770 | floppy_fifo_emptied: | ||
771 | sethi %hi(pdma_vaddr), %g1 | ||
772 | stx %g4, [%g1 + %lo(pdma_vaddr)] | ||
773 | sethi %hi(pdma_size), %g1 | ||
774 | stx %g5, [%g1 + %lo(pdma_size)] | ||
775 | sethi %hi(irq_action), %g1 | ||
776 | or %g1, %lo(irq_action), %g1 | ||
777 | ldx [%g1 + (11 << 3)], %g3 ! irqaction[floppy_irq] | ||
778 | ldx [%g3 + 0x08], %g4 ! action->flags>>48==ino | ||
779 | sethi %hi(ivector_table), %g3 | ||
780 | srlx %g4, 48, %g4 | ||
781 | or %g3, %lo(ivector_table), %g3 | ||
782 | sllx %g4, 5, %g4 | ||
783 | ldx [%g3 + %g4], %g4 ! &ivector_table[ino] | ||
784 | ldx [%g4 + 0x10], %g4 ! bucket->iclr | ||
785 | stwa %g0, [%g4] ASI_PHYS_BYPASS_EC_E ! ICLR_IDLE | ||
786 | membar #Sync ! probably not needed... | ||
787 | retry | ||
788 | |||
789 | floppy_overrun: | ||
790 | sethi %hi(pdma_vaddr), %g1 | ||
791 | stx %g4, [%g1 + %lo(pdma_vaddr)] | ||
792 | sethi %hi(pdma_size), %g1 | ||
793 | stx %g5, [%g1 + %lo(pdma_size)] | ||
794 | sethi %hi(doing_pdma), %g1 | ||
795 | st %g0, [%g1 + %lo(doing_pdma)] | ||
796 | |||
797 | floppy_dosoftint: | ||
798 | rdpr %pil, %g2 | ||
799 | wrpr %g0, 15, %pil | ||
800 | sethi %hi(109f), %g7 | ||
801 | b,pt %xcc, etrap_irq | ||
802 | 109: or %g7, %lo(109b), %g7 | ||
803 | |||
804 | mov 11, %o0 | ||
805 | mov 0, %o1 | ||
806 | call sparc_floppy_irq | ||
807 | add %sp, PTREGS_OFF, %o2 | ||
808 | |||
809 | b,pt %xcc, rtrap_irq | ||
810 | nop | ||
811 | |||
812 | #endif /* CONFIG_BLK_DEV_FD */ | ||
813 | |||
814 | /* XXX Here is stuff we still need to write... -DaveM XXX */ | 704 | /* XXX Here is stuff we still need to write... -DaveM XXX */ |
815 | .globl netbsd_syscall | 705 | .globl netbsd_syscall |
816 | netbsd_syscall: | 706 | netbsd_syscall: |