|
@@ -484,6 +484,15 @@ ENTRY(_trap) /* Exception: 4th entry into system event table(supervisor mode)*/
|
|
|
[--sp] = ASTAT;
|
|
|
[--sp] = (R7:6,P5:4);
|
|
|
|
|
|
+#if ANOMALY_05000283 || ANOMALY_05000315
|
|
|
+ cc = r7 == r7;
|
|
|
+ p5.h = HI(CHIPID);
|
|
|
+ p5.l = LO(CHIPID);
|
|
|
+ if cc jump 1f;
|
|
|
+ r7.l = W[p5];
|
|
|
+1:
|
|
|
+#endif
|
|
|
+
|
|
|
#ifdef CONFIG_DEBUG_DOUBLEFAULT
|
|
|
/*
|
|
|
* Save these registers, as they are only valid in exception context
|
|
@@ -1020,6 +1029,15 @@ ENTRY(_early_trap)
|
|
|
SAVE_ALL_SYS
|
|
|
trace_buffer_stop(p0,r0);
|
|
|
|
|
|
+#if ANOMALY_05000283 || ANOMALY_05000315
|
|
|
+ cc = r5 == r5;
|
|
|
+ p4.h = HI(CHIPID);
|
|
|
+ p4.l = LO(CHIPID);
|
|
|
+ if cc jump 1f;
|
|
|
+ r5.l = W[p4];
|
|
|
+1:
|
|
|
+#endif
|
|
|
+
|
|
|
/* Turn caches off, to ensure we don't get double exceptions */
|
|
|
|
|
|
P4.L = LO(IMEM_CONTROL);
|