cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

strncmp_32.S (1351B)


      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)