fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / arch / alpha / kernel / sys_takara.c
index 24c255e..9bd9a31 100644 (file)
@@ -85,7 +85,7 @@ static struct hw_interrupt_type takara_irq_type = {
 };
 
 static void
-takara_device_interrupt(unsigned long vector, struct pt_regs *regs)
+takara_device_interrupt(unsigned long vector)
 {
        unsigned intstatus;
 
@@ -112,20 +112,20 @@ takara_device_interrupt(unsigned long vector, struct pt_regs *regs)
                 * despatch an interrupt if it's set.
                 */
 
-               if (intstatus & 8) handle_irq(16+3, regs);
-               if (intstatus & 4) handle_irq(16+2, regs);
-               if (intstatus & 2) handle_irq(16+1, regs);
-               if (intstatus & 1) handle_irq(16+0, regs);
+               if (intstatus & 8) handle_irq(16+3);
+               if (intstatus & 4) handle_irq(16+2);
+               if (intstatus & 2) handle_irq(16+1);
+               if (intstatus & 1) handle_irq(16+0);
        } else {
-               isa_device_interrupt (vector, regs);
+               isa_device_interrupt (vector);
        }
 }
 
 static void 
-takara_srm_device_interrupt(unsigned long vector, struct pt_regs * regs)
+takara_srm_device_interrupt(unsigned long vector)
 {
        int irq = (vector - 0x800) >> 4;
-       handle_irq(irq, regs);
+       handle_irq(irq);
 }
 
 static void __init
@@ -154,7 +154,7 @@ takara_init_irq(void)
 
        for (i = 16; i < 128; ++i) {
                irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL;
-               irq_desc[i].handler = &takara_irq_type;
+               irq_desc[i].chip = &takara_irq_type;
        }
 
        common_init_isa_dma();
@@ -231,8 +231,12 @@ takara_swizzle(struct pci_dev *dev, u8 *pinp)
        int slot = PCI_SLOT(dev->devfn);
        int pin = *pinp;
        unsigned int ctlreg = inl(0x500);
-       unsigned int busslot = PCI_SLOT(dev->bus->self->devfn);
+       unsigned int busslot;
 
+       if (!dev->bus->self)
+               return slot;
+
+       busslot = PCI_SLOT(dev->bus->self->devfn);
        /* Check for built-in bridges.  */
        if (dev->bus->number != 0
            && busslot > 16
@@ -273,7 +277,6 @@ struct alpha_machine_vector takara_mv __initmv = {
        DO_EV5_MMU,
        DO_DEFAULT_RTC,
        DO_CIA_IO,
-       DO_CIA_BUS,
        .machine_check          = cia_machine_check,
        .max_isa_dma_address    = ALPHA_MAX_ISA_DMA_ADDRESS,
        .min_io_address         = DEFAULT_IO_BASE,