1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc 4 * generic strncmp routine. 5 */ 6 7#include <linux/linkage.h> 8#include <asm/export.h> 9 10 .text 11ENTRY(strncmp) 12 mov %o0, %g3 13 mov 0, %o3 14 15 cmp %o2, 3 16 ble 7f 17 mov 0, %g2 18 19 sra %o2, 2, %o4 20 ldub [%g3], %o3 21 220: 23 ldub [%o1], %g2 24 add %g3, 1, %g3 25 and %o3, 0xff, %o0 26 27 cmp %o0, 0 28 be 8f 29 add %o1, 1, %o1 30 31 cmp %o0, %g2 32 be,a 1f 33 ldub [%g3], %o3 34 35 retl 36 sub %o0, %g2, %o0 37 381: 39 ldub [%o1], %g2 40 add %g3,1, %g3 41 and %o3, 0xff, %o0 42 43 cmp %o0, 0 44 be 8f 45 add %o1, 1, %o1 46 47 cmp %o0, %g2 48 be,a 1f 49 ldub [%g3], %o3 50 51 retl 52 sub %o0, %g2, %o0 53 541: 55 ldub [%o1], %g2 56 add %g3, 1, %g3 57 and %o3, 0xff, %o0 58 59 cmp %o0, 0 60 be 8f 61 add %o1, 1, %o1 62 63 cmp %o0, %g2 64 be,a 1f 65 ldub [%g3], %o3 66 67 retl 68 sub %o0, %g2, %o0 69 701: 71 ldub [%o1], %g2 72 add %g3, 1, %g3 73 and %o3, 0xff, %o0 74 75 cmp %o0, 0 76 be 8f 77 add %o1, 1, %o1 78 79 cmp %o0, %g2 80 be 1f 81 add %o4, -1, %o4 82 83 retl 84 sub %o0, %g2, %o0 85 861: 87 88 cmp %o4, 0 89 bg,a 0b 90 ldub [%g3], %o3 91 92 b 7f 93 and %o2, 3, %o2 94 959: 96 ldub [%o1], %g2 97 add %g3, 1, %g3 98 and %o3, 0xff, %o0 99 100 cmp %o0, 0 101 be 8f 102 add %o1, 1, %o1 103 104 cmp %o0, %g2 105 be 7f 106 add %o2, -1, %o2 107 1088: 109 retl 110 sub %o0, %g2, %o0 111 1127: 113 cmp %o2, 0 114 bg,a 9b 115 ldub [%g3], %o3 116 117 and %g2, 0xff, %o0 118 retl 119 sub %o3, %o0, %o0 120ENDPROC(strncmp) 121EXPORT_SYMBOL(strncmp) 122