aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/lib/memcpy.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/memcpy.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/memcpy.S')
-rw-r--r--arch/blackfin/lib/memcpy.S13
1 files changed, 10 insertions, 3 deletions
diff --git a/arch/blackfin/lib/memcpy.S b/arch/blackfin/lib/memcpy.S
index 34b5a91c215c..14a5585bbd02 100644
--- a/arch/blackfin/lib/memcpy.S
+++ b/arch/blackfin/lib/memcpy.S
@@ -94,13 +94,20 @@ ENTRY(_memcpy)
94.Lmore_than_seven: 94.Lmore_than_seven:
95 /* There's at least eight bytes to copy. */ 95 /* There's at least eight bytes to copy. */
96 P2 += -1; /* because we unroll one iteration */ 96 P2 += -1; /* because we unroll one iteration */
97 LSETUP(.Lword_loop, .Lword_loop) LC0=P2; 97 LSETUP(.Lword_loops, .Lword_loope) LC0=P2;
98 R0 = R1; 98 R0 = R1;
99 I1 = P1; 99 I1 = P1;
100 R3 = [I1++]; 100 R3 = [I1++];
101.Lword_loop: 101#ifdef ANOMALY_05000202
102.Lword_loops:
103 [P0++] = R3;
104.Lword_loope:
105 R3 = [I1++];
106#else
107.Lword_loops:
108.Lword_loope:
102 MNOP || [P0++] = R3 || R3 = [I1++]; 109 MNOP || [P0++] = R3 || R3 = [I1++];
103 110#endif
104 [P0++] = R3; 111 [P0++] = R3;
105 /* Any remaining bytes to copy? */ 112 /* Any remaining bytes to copy? */
106 R3 = 0x3; 113 R3 = 0x3;