···16#include <asm/ebus.h>17#include <asm/auxio.h>1819-/* This cannot be static, as it is referenced in entry.S */20void __iomem *auxio_register = NULL;2122enum auxio_type {
···16#include <asm/ebus.h>17#include <asm/auxio.h>1819+/* This cannot be static, as it is referenced in irq.c */20void __iomem *auxio_register = NULL;2122enum auxio_type {
···159 * underruns. If non-zero, doing_pdma encodes the direction of160 * the transfer for debugging. 1=read 2=write161 */162-char *pdma_vaddr;163unsigned long pdma_size;164volatile int doing_pdma = 0;165···209 pdma_areasize = pdma_size;210}211212-/* Our low-level entry point in arch/sparc/kernel/entry.S */213-extern irqreturn_t floppy_hardint(int irq, void *unused, struct pt_regs *regs);214215static int sun_fd_request_irq(void)216{···219 if(!once) {220 once = 1;221222- error = request_fast_irq(FLOPPY_IRQ, floppy_hardint, 223- SA_INTERRUPT, "floppy", NULL);224225 return ((error == 0) ? 0 : -1);226 }···614 struct linux_ebus *ebus;615 struct linux_ebus_device *edev = NULL;616 unsigned long config = 0;617- unsigned long auxio_reg;618619 for_each_ebus(ebus) {620 for_each_ebusdev(edev, ebus) {···641 /* Make sure the high density bit is set, some systems642 * (most notably Ultra5/Ultra10) come up with it clear.643 */644- auxio_reg = edev->resource[2].start;645 writel(readl(auxio_reg)|0x2, auxio_reg);646647 sun_pci_ebus_dev = ebus->self;···649 spin_lock_init(&sun_pci_fd_ebus_dma.lock);650651 /* XXX ioremap */652- sun_pci_fd_ebus_dma.regs = edev->resource[1].start;0653 if (!sun_pci_fd_ebus_dma.regs)654 return 0;655
···159 * underruns. If non-zero, doing_pdma encodes the direction of160 * the transfer for debugging. 1=read 2=write161 */162+unsigned char *pdma_vaddr;163unsigned long pdma_size;164volatile int doing_pdma = 0;165···209 pdma_areasize = pdma_size;210}211212+extern irqreturn_t sparc_floppy_irq(int, void *, struct pt_regs *);0213214static int sun_fd_request_irq(void)215{···220 if(!once) {221 once = 1;222223+ error = request_irq(FLOPPY_IRQ, sparc_floppy_irq, 224+ SA_INTERRUPT, "floppy", NULL);225226 return ((error == 0) ? 0 : -1);227 }···615 struct linux_ebus *ebus;616 struct linux_ebus_device *edev = NULL;617 unsigned long config = 0;618+ void __iomem *auxio_reg;619620 for_each_ebus(ebus) {621 for_each_ebusdev(edev, ebus) {···642 /* Make sure the high density bit is set, some systems643 * (most notably Ultra5/Ultra10) come up with it clear.644 */645+ auxio_reg = (void __iomem *) edev->resource[2].start;646 writel(readl(auxio_reg)|0x2, auxio_reg);647648 sun_pci_ebus_dev = ebus->self;···650 spin_lock_init(&sun_pci_fd_ebus_dma.lock);651652 /* XXX ioremap */653+ sun_pci_fd_ebus_dma.regs = (void __iomem *)654+ edev->resource[1].start;655 if (!sun_pci_fd_ebus_dma.regs)656 return 0;657
+1-6
include/asm-sparc64/irq.h
···19/* You should not mess with this directly. That's the job of irq.c.20 *21 * If you make changes here, please update hand coded assembler of22- * SBUS/floppy interrupt handler in entry.S -DaveM23 *24 * This is currently one DCACHE line, two buckets per L2 cache25 * line. Keep this in mind please.···121extern void enable_irq(unsigned int);122extern unsigned int build_irq(int pil, int inofixup, unsigned long iclr, unsigned long imap);123extern unsigned int sbus_build_irq(void *sbus, unsigned int ino);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);129130static __inline__ void set_softint(unsigned long bits)131{
···19/* You should not mess with this directly. That's the job of irq.c.20 *21 * If you make changes here, please update hand coded assembler of22+ * the vectored interrupt trap handler in entry.S -DaveM23 *24 * This is currently one DCACHE line, two buckets per L2 cache25 * line. Keep this in mind please.···121extern void enable_irq(unsigned int);122extern unsigned int build_irq(int pil, int inofixup, unsigned long iclr, unsigned long imap);123extern unsigned int sbus_build_irq(void *sbus, unsigned int ino);00000124125static __inline__ void set_softint(unsigned long bits)126{
···111 "membar #Sync"112 : /* No outputs */113 : "r" (tag), "r" (addr), "i" (ASI_DCACHE_TAG));114- __asm__ __volatile__ ("membar #Sync" : : : "memory");115}116117/* The instruction cache lines are flushed with this, but note that
···111 "membar #Sync"112 : /* No outputs */113 : "r" (tag), "r" (addr), "i" (ASI_DCACHE_TAG));0114}115116/* The instruction cache lines are flushed with this, but note that