From d8bd643141af4710d7f1b69bbab6b760de0af0a1 Mon Sep 17 00:00:00 2001
From: Stefan Roese <sr@denx.de>
Date: Thu, 27 Mar 2008 08:47:26 +0100
Subject: [PATCH] ppc4xx: Mask 'vec' with 0x1f in uic_interrupt() for bit
 set/clear

Signed-off-by: Stefan Roese <sr@denx.de>
---
 cpu/ppc4xx/interrupts.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/cpu/ppc4xx/interrupts.c b/cpu/ppc4xx/interrupts.c
index 698bcb57d7..8620e2b484 100644
--- a/cpu/ppc4xx/interrupts.c
+++ b/cpu/ppc4xx/interrupts.c
@@ -218,15 +218,16 @@ static void uic_interrupt(u32 uic_base, int vec_base)
 			} else {
 				set_dcr(uic_base + UIC_ER,
 					get_dcr(uic_base + UIC_ER) &
-					~(0x80000000 >> vec));
+					~(0x80000000 >> (vec & 0x1f)));
 				printf("Masking bogus interrupt vector %d"
 				       " (UIC_BASE=0x%x)\n", vec, uic_base);
 			}
 
 			/*
-			 * After servicing the interrupt, we have to remove the status indicator.
+			 * After servicing the interrupt, we have to remove the
+			 * status indicator
 			 */
-			set_dcr(uic_base + UIC_SR, (0x80000000 >> vec));
+			set_dcr(uic_base + UIC_SR, (0x80000000 >> (vec & 0x1f)));
 		}
 
 		/*
-- 
GitLab