aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/lib/memmove.S
diff options
context:
space:
mode:
authorRobin Getz <robin.getz@analog.com>2007-06-20 23:34:16 -0400
committerBryan Wu <bryan.wu@analog.com>2007-06-20 23:34:16 -0400
commit4bf3f3cbb6add01d3e6a18c73f594b73113b14f2 (patch)
treea80839f98a64052f4d004a5207da2731fe556908 /arch/blackfin/lib/memmove.S
parent0864a4e201b1ea442f4c8b887418a29f67e24d30 (diff)
Blackfin arch: update ANOMALY handling
update lists for 533, 537, and add SSYNC workaround into assembly files. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Diffstat (limited to 'arch/blackfin/lib/memmove.S')
-rw-r--r--arch/blackfin/lib/memmove.S17
1 files changed, 15 insertions, 2 deletions
diff --git a/arch/blackfin/lib/memmove.S b/arch/blackfin/lib/memmove.S
index c371585e9dbd..6ee6e206e77c 100644
--- a/arch/blackfin/lib/memmove.S
+++ b/arch/blackfin/lib/memmove.S
@@ -69,8 +69,17 @@ ENTRY(_memmove)
69 P2 = R2; /* set remainder */ 69 P2 = R2; /* set remainder */
70 R1 = [I0++]; 70 R1 = [I0++];
71 71
72 LSETUP (.Lquad_loop, .Lquad_loop) LC0=P1; 72 LSETUP (.Lquad_loops, .Lquad_loope) LC0=P1;
73.Lquad_loop: MNOP || [P0++] = R1 || R1 = [I0++]; 73#ifdef ANOMALY_05000202
74.Lquad_loops:
75 [P0++] = R1;
76.Lquad_loope:
77 R1 = [I0++];
78#else
79.Lquad_loops:
80.Lquad_loope:
81 MNOP || [P0++] = R1 || R1 = [I0++];
82#endif
74 [P0++] = R1; 83 [P0++] = R1;
75 84
76 CC = P2 == 0; /* any remaining bytes? */ 85 CC = P2 == 0; /* any remaining bytes? */
@@ -93,6 +102,10 @@ ENTRY(_memmove)
93 R1 = B[P3--] (Z); 102 R1 = B[P3--] (Z);
94 CC = P2 == 0; 103 CC = P2 == 0;
95 IF CC JUMP .Lno_loop; 104 IF CC JUMP .Lno_loop;
105#ifdef ANOMALY_05000245
106 NOP;
107 NOP;
108#endif
96 LSETUP (.Lol_s, .Lol_e) LC0 = P2; 109 LSETUP (.Lol_s, .Lol_e) LC0 = P2;
97.Lol_s: B[P0--] = R1; 110.Lol_s: B[P0--] = R1;
98.Lol_e: R1 = B[P3--] (Z); 111.Lol_e: R1 = B[P3--] (Z);