aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/entry.S
diff options
context:
space:
mode:
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: