Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc
0004  *            generic strncmp routine.
0005  */
0006 
0007 #include <linux/linkage.h>
0008 #include <asm/export.h>
0009 
0010     .text
0011 ENTRY(strncmp)
0012     mov %o0, %g3
0013     mov 0, %o3
0014 
0015     cmp %o2, 3
0016     ble 7f
0017      mov    0, %g2
0018 
0019     sra %o2, 2, %o4
0020     ldub    [%g3], %o3
0021 
0022 0:
0023     ldub    [%o1], %g2
0024     add %g3, 1, %g3
0025     and %o3, 0xff, %o0
0026 
0027     cmp %o0, 0
0028     be  8f
0029      add    %o1, 1, %o1
0030 
0031     cmp %o0, %g2
0032     be,a    1f
0033      ldub   [%g3], %o3
0034 
0035     retl
0036      sub    %o0, %g2, %o0
0037 
0038 1:
0039     ldub    [%o1], %g2
0040     add %g3,1, %g3
0041     and %o3, 0xff, %o0
0042 
0043     cmp %o0, 0
0044     be  8f
0045      add    %o1, 1, %o1
0046 
0047     cmp %o0, %g2
0048     be,a    1f
0049      ldub   [%g3], %o3
0050 
0051     retl
0052      sub    %o0, %g2, %o0
0053 
0054 1:
0055     ldub    [%o1], %g2
0056     add %g3, 1, %g3
0057     and %o3, 0xff, %o0
0058 
0059     cmp %o0, 0
0060     be  8f
0061      add    %o1, 1, %o1
0062 
0063     cmp %o0, %g2
0064     be,a    1f
0065      ldub   [%g3], %o3
0066 
0067     retl
0068      sub    %o0, %g2, %o0
0069 
0070 1:
0071     ldub    [%o1], %g2
0072     add %g3, 1, %g3
0073     and %o3, 0xff, %o0
0074 
0075     cmp %o0, 0
0076     be  8f
0077      add    %o1, 1, %o1
0078 
0079     cmp %o0, %g2
0080     be  1f
0081      add    %o4, -1, %o4
0082 
0083     retl
0084      sub    %o0, %g2, %o0
0085 
0086 1:
0087 
0088     cmp %o4, 0
0089     bg,a    0b
0090      ldub   [%g3], %o3
0091 
0092     b   7f
0093      and    %o2, 3, %o2
0094 
0095 9:
0096     ldub    [%o1], %g2
0097     add %g3, 1, %g3
0098     and %o3, 0xff, %o0
0099 
0100     cmp %o0, 0
0101     be  8f
0102      add    %o1, 1, %o1
0103 
0104     cmp %o0, %g2
0105     be  7f
0106      add    %o2, -1, %o2
0107 
0108 8:
0109     retl
0110      sub    %o0, %g2, %o0
0111 
0112 7:
0113     cmp %o2, 0
0114     bg,a    9b
0115      ldub   [%g3], %o3
0116 
0117     and %g2, 0xff, %o0
0118     retl
0119      sub    %o3, %o0, %o0
0120 ENDPROC(strncmp)
0121 EXPORT_SYMBOL(strncmp)