patch-2.1.129 linux/arch/ppc/amiga/amiints.c

Next file: linux/arch/ppc/amiga/config.c
Previous file: linux/arch/ppc/Makefile
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.128/linux/arch/ppc/amiga/amiints.c linux/arch/ppc/amiga/amiints.c
@@ -108,6 +108,11 @@
 	custom.intreq = 0x7fff;
 
 #ifdef CONFIG_APUS
+	/* Clear any inter-CPU interupt requests. Circumvents bug in
+           Blizzard IPL emulation HW (or so it appears). */
+	APUS_WRITE(APUS_INT_LVL, INTLVL_SETRESET | INTLVL_MASK);
+
+	/* Init IPL emulation. */
 	APUS_WRITE(APUS_REG_INT, REGINT_INTMASTER | REGINT_ENABLEIPL);
 	APUS_WRITE(APUS_IPL_EMU, IPLEMU_DISABLEINT);
 	APUS_WRITE(APUS_IPL_EMU, IPLEMU_SETRESET | IPLEMU_IPLMASK);
@@ -304,12 +309,14 @@
 	}
 
 	if (irq >= IRQ_AMIGA_CIAB) {
+		cia_set_irq(&ciab_base, (1 << (irq - IRQ_AMIGA_CIAB)));
 		cia_able_irq(&ciab_base, CIA_ICR_SETCLR |
 		             (1 << (irq - IRQ_AMIGA_CIAB)));
 		return;
 	}
 
 	if (irq >= IRQ_AMIGA_CIAA) {
+		cia_set_irq(&ciaa_base, (1 << (irq - IRQ_AMIGA_CIAA)));
 		cia_able_irq(&ciaa_base, CIA_ICR_SETCLR |
 		             (1 << (irq - IRQ_AMIGA_CIAA)));
 		return;

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov