Commit 39d97e14 authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by David Gibson
Browse files

ppc: Make uninorth interrupt swizzling identical to Grackle



It's currently broken as it uses an incorrect shift, it tries
to use the slot number but uses the top bits of the bus number
instead.

Note: Neither implementation matches what OpenBIOS ends up putting
in the device-tree either, which will have to be fixed separately.

This is not quite correct for modelling a real Mac since Apple
tend to tie all 4 interrupt lines of a slot together and have
separate interrupts for every slot and every motherboard devices
going straight to the PIC but we'll sort that out later.

Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Reviewed-by: default avatarThomas Huth <thuth@redhat.com>
Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
parent a813fe73
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -62,9 +62,7 @@ typedef struct UNINState {

static int pci_unin_map_irq(PCIDevice *pci_dev, int irq_num)
{
    int devfn = pci_dev->devfn & 0x00FFFFFF;

    return (((devfn >> 11) & 0x1F) + irq_num) & 3;
    return (irq_num + (pci_dev->devfn >> 3)) & 3;
}

static void pci_unin_set_irq(void *opaque, int irq_num, int level)