arc: memcmp - fix zero-delay loop utilization
authorIgor Guryanov <guryanov@synopsys.com>
Tue, 3 Feb 2015 10:58:09 +0000 (13:58 +0300)
committerAlexey Brodkin <abrodkin@synopsys.com>
Mon, 9 Feb 2015 13:41:20 +0000 (16:41 +0300)
It's prohibited to put branch instruction in the very end of zero-delay
loop. On execution this causes "Illegal instruction" exception.

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Signed-off-by: Igor Guryanov <guryanov@synopsys.com>
arch/arc/lib/memcmp.S

index fa5aac5..87bccab 100644 (file)
@@ -29,6 +29,7 @@ memcmp:
        ld.a    %r4, [%r0, 8]
        ld.a    %r5, [%r1, 8]
        brne    WORD2, %r12, .Lodd
+       nop
 .Loop_end:
        asl_s   SHIFT, SHIFT, 3
        bhs_s   .Last_cmp
@@ -105,6 +106,7 @@ memcmp:
        ldb.a   %r4, [%r0, 2]
        ldb.a   %r5, [%r1, 2]
        brne    %r3, %r12, .Lbyte_odd
+       nop
 .Lbyte_end:
        bcc     .Lbyte_even
        brne    %r4, %r5, .Lbyte_even