ppc4xx: fix UIC external_interrupt hang on UIC0
authorVictor Gallardo <vgallardo@amcc.com>
Thu, 28 Aug 2008 23:03:28 +0000 (16:03 -0700)
committerStefan Roese <sr@denx.de>
Fri, 29 Aug 2008 08:13:59 +0000 (10:13 +0200)
This patch fixes a UIC external_interrupt hang if critical or non-critical
interrupt is set at the same time as a normal interrupt is set on UIC0.

Signed-off-by: Victor Gallardo <vgallardo@amcc.com>
Signed-off-by: Stefan Roese <sr@denx.de>
cpu/ppc4xx/uic.c

index 7944c6c3c2e27799e23a15c20e6fba5539e0461e..a95d1cb17d9ef34d37db7ca2c7f388025e29b416 100644 (file)
@@ -129,11 +129,11 @@ void external_interrupt(struct pt_regs *regs)
                uic_interrupt(UIC3_DCR_BASE, 96);
 #endif
 
+       mtdcr(uic0sr, (uic_msr & UICB0_ALL));
+
        if (uic_msr & ~(UICB0_ALL))
                uic_interrupt(UIC0_DCR_BASE, 0);
 
-       mtdcr(uic0sr, uic_msr);
-
        return;
 }