diff options
Diffstat (limited to 'arch/blackfin/lib')
-rw-r--r-- | arch/blackfin/lib/memcmp.S | 5 | ||||
-rw-r--r-- | arch/blackfin/lib/memcpy.S | 13 | ||||
-rw-r--r-- | arch/blackfin/lib/memmove.S | 17 | ||||
-rw-r--r-- | arch/blackfin/lib/strcmp.c | 3 | ||||
-rw-r--r-- | arch/blackfin/lib/strcpy.c | 3 | ||||
-rw-r--r-- | arch/blackfin/lib/strncmp.c | 3 | ||||
-rw-r--r-- | arch/blackfin/lib/strncpy.c | 3 |
7 files changed, 34 insertions, 13 deletions
diff --git a/arch/blackfin/lib/memcmp.S b/arch/blackfin/lib/memcmp.S index a6b8ee6a6bf2..b88c5d2d1ebe 100644 --- a/arch/blackfin/lib/memcmp.S +++ b/arch/blackfin/lib/memcmp.S @@ -61,7 +61,12 @@ ENTRY(_memcmp) LSETUP (.Lquad_loop_s, .Lquad_loop_e) LC0=P1; .Lquad_loop_s: +#ifdef ANOMALY_05000202 + R0 = [P0++]; + R1 = [I0++]; +#else MNOP || R0 = [P0++] || R1 = [I0++]; +#endif CC = R0 == R1; IF !CC JUMP .Lquad_different; .Lquad_loop_e: 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) .Lmore_than_seven: /* There's at least eight bytes to copy. */ P2 += -1; /* because we unroll one iteration */ - LSETUP(.Lword_loop, .Lword_loop) LC0=P2; + LSETUP(.Lword_loops, .Lword_loope) LC0=P2; R0 = R1; I1 = P1; R3 = [I1++]; -.Lword_loop: +#ifdef ANOMALY_05000202 +.Lword_loops: + [P0++] = R3; +.Lword_loope: + R3 = [I1++]; +#else +.Lword_loops: +.Lword_loope: MNOP || [P0++] = R3 || R3 = [I1++]; - +#endif [P0++] = R3; /* Any remaining bytes to copy? */ R3 = 0x3; 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) P2 = R2; /* set remainder */ R1 = [I0++]; - LSETUP (.Lquad_loop, .Lquad_loop) LC0=P1; -.Lquad_loop: MNOP || [P0++] = R1 || R1 = [I0++]; + LSETUP (.Lquad_loops, .Lquad_loope) LC0=P1; +#ifdef ANOMALY_05000202 +.Lquad_loops: + [P0++] = R1; +.Lquad_loope: + R1 = [I0++]; +#else +.Lquad_loops: +.Lquad_loope: + MNOP || [P0++] = R1 || R1 = [I0++]; +#endif [P0++] = R1; CC = P2 == 0; /* any remaining bytes? */ @@ -93,6 +102,10 @@ ENTRY(_memmove) R1 = B[P3--] (Z); CC = P2 == 0; IF CC JUMP .Lno_loop; +#ifdef ANOMALY_05000245 + NOP; + NOP; +#endif LSETUP (.Lol_s, .Lol_e) LC0 = P2; .Lol_s: B[P0--] = R1; .Lol_e: R1 = B[P3--] (Z); diff --git a/arch/blackfin/lib/strcmp.c b/arch/blackfin/lib/strcmp.c index 2ad47c4254ba..4eeefd86907f 100644 --- a/arch/blackfin/lib/strcmp.c +++ b/arch/blackfin/lib/strcmp.c @@ -6,6 +6,5 @@ int strcmp(const char *dest, const char *src) { - return __inline_strcmp(dest, src); + return __inline_strcmp(dest, src); } - diff --git a/arch/blackfin/lib/strcpy.c b/arch/blackfin/lib/strcpy.c index 4dc835a8a19b..534589db7256 100644 --- a/arch/blackfin/lib/strcpy.c +++ b/arch/blackfin/lib/strcpy.c @@ -6,6 +6,5 @@ char *strcpy(char *dest, const char *src) { - return __inline_strcpy(dest, src); + return __inline_strcpy(dest, src); } - diff --git a/arch/blackfin/lib/strncmp.c b/arch/blackfin/lib/strncmp.c index 947bcfe3f3bb..d791f120bff7 100644 --- a/arch/blackfin/lib/strncmp.c +++ b/arch/blackfin/lib/strncmp.c @@ -6,6 +6,5 @@ int strncmp(const char *cs, const char *ct, size_t count) { - return __inline_strncmp(cs, ct, count); + return __inline_strncmp(cs, ct, count); } - diff --git a/arch/blackfin/lib/strncpy.c b/arch/blackfin/lib/strncpy.c index 77a9b2e95097..1fecb5c71ffb 100644 --- a/arch/blackfin/lib/strncpy.c +++ b/arch/blackfin/lib/strncpy.c @@ -6,6 +6,5 @@ char *strncpy(char *dest, const char *src, size_t n) { - return __inline_strncpy(dest, src, n); + return __inline_strncpy(dest, src, n); } - |