From: Victor Gallardo <vgallardo@amcc.com>
Date: Thu, 28 Aug 2008 23:03:28 +0000 (-0700)
Subject: ppc4xx: fix UIC external_interrupt hang on UIC0
X-Git-Tag: v2025.01-rc5-pxa1908~21882^2~3
X-Git-Url: http://git.dujemihanovic.xyz/img/static/git-favicon.png?a=commitdiff_plain;h=5bc542a593abc9e974fbd34704af85c37c366c60;p=u-boot.git

ppc4xx: fix UIC external_interrupt hang on UIC0

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>
---

diff --git a/cpu/ppc4xx/uic.c b/cpu/ppc4xx/uic.c
index 7944c6c3c2..a95d1cb17d 100644
--- a/cpu/ppc4xx/uic.c
+++ b/cpu/ppc4xx/uic.c
@@ -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;
 }