powerpc/44x: Fix 460EX/460GT machine check handling
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 11 Nov 2008 16:02:43 +0000 (16:02 +0000)
committerJosh Boyer <jwboyer@linux.vnet.ibm.com>
Thu, 13 Nov 2008 15:11:26 +0000 (10:11 -0500)
Those cores use the 440A type machine check (ie, they have
MCSRR0/MCSRR1). They thus need to call the appropriate fixup
function to hook the right variant of the exception.

Without this, all machine checks become fatal due to loss
of context when entering the exception handler.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
arch/powerpc/kernel/cpu_setup_44x.S

index 80cac984d85d06271a80d1d67cb02e08a057515c..31c18b52affb878031c69fda37421ff5e53c391f 100644 (file)
@@ -34,7 +34,12 @@ _GLOBAL(__setup_cpu_440grx)
        blr
 _GLOBAL(__setup_cpu_460ex)
 _GLOBAL(__setup_cpu_460gt)
-       b       __init_fpu_44x
+       mflr    r4
+       bl      __init_fpu_44x
+       bl      __fixup_440A_mcheck
+       mtlr    r4
+       blr
+
 _GLOBAL(__setup_cpu_440gx)
 _GLOBAL(__setup_cpu_440spe)
        b       __fixup_440A_mcheck