+#ifdef VAX8600
+ if (cpu == VAX_8600) {
+ int mdecc, mear, mstat1, mstat2, array;
+
+ /*
+ * Scratchpad registers in the Ebox must be read by
+ * storing their ID number in ESPA and then immediately
+ * reading ESPD's contents with no other intervening
+ * machine instructions!
+ *
+ * The asm's below have a number of constants which
+ * are defined correctly in mem.h and mtpr.h.
+ */
+ asm("mtpr $0x27,$0x4e; mfpr $0x4f,r11");
+ mdecc = reg11; /* must acknowledge interrupt? */
+ if (M8600_MEMERR(mdecc)) {
+ asm("mtpr $0x2a,$0x4e; mfpr $0x4f,r11");
+ mear = reg11;
+ asm("mtpr $0x25,$0x4e; mfpr $0x4f,r11");
+ mstat1 = reg11;
+ asm("mtpr $0x26,$0x4e; mfpr $0x4f,r11");
+ mstat2 = reg11;
+ array = M8600_ARRAY(mear);
+
+ printf("mcr0: ecc error, addr %x (array %d) syn %x\n",
+ M8600_ADDR(mear), array, M8600_SYN(mdecc));
+ printf("\tMSTAT1 = %b\n\tMSTAT2 = %b\n",
+ mstat1, M8600_MSTAT1_BITS,
+ mstat2, M8600_MSTAT2_BITS);
+ M8600_INH;
+ }
+ } else
+#endif