Blackfin arch: the load address is not safe to point to as a workaround for ANOMALY...
authorRobin Getz <robin.getz@analog.com>
Wed, 10 Oct 2007 09:28:27 +0000 (17:28 +0800)
committerBryan Wu <bryan.wu@analog.com>
Wed, 10 Oct 2007 09:28:27 +0000 (17:28 +0800)
Now that we have moved head.S into the init section, the load
address is not safe to point to as a workaround for ANOMALY 05000281

Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
arch/blackfin/mach-common/entry.S

index a56b231d94ce04d492c00a19dafb2a7312900bbd..e3ad5802868a2489865a761ae32b824b6a87ecc4 100644 (file)
 # define EX_SCRATCH_REG CYCLES
 #endif
 
+#if ANOMALY_05000281
+ENTRY(_safe_speculative_execution)
+       NOP;
+       NOP;
+       NOP;
+       jump _safe_speculative_execution;
+ENDPROC(_safe_speculative_execution)
+#endif
+
 #ifdef CONFIG_EXCPT_IRQ_SYSC_L1
 .section .l1.text
 #else
@@ -685,8 +694,8 @@ ENTRY(_return_from_int)
        [p0] = p1;
        csync;
 #if ANOMALY_05000281
-       r0.l = lo(CONFIG_BOOT_LOAD);
-       r0.h = hi(CONFIG_BOOT_LOAD);
+       r0.l = _safe_speculative_execution;
+       r0.h = _safe_speculative_execution;
        reti = r0;
 #endif
        r0 = 0x801f (z);
@@ -699,8 +708,8 @@ ENDPROC(_return_from_int)
 
 ENTRY(_lower_to_irq14)
 #if ANOMALY_05000281
-       r0.l = lo(CONFIG_BOOT_LOAD);
-       r0.h = hi(CONFIG_BOOT_LOAD);
+       r0.l = _safe_speculative_execution;
+       r0.h = _safe_speculative_execution;
        reti = r0;
 #endif
        r0 = 0x401f;