aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/entry.S
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2005-06-27 20:04:45 -0400
committerDavid S. Miller <davem@davemloft.net>2005-06-27 20:04:45 -0400
commit63b614522cba5a015923c0e8f284be6e01c13f1a (patch)
tree4f3724d90f52ef8b98f7c0b9716730b7adbd8566 /arch/sparc64/kernel/entry.S
parentb445e26cbf784cdba10f2b6c3e2cd3ee7bab360a (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.S110
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
706floppy_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
718next_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
739floppy_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
748floppy_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
770floppy_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
789floppy_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
797floppy_dosoftint:
798 rdpr %pil, %g2
799 wrpr %g0, 15, %pil
800 sethi %hi(109f), %g7
801 b,pt %xcc, etrap_irq
802109: 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
816netbsd_syscall: 706netbsd_syscall: