aboutsummaryrefslogtreecommitdiff
path: root/cpu
diff options
context:
space:
mode:
authorVictor Gallardo <vgallardo@amcc.com>2008-08-28 16:03:28 -0700
committerStefan Roese <sr@denx.de>2008-08-29 10:13:59 +0200
commit5bc542a593abc9e974fbd34704af85c37c366c60 (patch)
treebda6cef0f5311a81ea0e6cb5522b755853b1efd7 /cpu
parent04737d5ffd16248cb80ab3dd4f3765057a803f18 (diff)
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>
Diffstat (limited to 'cpu')
-rw-r--r--cpu/ppc4xx/uic.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/cpu/ppc4xx/uic.c b/cpu/ppc4xx/uic.c
index 7944c6c3c..a95d1cb17 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;
}