diff options
Diffstat (limited to 'arch/blackfin/lib')
-rw-r--r-- | arch/blackfin/lib/divsi3.S | 3 | ||||
-rw-r--r-- | arch/blackfin/lib/ins.S | 4 | ||||
-rw-r--r-- | arch/blackfin/lib/memchr.S | 2 | ||||
-rw-r--r-- | arch/blackfin/lib/memcmp.S | 7 | ||||
-rw-r--r-- | arch/blackfin/lib/memcpy.S | 15 | ||||
-rw-r--r-- | arch/blackfin/lib/memmove.S | 19 | ||||
-rw-r--r-- | arch/blackfin/lib/memset.S | 2 | ||||
-rw-r--r-- | arch/blackfin/lib/modsi3.S | 2 | ||||
-rw-r--r-- | arch/blackfin/lib/outs.S | 3 | ||||
-rw-r--r-- | arch/blackfin/lib/smulsi3_highpart.S | 2 | ||||
-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 | ||||
-rw-r--r-- | arch/blackfin/lib/udivsi3.S | 2 | ||||
-rw-r--r-- | arch/blackfin/lib/umodsi3.S | 4 | ||||
-rw-r--r-- | arch/blackfin/lib/umulsi3_highpart.S | 2 |
17 files changed, 61 insertions, 18 deletions
diff --git a/arch/blackfin/lib/divsi3.S b/arch/blackfin/lib/divsi3.S index 3e29861852b2..2ac59c70dd94 100644 --- a/arch/blackfin/lib/divsi3.S +++ b/arch/blackfin/lib/divsi3.S @@ -44,6 +44,7 @@ */ .global ___divsi3; +.type ___divsi3, STT_FUNC; #ifdef CONFIG_ARITHMETIC_OPS_L1 .section .l1.text @@ -214,3 +215,5 @@ ___divsi3 : .Lret_zero: R0 = 0; RTS; + +.size ___divsi3, .-___divsi3 diff --git a/arch/blackfin/lib/ins.S b/arch/blackfin/lib/ins.S index 7d5e9846311d..a17cc77ac36f 100644 --- a/arch/blackfin/lib/ins.S +++ b/arch/blackfin/lib/ins.S @@ -46,7 +46,7 @@ ENTRY(_insl) .Llong_loop_e: NOP; sti R3; RTS; - +ENDPROC(_insl) ENTRY(_insw) P0 = R0; /* P0 = port */ @@ -61,6 +61,7 @@ ENTRY(_insw) .Lword_loop_e: NOP; sti R3; RTS; +ENDPROC(_insw) ENTRY(_insb) P0 = R0; /* P0 = port */ @@ -75,3 +76,4 @@ ENTRY(_insb) .Lbyte_loop_e: NOP; sti R3; RTS; +ENDPROC(_insb) diff --git a/arch/blackfin/lib/memchr.S b/arch/blackfin/lib/memchr.S index 498122250d07..5da428134d32 100644 --- a/arch/blackfin/lib/memchr.S +++ b/arch/blackfin/lib/memchr.S @@ -67,4 +67,4 @@ ENTRY(_memchr) R0 += -1; RTS; -.size _memchr,.-_memchr +ENDPROC(_memchr) diff --git a/arch/blackfin/lib/memcmp.S b/arch/blackfin/lib/memcmp.S index 5b9502368fc6..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: @@ -107,4 +112,4 @@ ENTRY(_memcmp) P3 = I1; RTS; -.size _memcmp,.-_memcmp +ENDPROC(_memcmp) diff --git a/arch/blackfin/lib/memcpy.S b/arch/blackfin/lib/memcpy.S index c1e00eff541c..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; @@ -140,3 +147,5 @@ ENTRY(_memcpy) B[P0--] = R1; RTS; + +ENDPROC(_memcpy) diff --git a/arch/blackfin/lib/memmove.S b/arch/blackfin/lib/memmove.S index 2e5fb7f8df13..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); @@ -100,4 +113,4 @@ ENTRY(_memmove) P3 = I1; RTS; -.size _memmove,.-_memmove +ENDPROC(_memmove) diff --git a/arch/blackfin/lib/memset.S b/arch/blackfin/lib/memset.S index ba6d047568dd..8159136a29ea 100644 --- a/arch/blackfin/lib/memset.S +++ b/arch/blackfin/lib/memset.S @@ -106,4 +106,4 @@ ENTRY(_memset) B[P0++] = R1; JUMP .Laligned; -.size _memset,.-_memset +ENDPROC(_memset) diff --git a/arch/blackfin/lib/modsi3.S b/arch/blackfin/lib/modsi3.S index 528b8b1ccb34..ca1dd3973b39 100644 --- a/arch/blackfin/lib/modsi3.S +++ b/arch/blackfin/lib/modsi3.S @@ -77,3 +77,5 @@ ___modsi3: R0 = 0; .LRETURN_R0: RTS; + +.size ___modsi3, .-___modsi3 diff --git a/arch/blackfin/lib/outs.S b/arch/blackfin/lib/outs.S index f8c876fe8930..4c3da8ae094e 100644 --- a/arch/blackfin/lib/outs.S +++ b/arch/blackfin/lib/outs.S @@ -40,6 +40,7 @@ ENTRY(_outsl) .Llong_loop_s: R0 = [P1++]; .Llong_loop_e: [P0] = R0; RTS; +ENDPROC(_outsl) ENTRY(_outsw) P0 = R0; /* P0 = port */ @@ -50,6 +51,7 @@ ENTRY(_outsw) .Lword_loop_s: R0 = W[P1++]; .Lword_loop_e: W[P0] = R0; RTS; +ENDPROC(_outsw) ENTRY(_outsb) P0 = R0; /* P0 = port */ @@ -60,3 +62,4 @@ ENTRY(_outsb) .Lbyte_loop_s: R0 = B[P1++]; .Lbyte_loop_e: B[P0] = R0; RTS; +ENDPROC(_outsb) diff --git a/arch/blackfin/lib/smulsi3_highpart.S b/arch/blackfin/lib/smulsi3_highpart.S index 10b8f8da576f..e383cd3eca5d 100644 --- a/arch/blackfin/lib/smulsi3_highpart.S +++ b/arch/blackfin/lib/smulsi3_highpart.S @@ -28,3 +28,5 @@ ___smulsi3_highpart: R0 = R0 + R1; RTS; + +.size ___smulsi3_highpart, .-___smulsi3_highpart 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); } - diff --git a/arch/blackfin/lib/udivsi3.S b/arch/blackfin/lib/udivsi3.S index d39a12916259..58fd96d74766 100644 --- a/arch/blackfin/lib/udivsi3.S +++ b/arch/blackfin/lib/udivsi3.S @@ -296,3 +296,5 @@ ENTRY(___udivsi3) R1 = R0 - R3; IF CC R0 = R1; RTS; + +ENDPROC(___udivsi3) diff --git a/arch/blackfin/lib/umodsi3.S b/arch/blackfin/lib/umodsi3.S index b55ce96ab89f..4f2b76ee7626 100644 --- a/arch/blackfin/lib/umodsi3.S +++ b/arch/blackfin/lib/umodsi3.S @@ -34,7 +34,9 @@ #endif .extern ___udivsi3; +.type ___udivsi3, STT_FUNC; .globl ___umodsi3 +.type ___umodsi3, STT_FUNC; ___umodsi3: CC=R0==0; @@ -64,3 +66,5 @@ ___umodsi3: R0 = 0; .LRETURN_R0: RTS; + +.size ___umodsi3, .-___umodsi3 diff --git a/arch/blackfin/lib/umulsi3_highpart.S b/arch/blackfin/lib/umulsi3_highpart.S index aac8218fb258..67b799351e3e 100644 --- a/arch/blackfin/lib/umulsi3_highpart.S +++ b/arch/blackfin/lib/umulsi3_highpart.S @@ -21,3 +21,5 @@ ___umulsi3_highpart: R1 = PACK(R1.l,R0.h); R0 = R1 + R2; RTS; + +.size ___umulsi3_highpart, .-___umulsi3_highpart |