diff options
-rw-r--r-- | arch/sparc64/kernel/auxio.c | 2 | ||||
-rw-r--r-- | arch/sparc64/kernel/entry.S | 110 | ||||
-rw-r--r-- | arch/sparc64/kernel/irq.c | 171 | ||||
-rw-r--r-- | arch/sparc64/kernel/sparc64_ksyms.c | 1 | ||||
-rw-r--r-- | include/asm-sparc64/auxio.h | 2 | ||||
-rw-r--r-- | include/asm-sparc64/floppy.h | 16 | ||||
-rw-r--r-- | include/asm-sparc64/irq.h | 7 |
7 files changed, 62 insertions, 247 deletions
diff --git a/arch/sparc64/kernel/auxio.c b/arch/sparc64/kernel/auxio.c index a0716ccc2f4a..8852c20c8d99 100644 --- a/arch/sparc64/kernel/auxio.c +++ b/arch/sparc64/kernel/auxio.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <asm/ebus.h> | 16 | #include <asm/ebus.h> |
17 | #include <asm/auxio.h> | 17 | #include <asm/auxio.h> |
18 | 18 | ||
19 | /* This cannot be static, as it is referenced in entry.S */ | 19 | /* This cannot be static, as it is referenced in irq.c */ |
20 | void __iomem *auxio_register = NULL; | 20 | void __iomem *auxio_register = NULL; |
21 | 21 | ||
22 | enum auxio_type { | 22 | enum auxio_type { |
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: |
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index 4dcb8af94090..424712577307 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <asm/uaccess.h> | 37 | #include <asm/uaccess.h> |
38 | #include <asm/cache.h> | 38 | #include <asm/cache.h> |
39 | #include <asm/cpudata.h> | 39 | #include <asm/cpudata.h> |
40 | #include <asm/auxio.h> | ||
40 | 41 | ||
41 | #ifdef CONFIG_SMP | 42 | #ifdef CONFIG_SMP |
42 | static void distribute_irqs(void); | 43 | static void distribute_irqs(void); |
@@ -834,137 +835,65 @@ void handler_irq(int irq, struct pt_regs *regs) | |||
834 | } | 835 | } |
835 | 836 | ||
836 | #ifdef CONFIG_BLK_DEV_FD | 837 | #ifdef CONFIG_BLK_DEV_FD |
837 | extern void floppy_interrupt(int irq, void *dev_cookie, struct pt_regs *regs); | 838 | extern irqreturn_t floppy_interrupt(int, void *, struct pt_regs *);; |
838 | 839 | ||
839 | void sparc_floppy_irq(int irq, void *dev_cookie, struct pt_regs *regs) | 840 | /* XXX No easy way to include asm/floppy.h XXX */ |
840 | { | 841 | extern unsigned char *pdma_vaddr; |
841 | struct irqaction *action = *(irq + irq_action); | 842 | extern unsigned long pdma_size; |
842 | struct ino_bucket *bucket; | 843 | extern volatile int doing_pdma; |
843 | int cpu = smp_processor_id(); | 844 | extern unsigned long fdc_status; |
844 | |||
845 | irq_enter(); | ||
846 | kstat_this_cpu.irqs[irq]++; | ||
847 | |||
848 | *(irq_work(cpu, irq)) = 0; | ||
849 | bucket = get_ino_in_irqaction(action) + ivector_table; | ||
850 | |||
851 | bucket->flags |= IBF_INPROGRESS; | ||
852 | |||
853 | floppy_interrupt(irq, dev_cookie, regs); | ||
854 | upa_writel(ICLR_IDLE, bucket->iclr); | ||
855 | |||
856 | bucket->flags &= ~IBF_INPROGRESS; | ||
857 | |||
858 | irq_exit(); | ||
859 | } | ||
860 | #endif | ||
861 | |||
862 | /* The following assumes that the branch lies before the place we | ||
863 | * are branching to. This is the case for a trap vector... | ||
864 | * You have been warned. | ||
865 | */ | ||
866 | #define SPARC_BRANCH(dest_addr, inst_addr) \ | ||
867 | (0x10800000 | ((((dest_addr)-(inst_addr))>>2)&0x3fffff)) | ||
868 | |||
869 | #define SPARC_NOP (0x01000000) | ||
870 | 845 | ||
871 | static void install_fast_irq(unsigned int cpu_irq, | 846 | irqreturn_t sparc_floppy_irq(int irq, void *dev_cookie, struct pt_regs *regs) |
872 | irqreturn_t (*handler)(int, void *, struct pt_regs *)) | ||
873 | { | 847 | { |
874 | extern unsigned long sparc64_ttable_tl0; | 848 | if (likely(doing_pdma)) { |
875 | unsigned long ttent = (unsigned long) &sparc64_ttable_tl0; | 849 | void __iomem *stat = (void __iomem *) fdc_status; |
876 | unsigned int *insns; | 850 | unsigned char *vaddr = pdma_vaddr; |
877 | 851 | unsigned long size = pdma_size; | |
878 | ttent += 0x820; | 852 | u8 val; |
879 | ttent += (cpu_irq - 1) << 5; | 853 | |
880 | insns = (unsigned int *) ttent; | 854 | while (size) { |
881 | insns[0] = SPARC_BRANCH(((unsigned long) handler), | 855 | val = readb(stat); |
882 | ((unsigned long)&insns[0])); | 856 | if (unlikely(!(val & 0x80))) { |
883 | insns[1] = SPARC_NOP; | 857 | pdma_vaddr = vaddr; |
884 | __asm__ __volatile__("membar #StoreStore; flush %0" : : "r" (ttent)); | 858 | pdma_size = size; |
885 | } | 859 | return IRQ_HANDLED; |
886 | 860 | } | |
887 | int request_fast_irq(unsigned int irq, | 861 | if (unlikely(!(val & 0x20))) { |
888 | irqreturn_t (*handler)(int, void *, struct pt_regs *), | 862 | pdma_vaddr = vaddr; |
889 | unsigned long irqflags, const char *name, void *dev_id) | 863 | pdma_size = size; |
890 | { | 864 | doing_pdma = 0; |
891 | struct irqaction *action; | 865 | goto main_interrupt; |
892 | struct ino_bucket *bucket = __bucket(irq); | 866 | } |
893 | unsigned long flags; | 867 | if (val & 0x40) { |
894 | 868 | /* read */ | |
895 | /* No pil0 dummy buckets allowed here. */ | 869 | *vaddr++ = readb(stat + 1); |
896 | if (bucket < &ivector_table[0] || | 870 | } else { |
897 | bucket >= &ivector_table[NUM_IVECS]) { | 871 | unsigned char data = *vaddr++; |
898 | unsigned int *caller; | ||
899 | |||
900 | __asm__ __volatile__("mov %%i7, %0" : "=r" (caller)); | ||
901 | printk(KERN_CRIT "request_fast_irq: Old style IRQ registry attempt " | ||
902 | "from %p, irq %08x.\n", caller, irq); | ||
903 | return -EINVAL; | ||
904 | } | ||
905 | |||
906 | if (!handler) | ||
907 | return -EINVAL; | ||
908 | 872 | ||
909 | if ((bucket->pil == 0) || (bucket->pil == 14)) { | 873 | /* write */ |
910 | printk("request_fast_irq: Trying to register shared IRQ 0 or 14.\n"); | 874 | writeb(data, stat + 1); |
911 | return -EBUSY; | 875 | } |
912 | } | 876 | size--; |
877 | } | ||
913 | 878 | ||
914 | spin_lock_irqsave(&irq_action_lock, flags); | 879 | pdma_vaddr = vaddr; |
880 | pdma_size = size; | ||
915 | 881 | ||
916 | action = *(bucket->pil + irq_action); | 882 | /* Send Terminal Count pulse to floppy controller. */ |
917 | if (action) { | 883 | val = readb(auxio_register); |
918 | if (action->flags & SA_SHIRQ) | 884 | val |= AUXIO_AUX1_FTCNT; |
919 | panic("Trying to register fast irq when already shared.\n"); | 885 | writeb(val, auxio_register); |
920 | if (irqflags & SA_SHIRQ) | 886 | val &= AUXIO_AUX1_FTCNT; |
921 | panic("Trying to register fast irq as shared.\n"); | 887 | writeb(val, auxio_register); |
922 | printk("request_fast_irq: Trying to register yet already owned.\n"); | ||
923 | spin_unlock_irqrestore(&irq_action_lock, flags); | ||
924 | return -EBUSY; | ||
925 | } | ||
926 | 888 | ||
927 | /* | 889 | doing_pdma = 0; |
928 | * We do not check for SA_SAMPLE_RANDOM in this path. Neither do we | ||
929 | * support smp intr affinity in this path. | ||
930 | */ | ||
931 | if (irqflags & SA_STATIC_ALLOC) { | ||
932 | if (static_irq_count < MAX_STATIC_ALLOC) | ||
933 | action = &static_irqaction[static_irq_count++]; | ||
934 | else | ||
935 | printk("Request for IRQ%d (%s) SA_STATIC_ALLOC failed " | ||
936 | "using kmalloc\n", bucket->pil, name); | ||
937 | } | ||
938 | if (action == NULL) | ||
939 | action = (struct irqaction *)kmalloc(sizeof(struct irqaction), | ||
940 | GFP_ATOMIC); | ||
941 | if (!action) { | ||
942 | spin_unlock_irqrestore(&irq_action_lock, flags); | ||
943 | return -ENOMEM; | ||
944 | } | 890 | } |
945 | install_fast_irq(bucket->pil, handler); | ||
946 | 891 | ||
947 | bucket->irq_info = action; | 892 | main_interrupt: |
948 | bucket->flags |= IBF_ACTIVE; | 893 | return floppy_interrupt(irq, dev_cookie, regs); |
949 | |||
950 | action->handler = handler; | ||
951 | action->flags = irqflags; | ||
952 | action->dev_id = NULL; | ||
953 | action->name = name; | ||
954 | action->next = NULL; | ||
955 | put_ino_in_irqaction(action, irq); | ||
956 | put_smpaff_in_irqaction(action, CPU_MASK_NONE); | ||
957 | |||
958 | *(bucket->pil + irq_action) = action; | ||
959 | enable_irq(irq); | ||
960 | |||
961 | spin_unlock_irqrestore(&irq_action_lock, flags); | ||
962 | |||
963 | #ifdef CONFIG_SMP | ||
964 | distribute_irqs(); | ||
965 | #endif | ||
966 | return 0; | ||
967 | } | 894 | } |
895 | EXPORT_SYMBOL(sparc_floppy_irq); | ||
896 | #endif | ||
968 | 897 | ||
969 | /* We really don't need these at all on the Sparc. We only have | 898 | /* We really don't need these at all on the Sparc. We only have |
970 | * stubs here because they are exported to modules. | 899 | * stubs here because they are exported to modules. |
diff --git a/arch/sparc64/kernel/sparc64_ksyms.c b/arch/sparc64/kernel/sparc64_ksyms.c index e78cc53594fa..56cd96f4a5cd 100644 --- a/arch/sparc64/kernel/sparc64_ksyms.c +++ b/arch/sparc64/kernel/sparc64_ksyms.c | |||
@@ -227,7 +227,6 @@ EXPORT_SYMBOL(__flush_dcache_range); | |||
227 | 227 | ||
228 | EXPORT_SYMBOL(mostek_lock); | 228 | EXPORT_SYMBOL(mostek_lock); |
229 | EXPORT_SYMBOL(mstk48t02_regs); | 229 | EXPORT_SYMBOL(mstk48t02_regs); |
230 | EXPORT_SYMBOL(request_fast_irq); | ||
231 | #ifdef CONFIG_SUN_AUXIO | 230 | #ifdef CONFIG_SUN_AUXIO |
232 | EXPORT_SYMBOL(auxio_set_led); | 231 | EXPORT_SYMBOL(auxio_set_led); |
233 | EXPORT_SYMBOL(auxio_set_lte); | 232 | EXPORT_SYMBOL(auxio_set_lte); |
diff --git a/include/asm-sparc64/auxio.h b/include/asm-sparc64/auxio.h index 5eb01dd47150..81a590a50a1f 100644 --- a/include/asm-sparc64/auxio.h +++ b/include/asm-sparc64/auxio.h | |||
@@ -75,6 +75,8 @@ | |||
75 | 75 | ||
76 | #ifndef __ASSEMBLY__ | 76 | #ifndef __ASSEMBLY__ |
77 | 77 | ||
78 | extern void __iomem *auxio_register; | ||
79 | |||
78 | #define AUXIO_LTE_ON 1 | 80 | #define AUXIO_LTE_ON 1 |
79 | #define AUXIO_LTE_OFF 0 | 81 | #define AUXIO_LTE_OFF 0 |
80 | 82 | ||
diff --git a/include/asm-sparc64/floppy.h b/include/asm-sparc64/floppy.h index e071b4b4edfd..49d49a285943 100644 --- a/include/asm-sparc64/floppy.h +++ b/include/asm-sparc64/floppy.h | |||
@@ -159,7 +159,7 @@ static void sun_82077_fd_outb(unsigned char value, unsigned long port) | |||
159 | * underruns. If non-zero, doing_pdma encodes the direction of | 159 | * underruns. If non-zero, doing_pdma encodes the direction of |
160 | * the transfer for debugging. 1=read 2=write | 160 | * the transfer for debugging. 1=read 2=write |
161 | */ | 161 | */ |
162 | char *pdma_vaddr; | 162 | unsigned char *pdma_vaddr; |
163 | unsigned long pdma_size; | 163 | unsigned long pdma_size; |
164 | volatile int doing_pdma = 0; | 164 | volatile int doing_pdma = 0; |
165 | 165 | ||
@@ -209,8 +209,7 @@ static void sun_fd_enable_dma(void) | |||
209 | pdma_areasize = pdma_size; | 209 | pdma_areasize = pdma_size; |
210 | } | 210 | } |
211 | 211 | ||
212 | /* Our low-level entry point in arch/sparc/kernel/entry.S */ | 212 | extern irqreturn_t sparc_floppy_irq(int, void *, struct pt_regs *); |
213 | extern irqreturn_t floppy_hardint(int irq, void *unused, struct pt_regs *regs); | ||
214 | 213 | ||
215 | static int sun_fd_request_irq(void) | 214 | static int sun_fd_request_irq(void) |
216 | { | 215 | { |
@@ -220,8 +219,8 @@ static int sun_fd_request_irq(void) | |||
220 | if(!once) { | 219 | if(!once) { |
221 | once = 1; | 220 | once = 1; |
222 | 221 | ||
223 | error = request_fast_irq(FLOPPY_IRQ, floppy_hardint, | 222 | error = request_irq(FLOPPY_IRQ, sparc_floppy_irq, |
224 | SA_INTERRUPT, "floppy", NULL); | 223 | SA_INTERRUPT, "floppy", NULL); |
225 | 224 | ||
226 | return ((error == 0) ? 0 : -1); | 225 | return ((error == 0) ? 0 : -1); |
227 | } | 226 | } |
@@ -615,7 +614,7 @@ static unsigned long __init sun_floppy_init(void) | |||
615 | struct linux_ebus *ebus; | 614 | struct linux_ebus *ebus; |
616 | struct linux_ebus_device *edev = NULL; | 615 | struct linux_ebus_device *edev = NULL; |
617 | unsigned long config = 0; | 616 | unsigned long config = 0; |
618 | unsigned long auxio_reg; | 617 | void __iomem *auxio_reg; |
619 | 618 | ||
620 | for_each_ebus(ebus) { | 619 | for_each_ebus(ebus) { |
621 | for_each_ebusdev(edev, ebus) { | 620 | for_each_ebusdev(edev, ebus) { |
@@ -642,7 +641,7 @@ static unsigned long __init sun_floppy_init(void) | |||
642 | /* Make sure the high density bit is set, some systems | 641 | /* Make sure the high density bit is set, some systems |
643 | * (most notably Ultra5/Ultra10) come up with it clear. | 642 | * (most notably Ultra5/Ultra10) come up with it clear. |
644 | */ | 643 | */ |
645 | auxio_reg = edev->resource[2].start; | 644 | auxio_reg = (void __iomem *) edev->resource[2].start; |
646 | writel(readl(auxio_reg)|0x2, auxio_reg); | 645 | writel(readl(auxio_reg)|0x2, auxio_reg); |
647 | 646 | ||
648 | sun_pci_ebus_dev = ebus->self; | 647 | sun_pci_ebus_dev = ebus->self; |
@@ -650,7 +649,8 @@ static unsigned long __init sun_floppy_init(void) | |||
650 | spin_lock_init(&sun_pci_fd_ebus_dma.lock); | 649 | spin_lock_init(&sun_pci_fd_ebus_dma.lock); |
651 | 650 | ||
652 | /* XXX ioremap */ | 651 | /* XXX ioremap */ |
653 | sun_pci_fd_ebus_dma.regs = edev->resource[1].start; | 652 | sun_pci_fd_ebus_dma.regs = (void __iomem *) |
653 | edev->resource[1].start; | ||
654 | if (!sun_pci_fd_ebus_dma.regs) | 654 | if (!sun_pci_fd_ebus_dma.regs) |
655 | return 0; | 655 | return 0; |
656 | 656 | ||
diff --git a/include/asm-sparc64/irq.h b/include/asm-sparc64/irq.h index 3aef0ca67750..018e2e46082b 100644 --- a/include/asm-sparc64/irq.h +++ b/include/asm-sparc64/irq.h | |||
@@ -19,7 +19,7 @@ | |||
19 | /* You should not mess with this directly. That's the job of irq.c. | 19 | /* You should not mess with this directly. That's the job of irq.c. |
20 | * | 20 | * |
21 | * If you make changes here, please update hand coded assembler of | 21 | * If you make changes here, please update hand coded assembler of |
22 | * SBUS/floppy interrupt handler in entry.S -DaveM | 22 | * the vectored interrupt trap handler in entry.S -DaveM |
23 | * | 23 | * |
24 | * This is currently one DCACHE line, two buckets per L2 cache | 24 | * This is currently one DCACHE line, two buckets per L2 cache |
25 | * line. Keep this in mind please. | 25 | * line. Keep this in mind please. |
@@ -122,11 +122,6 @@ extern void enable_irq(unsigned int); | |||
122 | extern unsigned int build_irq(int pil, int inofixup, unsigned long iclr, unsigned long imap); | 122 | extern unsigned int build_irq(int pil, int inofixup, unsigned long iclr, unsigned long imap); |
123 | extern unsigned int sbus_build_irq(void *sbus, unsigned int ino); | 123 | extern unsigned int sbus_build_irq(void *sbus, unsigned int ino); |
124 | 124 | ||
125 | extern int request_fast_irq(unsigned int irq, | ||
126 | irqreturn_t (*handler)(int, void *, struct pt_regs *), | ||
127 | unsigned long flags, __const__ char *devname, | ||
128 | void *dev_id); | ||
129 | |||
130 | static __inline__ void set_softint(unsigned long bits) | 125 | static __inline__ void set_softint(unsigned long bits) |
131 | { | 126 | { |
132 | __asm__ __volatile__("wr %0, 0x0, %%set_softint" | 127 | __asm__ __volatile__("wr %0, 0x0, %%set_softint" |