1/* 2 * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc 3 * generic strncmp routine. 4 */ 5 6#include <linux/linkage.h> 7 8 .text 9ENTRY(strncmp) 10 mov %o0, %g3 11 mov 0, %o3 12 13 cmp %o2, 3 14 ble 7f 15 mov 0, %g2 16 17 sra %o2, 2, %o4 18 ldub [%g3], %o3 19 200: 21 ldub [%o1], %g2 22 add %g3, 1, %g3 23 and %o3, 0xff, %o0 24 25 cmp %o0, 0 26 be 8f 27 add %o1, 1, %o1 28 29 cmp %o0, %g2 30 be,a 1f 31 ldub [%g3], %o3 32 33 retl 34 sub %o0, %g2, %o0 35 361: 37 ldub [%o1], %g2 38 add %g3,1, %g3 39 and %o3, 0xff, %o0 40 41 cmp %o0, 0 42 be 8f 43 add %o1, 1, %o1 44 45 cmp %o0, %g2 46 be,a 1f 47 ldub [%g3], %o3 48 49 retl 50 sub %o0, %g2, %o0 51 521: 53 ldub [%o1], %g2 54 add %g3, 1, %g3 55 and %o3, 0xff, %o0 56 57 cmp %o0, 0 58 be 8f 59 add %o1, 1, %o1 60 61 cmp %o0, %g2 62 be,a 1f 63 ldub [%g3], %o3 64 65 retl 66 sub %o0, %g2, %o0 67 681: 69 ldub [%o1], %g2 70 add %g3, 1, %g3 71 and %o3, 0xff, %o0 72 73 cmp %o0, 0 74 be 8f 75 add %o1, 1, %o1 76 77 cmp %o0, %g2 78 be 1f 79 add %o4, -1, %o4 80 81 retl 82 sub %o0, %g2, %o0 83 841: 85 86 cmp %o4, 0 87 bg,a 0b 88 ldub [%g3], %o3 89 90 b 7f 91 and %o2, 3, %o2 92 939: 94 ldub [%o1], %g2 95 add %g3, 1, %g3 96 and %o3, 0xff, %o0 97 98 cmp %o0, 0 99 be 8f 100 add %o1, 1, %o1 101 102 cmp %o0, %g2 103 be 7f 104 add %o2, -1, %o2 105 1068: 107 retl 108 sub %o0, %g2, %o0 109 1107: 111 cmp %o2, 0 112 bg,a 9b 113 ldub [%g3], %o3 114 115 and %g2, 0xff, %o0 116 retl 117 sub %o3, %o0, %o0 118ENDPROC(strncmp) 119