xref: /OK3568_Linux_fs/kernel/arch/sparc/lib/strncmp_64.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Sparc64 optimized strncmp code.
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
6*4882a593Smuzhiyun */
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun#include <linux/linkage.h>
9*4882a593Smuzhiyun#include <asm/asi.h>
10*4882a593Smuzhiyun#include <asm/export.h>
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun	.text
13*4882a593SmuzhiyunENTRY(strncmp)
14*4882a593Smuzhiyun	brlez,pn %o2, 3f
15*4882a593Smuzhiyun	 lduba	[%o0] (ASI_PNF), %o3
16*4882a593Smuzhiyun1:
17*4882a593Smuzhiyun	add	%o0, 1, %o0
18*4882a593Smuzhiyun	ldub	[%o1], %o4
19*4882a593Smuzhiyun	brz,pn	%o3, 2f
20*4882a593Smuzhiyun	 add	%o1, 1, %o1
21*4882a593Smuzhiyun	cmp	%o3, %o4
22*4882a593Smuzhiyun	bne,pn	%icc, 2f
23*4882a593Smuzhiyun	 subcc	%o2, 1, %o2
24*4882a593Smuzhiyun	bne,a,pt %xcc, 1b
25*4882a593Smuzhiyun	 ldub	[%o0], %o3
26*4882a593Smuzhiyun2:
27*4882a593Smuzhiyun	retl
28*4882a593Smuzhiyun	 sub	%o3, %o4, %o0
29*4882a593Smuzhiyun3:
30*4882a593Smuzhiyun	retl
31*4882a593Smuzhiyun	 clr	%o0
32*4882a593SmuzhiyunENDPROC(strncmp)
33*4882a593SmuzhiyunEXPORT_SYMBOL(strncmp)
34