0001
0002
0003
0004
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)