From: Andy Fleming <afleming@freescale.com>

The Spurious interrupt assignment for OpenPIC was the constant,
OPENPIC_VEC_SPURIOUS plus the offset passed in.  Due to bugs in some
OpenPICs, the end value needed to be 255 on those systems.  However, the
constant was then chosen to be 239, because offset on most systems is 16. 
The 85xx has an offset of 64, however, and so this assignment caused
lock-ups during boot.  The proposed solution is to declare
OPENPIC_VEC_SPURIOUS to be 255, and use that value directly, instead of
adding the offset to it.

Signed-off-by: Tom Rini <trini@kernel.crashing.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/arch/ppc/syslib/open_pic.c |    8 ++++----
 25-akpm/include/asm-ppc/open_pic.h |    2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff -puN arch/ppc/syslib/open_pic.c~ppc32-85xx-spurious-interrupt-bug arch/ppc/syslib/open_pic.c
--- 25/arch/ppc/syslib/open_pic.c~ppc32-85xx-spurious-interrupt-bug	2004-09-20 10:35:55.288950928 -0700
+++ 25-akpm/arch/ppc/syslib/open_pic.c	2004-09-20 10:35:55.294950016 -0700
@@ -412,7 +412,7 @@ void __init openpic_init(int offset)
 
 	/* Initialize the spurious interrupt */
 	if (ppc_md.progress) ppc_md.progress("openpic: spurious",0x3bd);
-	openpic_set_spurious(OPENPIC_VEC_SPURIOUS+offset);
+	openpic_set_spurious(OPENPIC_VEC_SPURIOUS);
 	openpic_disable_8259_pass_through();
 #ifdef CONFIG_EPIC_SERIAL_MODE
 	openpic_eicr_set_clk(7);	/* Slowest value until we know better */
@@ -865,7 +865,7 @@ openpic_get_irq(struct pt_regs *regs)
 			irq = cirq;
 			openpic_eoi();
 		}
-        } else if (irq == OPENPIC_VEC_SPURIOUS + open_pic_irq_offset)
+	} else if (irq == OPENPIC_VEC_SPURIOUS)
 		irq = -1;
 	return irq;
 }
@@ -988,9 +988,9 @@ int openpic_resume(struct sys_device *sy
 
 	/* OpenPIC sometimes seem to need some time to be fully back up... */
 	do {
-		openpic_set_spurious(OPENPIC_VEC_SPURIOUS+open_pic_irq_offset);
+		openpic_set_spurious(OPENPIC_VEC_SPURIOUS);
 	} while(openpic_readfield(&OpenPIC->Global.Spurious_Vector, OPENPIC_VECTOR_MASK)
-			!= (OPENPIC_VEC_SPURIOUS + open_pic_irq_offset));
+			!= OPENPIC_VEC_SPURIOUS);
 	
 	openpic_disable_8259_pass_through();
 
diff -puN include/asm-ppc/open_pic.h~ppc32-85xx-spurious-interrupt-bug include/asm-ppc/open_pic.h
--- 25/include/asm-ppc/open_pic.h~ppc32-85xx-spurious-interrupt-bug	2004-09-20 10:35:55.289950776 -0700
+++ 25-akpm/include/asm-ppc/open_pic.h	2004-09-20 10:35:55.294950016 -0700
@@ -23,7 +23,7 @@
 
 #define OPENPIC_VEC_TIMER	110	/* and up */
 #define OPENPIC_VEC_IPI		118	/* and up */
-#define OPENPIC_VEC_SPURIOUS	239
+#define OPENPIC_VEC_SPURIOUS	255
 
 /* OpenPIC IRQ controller structure */
 extern struct hw_interrupt_type open_pic;
_