diff options
author | Robin Getz <robin.getz@analog.com> | 2007-10-10 05:28:27 -0400 |
---|---|---|
committer | Bryan Wu <bryan.wu@analog.com> | 2007-10-10 05:28:27 -0400 |
commit | b3f8b9276314f4942ef9033aa5f4dc184901d640 (patch) | |
tree | 98c6848363f8a480759116f9cb50f2060d1e6601 /arch/blackfin | |
parent | b76f98761acc909c20c1e65c8af11dc1decae935 (diff) |
Blackfin arch: the load address is not safe to point to as a workaround for ANOMALY 05000281
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>
Diffstat (limited to 'arch/blackfin')
-rw-r--r-- | arch/blackfin/mach-common/entry.S | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S index a56b231d94ce..e3ad5802868a 100644 --- a/arch/blackfin/mach-common/entry.S +++ b/arch/blackfin/mach-common/entry.S | |||
@@ -52,6 +52,15 @@ | |||
52 | # define EX_SCRATCH_REG CYCLES | 52 | # define EX_SCRATCH_REG CYCLES |
53 | #endif | 53 | #endif |
54 | 54 | ||
55 | #if ANOMALY_05000281 | ||
56 | ENTRY(_safe_speculative_execution) | ||
57 | NOP; | ||
58 | NOP; | ||
59 | NOP; | ||
60 | jump _safe_speculative_execution; | ||
61 | ENDPROC(_safe_speculative_execution) | ||
62 | #endif | ||
63 | |||
55 | #ifdef CONFIG_EXCPT_IRQ_SYSC_L1 | 64 | #ifdef CONFIG_EXCPT_IRQ_SYSC_L1 |
56 | .section .l1.text | 65 | .section .l1.text |
57 | #else | 66 | #else |
@@ -685,8 +694,8 @@ ENTRY(_return_from_int) | |||
685 | [p0] = p1; | 694 | [p0] = p1; |
686 | csync; | 695 | csync; |
687 | #if ANOMALY_05000281 | 696 | #if ANOMALY_05000281 |
688 | r0.l = lo(CONFIG_BOOT_LOAD); | 697 | r0.l = _safe_speculative_execution; |
689 | r0.h = hi(CONFIG_BOOT_LOAD); | 698 | r0.h = _safe_speculative_execution; |
690 | reti = r0; | 699 | reti = r0; |
691 | #endif | 700 | #endif |
692 | r0 = 0x801f (z); | 701 | r0 = 0x801f (z); |
@@ -699,8 +708,8 @@ ENDPROC(_return_from_int) | |||
699 | 708 | ||
700 | ENTRY(_lower_to_irq14) | 709 | ENTRY(_lower_to_irq14) |
701 | #if ANOMALY_05000281 | 710 | #if ANOMALY_05000281 |
702 | r0.l = lo(CONFIG_BOOT_LOAD); | 711 | r0.l = _safe_speculative_execution; |
703 | r0.h = hi(CONFIG_BOOT_LOAD); | 712 | r0.h = _safe_speculative_execution; |
704 | reti = r0; | 713 | reti = r0; |
705 | #endif | 714 | #endif |
706 | r0 = 0x401f; | 715 | r0 = 0x401f; |