root/arch/sparc/lib/strncmp_32.S

/* [<][>][^][v][top][bottom][index][help] */
   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
  11 ENTRY(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 
  22 0:
  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 
  38 1:
  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 
  54 1:
  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 
  70 1:
  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 
  86 1:
  87 
  88         cmp     %o4, 0
  89         bg,a    0b
  90          ldub   [%g3], %o3
  91 
  92         b       7f
  93          and    %o2, 3, %o2
  94 
  95 9:
  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 
 108 8:
 109         retl
 110          sub    %o0, %g2, %o0
 111 
 112 7:
 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
 120 ENDPROC(strncmp)
 121 EXPORT_SYMBOL(strncmp)

/* [<][>][^][v][top][bottom][index][help] */