ppc4xx: Add ECC status info to machine-check exception for IBM DDR2 core
authorStefan Roese <sr@denx.de>
Wed, 21 Jul 2010 17:06:26 +0000 (19:06 +0200)
committerStefan Roese <sr@denx.de>
Fri, 23 Jul 2010 07:55:03 +0000 (09:55 +0200)
Signed-off-by: Stefan Roese <sr@denx.de>
arch/powerpc/cpu/ppc4xx/traps.c

index 1616772f0f905e155abba36538faf78583cb6bc1..b5562ad9788aa379c8c970af29a56918938d6b66 100644 (file)
@@ -209,6 +209,22 @@ MachineCheckException(struct pt_regs *regs)
                /* Clear MCSR */
                mtspr(SPRN_MCSR, val);
        }
+
+#if defined(CONFIG_DDR_ECC) && defined(CONFIG_SDRAM_PPC4xx_IBM_DDR2)
+       /*
+        * Read and print ECC status register/info:
+        * The faulting address is only known upon uncorrectable ECC
+        * errors.
+        */
+       mfsdram(SDRAM_ECCES, val);
+       if (val & SDRAM_ECCES_CE)
+               printf("ECC: Correctable error\n");
+       if (val & SDRAM_ECCES_UE) {
+               printf("ECC: Uncorrectable error at 0x%02x%08x\n",
+                      mfdcr(SDRAM_ERRADDULL), mfdcr(SDRAM_ERRADDLLL));
+       }
+#endif /* CONFIG_DDR_ECC ... */
+
 #if defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
        mfsdram(DDR0_00, val) ;
        printf("DDR0: DDR0_00 %lx\n", val);