return 0;
 }
 
-int board_emac_count(void)
+static int is_405exr(void)
 {
        u32 pvr = get_pvr();
 
+       if (pvr & 0x00000004)
+               return 0;               /* bit 2 set -> 405EX */
+
+       return 1;                       /* bit 2 cleared -> 405EXr */
+}
+
+int board_emac_count(void)
+{
        /*
         * 405EXr only has one EMAC interface, 405EX has two
         */
-       if ((pvr == PVR_405EXR1_RA) || (pvr == PVR_405EXR2_RA))
+       if (is_405exr())
                return 1;
        else
                return 2;
 
 static int board_pcie_count(void)
 {
-       u32 pvr = get_pvr();
-
        /*
         * 405EXr only has one EMAC interface, 405EX has two
         */
-       if ((pvr == PVR_405EXR1_RA) || (pvr == PVR_405EXR2_RA))
+       if (is_405exr())
                return 1;
        else
                return 2;
 int checkboard (void)
 {
        char *s = getenv("serial#");
-       u32 pvr = get_pvr();
 
-       if ((pvr == PVR_405EXR1_RA) || (pvr == PVR_405EXR2_RA))
+       if (is_405exr())
                printf("Board: Haleakala - AMCC PPC405EXr Evaluation Board");
        else
                printf("Board: Kilauea - AMCC PPC405EX Evaluation Board");
 
                strcpy(addstr, "No Security support");
                break;
 
+       case PVR_405EX1_RC:
+               puts("EX Rev. C");
+               strcpy(addstr, "Security support");
+               break;
+
+       case PVR_405EX2_RC:
+               puts("EX Rev. C");
+               strcpy(addstr, "No Security support");
+               break;
+
+       case PVR_405EXR1_RC:
+               puts("EXr Rev. C");
+               strcpy(addstr, "Security support");
+               break;
+
+       case PVR_405EXR2_RC:
+               puts("EXr Rev. C");
+               strcpy(addstr, "No Security support");
+               break;
+
 #if defined(CONFIG_440)
        case PVR_440GP_RB:
                puts("GP Rev. B");
 
 #define PVR_405EP_RA   0x51210950
 #define PVR_405GPR_RB  0x50910951
 #define PVR_405EZ_RA   0x41511460
-#define PVR_405EXR1_RA 0x12911473 /* 405EXr rev A with Security */
-#define PVR_405EXR2_RA 0x12911471 /* 405EXr rev A without Security */
-#define PVR_405EX1_RA  0x12911477 /* 405EX rev A with Security */
-#define PVR_405EX2_RA  0x12911475 /* 405EX rev A without Security */
+#define PVR_405EXR1_RA 0x12911473 /* 405EXr rev A/B with Security */
+#define PVR_405EXR2_RA 0x12911471 /* 405EXr rev A/B without Security */
+#define PVR_405EX1_RA  0x12911477 /* 405EX rev A/B with Security */
+#define PVR_405EX2_RA  0x12911475 /* 405EX rev A/B without Security */
+#define PVR_405EXR1_RC 0x1291147B /* 405EXr rev C with Security */
+#define PVR_405EXR2_RC 0x12911479 /* 405EXr rev C without Security */
+#define PVR_405EX1_RC  0x1291147F /* 405EX rev C with Security */
+#define PVR_405EX2_RC  0x1291147D /* 405EX rev C without Security */
 #define PVR_440GP_RB   0x40120440
 #define PVR_440GP_RC   0x40120481
 #define PVR_440EP_RA   0x42221850